Index: /mods/mod_rechnungen/eInvoice.php
===================================================================
--- /mods/mod_rechnungen/eInvoice.php	(revision 8503)
+++ /mods/mod_rechnungen/eInvoice.php	(revision 8504)
@@ -41,5 +41,6 @@
 			
 			if ($profil_id >= 0) {
-			
+
+				/** @var \wpsg_order $oOrder */
 				$oOrder = wpsg_order::getInstance($order_id);
 				
@@ -50,22 +51,73 @@
 				
 				$arCalculation = wpsg_calculation::getOrderCalculation($order_id)->getCalculationArray();
-				
+
+				$buyer_reference = trim($oOrder->getLeitwegId());
+				if ($buyer_reference === '') $buyer_reference = $oOrder->getCustomer()->getNr();
+
+				// https://www.e-rechnung-bund.de/wp-content/uploads/2023/04/Uebersichtslisten-Eingabefelder-OZG-RE.pdf
+				// https://easyfirma.net/e-rechnung/zugferd/bt-felder
+				// https://www.xoev.de/sixcms/media.php/13/201-xrechnung-2020-12-16.pdf
+				// https://erechnungsvalidator.service-bw.de/
+
+				$bt_9 = null;
+
+				$bt_20 = "Bitte Zahlungsanweisung auf PDF beachten.";
+
+				// Zuschlagbetrag (ohne Umsatzsteuer), der zum Gesamtrechnungsbetrag hinzugefÃŒgt wird.
+				$bt_99 = 0;
+
+				// BT-106 / Hier finden Sie die Summe aller Nettopositionen ohne Umsatzsteuer, NachlÃ€sse und ZuschlÃ€ge.
+				$bt_106 = $oInvoice->getSumNetto();
+
+				// BT-107 / Hier finden Sie die Summe aller NachlÃ€sse auf Ebene der Rechnung (ohne NachlÃ€sse auf Positionsebene).
+				$bt_107 = 0;
+
+				// BT-108 / Hier finden Sie die Summe aller ZuschlÃ€ge auf Dokumentenebene (ohne ZuschlÃ€ge auf Positionsebene).
+				$bt_108 = 0;
+
+				// BT-109 / Hier finden Sie den Gesamtbetrag der Rechnung ohne Umsatzsteuer.
+				$bt_109 = $oInvoice->getSumNetto();
+
+				// BT-110 / Hier finden Sie den Gesamtbetrag der Umsatzsteuer der Rechnung.
+				$bt_110 = $oInvoice->getTaxSum();
+
+				// BT-112 / Gesamtbetrag der Rechnungsumsatzsteuer
+				$bt_112 = $oInvoice->getSumBrutto();
+
+				// BT-113 / Vorauszahlungsbetrag
+				$bt_113 = 0;
+
+				// BT-114 / Rundungsbetrag
+				$bt_114 = 0;
+
+				// BT-115 / Hier finden Sie den ausstehenden Betrag. Er ergibt sich aus dem Rechnungsbetrag (brutto) abzÃŒglich des gezahlten Betrags.
+				$bt_115 = round($oInvoice->getSumBrutto(), 2);
+
+				// BT-131 / Gesamtpreis ohne Umsatzsteuer, einschlieÃlich aller NachlÃ€sse, ZuschlÃ€ge und weiterer anfallender Steuern.
+				$bt_131 = round($oInvoice->getSumNetto(), 2);
+
+				$buyer_email = trim($oOrder->getCustomer()->getEMailEInvoice()??'');
+				if ($buyer_email === '') $buyer_email = $oOrder->getCustomer()->getEMail();
+
+				$buyer_email = trim($oOrder->getCustomer()->getEMailEInvoice()??'');
+				if ($buyer_email === '') $buyer_email = $oOrder->getCustomer()->getEMail();
+
 				$document
+					 //->addDocumentAllowanceCharge($bt_99, true, 'S', 'VAT', 0)
+					->setDocumentSellerLegalOrganisation(null, null, $shop->get_option('wpsg_shopdata_owner', default: ''))
 					->setDocumentInformation($oInvoice->getNr(), ZugferdInvoiceType::INVOICE, \DateTime::createFromFormat("Ymd", $oInvoice->getDate('Ymd')), "EUR")
 					->addDocumentNote(wpsg_translate(__('Rechnung #1# zu Bestellung #2#', 'wpsg'), $oInvoice->getNr(), $oOrder->getNr()))
 					// ->setDocumentSupplyChainEvent(\DateTime::createFromFormat('Ymd', '20180305')) Lieferinformation
 					->setDocumentSeller($shop->get_option('wpsg_shopdata_name', default: ''))
-					->addDocumentSellerContact(
-						$shop->get_option('wpsg_shopdata_owner')?:null,
-						null,
-						null,
-						null,
-						$shop->get_option('wpsg_shopdata_email')?:null
-					)
+					->setDocumentSellerCommunication('EM', $shop->get_option('wpsg_shopdata_email', default: ''))
 
 //					->setDocumentBuyerReference("04011000-12345ABCXYZ-86")
-					->setDocumentBuyerReference(
-						$oOrder->getLeitwegId(),
-					)
+					->setDocumentBuyerReference($buyer_reference)
+
+					// https://service.unece.org/trade/untdid/d16b/tred/tred4461.htm
+					->addDocumentPaymentMean(match($oOrder->getPaymentID()) {
+						/** TODO: Zahlungsarten Codes */
+						default => 'ZZZ'
+					}, $oOrder->getPaymentLabel())
 
 					//->addDocumentSellerGlobalId("4000001123452", "0088")
@@ -80,4 +132,18 @@
 						\wpsg_country::getInstance(intval($shop->get_option('wpsg_shopdata_country')))->getShorttext()
 					)
+					->addDocumentSellerContact(
+						$shop->get_option('wpsg_shopdata_owner', default: ''),
+						__('Rechnungsabteilung', 'wpsg'),
+						$shop->get_option('wpsg_shopdata_eu_tel', default: ''),
+						$shop->get_option('wpsg_shopdata_eu_fax', default: ''),
+						$shop->get_option('wpsg_shopdata_email', default: '')
+					)
+					->setDocumentSellerContact(
+						$shop->get_option('wpsg_shopdata_owner', default: ''),
+						__('Rechnungsabteilung', 'wpsg'),
+						$shop->get_option('wpsg_shopdata_eu_tel', default: ''),
+						$shop->get_option('wpsg_shopdata_eu_fax', default: ''),
+						$shop->get_option('wpsg_shopdata_email', default: '')
+					)
 					->addDocumentBuyerTaxRegistration(
 						$oOrder->getInvoiceFax(),
@@ -97,6 +163,7 @@
 						$oOrder->getInvoicePhone(),
 						$oOrder->getInvoiceFax(),
-						""
-					);
+						$buyer_email
+					)
+					->setDocumentBuyerCommunication('EM', $buyer_email);
 				
 				// Lieferanschrift = Rechnungsanschfitt
@@ -108,8 +175,29 @@
 				$document->setDocumentSupplyChainEvent(\DateTime::createFromFormat("Ymd", $oInvoice->getDate('Ymd')));
 				
-				// Steuer Anteile
+				// Steueranteile
 				foreach ($oInvoice->getTaxInfo() as $tax_info) {
-				
-					$document->addDocumentTax('S', 'VAT', $tax_info['netto'], $tax_info['tax_value'], $tax_info['tax_rate']);
+
+					// BT-118 / VAT category code
+					$bt_118 = 'S';
+
+					// BT-118-1 ??
+					$bt_118_0 = 'VAT';
+
+					// BT-116 / Summe aller zu versteuernden BetrÃ€ge, fÃŒr die ein bestimmter Code der Umsatzsteuerkategorie und ein bestimmter Umsatzsteuersatz gelten (falls ein kategoriespezifischer Umsatzsteuersatz gilt).
+					$bt_116 = round($tax_info['netto'], 2);
+
+					// BT-117 / Der fÃŒr die betreffende Umsatzsteuerkategorie zu entrichtende Gesamtbetrag.
+					$bt_117 = $tax_info['tax_value'];
+
+					// BT-119 / Der Umsatzsteuersatz, angegeben als fÃŒr die betreffende Umsatzsteuerkategorie geltender Prozentsatz.
+					$bt_119 = $tax_info['tax_rate'];
+
+					$document->addDocumentTax(
+						$bt_118,
+						$bt_118_0,
+						$bt_116,
+						$bt_117,
+						$bt_119
+					);
 					
 				}
@@ -121,6 +209,19 @@
 
 				$document->setDocumentSummation(
-					$oInvoice->getSumBrutto(),
-					$arCalculation['sum']['topay_brutto'] /* - totalPrepaidAmount (BT-113) */,
+					$bt_112,
+					$bt_115,
+					$bt_106,
+					$bt_108,
+					$bt_107,
+					$bt_109,
+					$bt_110,
+					$bt_114,
+					$bt_113
+				);
+
+				/*
+				$document->setDocumentSummation(
+					$bt_112,
+					$bt_115,
 					$oInvoice->getSumNetto(),
 					$arCalculation['sum']['shipping_brutto_calculated'] + $PaymentNettoPos,
@@ -131,11 +232,14 @@
 					0.0
 				);
-
-//				 $document->addDocumentPaymentTerm("Zahlbar innerhalb 30 Tagen netto bis 04.04.2018, 3% Skonto innerhalb 10 Tagen bis 15.03.2018")
+				*/
+
+				$document->addDocumentPaymentTerm($bt_20, $bt_9);
 				
 				foreach ($oInvoice->getItems() as $oInvoiceItem) {
 				
 					$lineID = ($lineID??0) + 1;
-					
+
+					$bt_131 = $oInvoiceItem->getNettoSum();
+
 					$document->addNewPosition(strval($lineID));
 					$document->setDocumentPositionProductDetails(
@@ -147,12 +251,12 @@
 						$oInvoiceItem->getGTIN()
 					);
-					$document->setDocumentPositionGrossPrice($oInvoiceItem->getBrutto());
+					$document->setDocumentPositionGrossPrice($oInvoiceItem->getNetto());
 					$document->setDocumentPositionNetPrice($oInvoiceItem->getNetto());
 					$document->setDocumentPositionQuantity($oInvoiceItem->getAmount(), "H87");
 					$document->addDocumentPositionTax('S', 'VAT', $oInvoiceItem->getTaxRate());
-					$document->setDocumentPositionLineSummation($oInvoiceItem->getBruttoSum());
+					$document->setDocumentPositionLineSummation($bt_131);
 					
 				}
-				
+
 				$document->writeFile($pdf_path."/e".$oInvoice->getId()."_".$profil_id.".xml");
 				
Index: /mods/mod_rechnungen/lib/composer.lock
===================================================================
--- /mods/mod_rechnungen/lib/composer.lock	(revision 8503)
+++ /mods/mod_rechnungen/lib/composer.lock	(revision 8504)
@@ -325,14 +325,14 @@
         {
             "name": "horstoeko/zugferd",
-            "version": "v1.0.57",
+            "version": "v1.0.115",
             "source": {
                 "type": "git",
                 "url": "https://github.com/horstoeko/zugferd.git",
-                "reference": "272e9baf94156496e0d7119616a9449b71f329d6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/272e9baf94156496e0d7119616a9449b71f329d6",
-                "reference": "272e9baf94156496e0d7119616a9449b71f329d6",
+                "reference": "9bbf0c06942645001d10e88d6e26ff6d8983da2c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/9bbf0c06942645001d10e88d6e26ff6d8983da2c",
+                "reference": "9bbf0c06942645001d10e88d6e26ff6d8983da2c",
                 "shasum": ""
             },
@@ -343,8 +343,9 @@
                 "horstoeko/stringmanagement": "^1",
                 "jms/serializer": "^3",
-                "php": "^7.3|^7.4|^8",
+                "php": ">=7.3",
                 "setasign/fpdf": "^1",
                 "setasign/fpdi": "^2",
                 "smalot/pdfparser": "^0|^2",
+                "symfony/finder": "^5|^6|^7",
                 "symfony/process": "^5|^6|^7",
                 "symfony/validator": "^5|^6|^7",
@@ -355,8 +356,10 @@
                 "nette/php-generator": "*",
                 "pdepend/pdepend": "^2",
+                "phpdocumentor/reflection-docblock": "^5",
                 "phploc/phploc": "^7",
                 "phpmd/phpmd": "^2",
-                "phpstan/phpstan": "^1.8",
+                "phpstan/phpstan": "^1|^2",
                 "phpunit/phpunit": "^9",
+                "rector/rector": "*",
                 "sebastian/phpcpd": "^6",
                 "squizlabs/php_codesniffer": "^3"
@@ -365,9 +368,5 @@
             "autoload": {
                 "psr-4": {
-                    "horstoeko\\zugferd\\": "src",
-                    "horstoeko\\zugferd\\qdt\\": "src/entities/qdt",
-                    "horstoeko\\zugferd\\ram\\": "src/entities/ram",
-                    "horstoeko\\zugferd\\rsm\\": "src/entities/rsm",
-                    "horstoeko\\zugferd\\udt\\": "src/entities/udt"
+                    "horstoeko\\zugferd\\": "src"
                 }
             },
@@ -394,7 +393,7 @@
             "support": {
                 "issues": "https://github.com/horstoeko/zugferd/issues",
-                "source": "https://github.com/horstoeko/zugferd/tree/v1.0.57"
-            },
-            "time": "2024-07-10T03:39:20+00:00"
+                "source": "https://github.com/horstoeko/zugferd/tree/v1.0.115"
+            },
+            "time": "2025-06-06T08:14:02+00:00"
         },
         {
@@ -839,4 +838,72 @@
         },
         {
+            "name": "symfony/finder",
+            "version": "v7.3.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe",
+                "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.2"
+            },
+            "require-dev": {
+                "symfony/filesystem": "^6.4|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Finds files and directories via an intuitive fluent interface",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/finder/tree/v7.3.2"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/nicolas-grekas",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2025-07-15T13:41:35+00:00"
+        },
+        {
             "name": "symfony/polyfill-ctype",
             "version": "v1.30.0",
@@ -1385,9 +1452,9 @@
     "aliases": [],
     "minimum-stability": "stable",
-    "stability-flags": [],
+    "stability-flags": {},
     "prefer-stable": false,
     "prefer-lowest": false,
-    "platform": [],
-    "platform-dev": [],
-    "plugin-api-version": "2.2.0"
+    "platform": {},
+    "platform-dev": {},
+    "plugin-api-version": "2.6.0"
 }
Index: /mods/mod_rechnungen/lib/vendor/autoload.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/autoload.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/autoload.php	(revision 8504)
@@ -3,4 +3,19 @@
 // autoload.php @generated by Composer
 
+if (PHP_VERSION_ID < 50600) {
+    if (!headers_sent()) {
+        header('HTTP/1.1 500 Internal Server Error');
+    }
+    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+    if (!ini_get('display_errors')) {
+        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+            fwrite(STDERR, $err);
+        } elseif (!headers_sent()) {
+            echo $err;
+        }
+    }
+    throw new RuntimeException($err);
+}
+
 require_once __DIR__ . '/composer/autoload_real.php';
 
Index: /mods/mod_rechnungen/lib/vendor/composer/ClassLoader.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/ClassLoader.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/ClassLoader.php	(revision 8504)
@@ -43,21 +43,21 @@
 class ClassLoader
 {
-    /** @var ?string */
+    /** @var \Closure(string):void */
+    private static $includeFile;
+
+    /** @var string|null */
     private $vendorDir;
 
     // PSR-4
     /**
-     * @var array[]
-     * @psalm-var array<string, array<string, int>>
+     * @var array<string, array<string, int>>
      */
     private $prefixLengthsPsr4 = array();
     /**
-     * @var array[]
-     * @psalm-var array<string, array<int, string>>
+     * @var array<string, list<string>>
      */
     private $prefixDirsPsr4 = array();
     /**
-     * @var array[]
-     * @psalm-var array<string, string>
+     * @var list<string>
      */
     private $fallbackDirsPsr4 = array();
@@ -65,11 +65,13 @@
     // PSR-0
     /**
-     * @var array[]
-     * @psalm-var array<string, array<string, string[]>>
+     * List of PSR-0 prefixes
+     *
+     * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
+     *
+     * @var array<string, array<string, list<string>>>
      */
     private $prefixesPsr0 = array();
     /**
-     * @var array[]
-     * @psalm-var array<string, string>
+     * @var list<string>
      */
     private $fallbackDirsPsr0 = array();
@@ -79,6 +81,5 @@
 
     /**
-     * @var string[]
-     * @psalm-var array<string, string>
+     * @var array<string, string>
      */
     private $classMap = array();
@@ -88,27 +89,27 @@
 
     /**
-     * @var bool[]
-     * @psalm-var array<string, bool>
+     * @var array<string, bool>
      */
     private $missingClasses = array();
 
-    /** @var ?string */
+    /** @var string|null */
     private $apcuPrefix;
 
     /**
-     * @var self[]
+     * @var array<string, self>
      */
     private static $registeredLoaders = array();
 
     /**
-     * @param ?string $vendorDir
+     * @param string|null $vendorDir
      */
     public function __construct($vendorDir = null)
     {
         $this->vendorDir = $vendorDir;
-    }
-
-    /**
-     * @return string[]
+        self::initializeIncludeClosure();
+    }
+
+    /**
+     * @return array<string, list<string>>
      */
     public function getPrefixes()
@@ -122,6 +123,5 @@
 
     /**
-     * @return array[]
-     * @psalm-return array<string, array<int, string>>
+     * @return array<string, list<string>>
      */
     public function getPrefixesPsr4()
@@ -131,6 +131,5 @@
 
     /**
-     * @return array[]
-     * @psalm-return array<string, string>
+     * @return list<string>
      */
     public function getFallbackDirs()
@@ -140,6 +139,5 @@
 
     /**
-     * @return array[]
-     * @psalm-return array<string, string>
+     * @return list<string>
      */
     public function getFallbackDirsPsr4()
@@ -149,6 +147,5 @@
 
     /**
-     * @return string[] Array of classname => path
-     * @psalm-return array<string, string>
+     * @return array<string, string> Array of classname => path
      */
     public function getClassMap()
@@ -158,6 +155,5 @@
 
     /**
-     * @param string[] $classMap Class to filename map
-     * @psalm-param array<string, string> $classMap
+     * @param array<string, string> $classMap Class to filename map
      *
      * @return void
@@ -176,7 +172,7 @@
      * appending or prepending to the ones previously set for this prefix.
      *
-     * @param string          $prefix  The prefix
-     * @param string[]|string $paths   The PSR-0 root directories
-     * @param bool            $prepend Whether to prepend the directories
+     * @param string              $prefix  The prefix
+     * @param list<string>|string $paths   The PSR-0 root directories
+     * @param bool                $prepend Whether to prepend the directories
      *
      * @return void
@@ -184,8 +180,9 @@
     public function add($prefix, $paths, $prepend = false)
     {
+        $paths = (array) $paths;
         if (!$prefix) {
             if ($prepend) {
                 $this->fallbackDirsPsr0 = array_merge(
-                    (array) $paths,
+                    $paths,
                     $this->fallbackDirsPsr0
                 );
@@ -193,5 +190,5 @@
                 $this->fallbackDirsPsr0 = array_merge(
                     $this->fallbackDirsPsr0,
-                    (array) $paths
+                    $paths
                 );
             }
@@ -202,5 +199,5 @@
         $first = $prefix[0];
         if (!isset($this->prefixesPsr0[$first][$prefix])) {
-            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+            $this->prefixesPsr0[$first][$prefix] = $paths;
 
             return;
@@ -208,5 +205,5 @@
         if ($prepend) {
             $this->prefixesPsr0[$first][$prefix] = array_merge(
-                (array) $paths,
+                $paths,
                 $this->prefixesPsr0[$first][$prefix]
             );
@@ -214,5 +211,5 @@
             $this->prefixesPsr0[$first][$prefix] = array_merge(
                 $this->prefixesPsr0[$first][$prefix],
-                (array) $paths
+                $paths
             );
         }
@@ -223,7 +220,7 @@
      * appending or prepending to the ones previously set for this namespace.
      *
-     * @param string          $prefix  The prefix/namespace, with trailing '\\'
-     * @param string[]|string $paths   The PSR-4 base directories
-     * @param bool            $prepend Whether to prepend the directories
+     * @param string              $prefix  The prefix/namespace, with trailing '\\'
+     * @param list<string>|string $paths   The PSR-4 base directories
+     * @param bool                $prepend Whether to prepend the directories
      *
      * @throws \InvalidArgumentException
@@ -233,9 +230,10 @@
     public function addPsr4($prefix, $paths, $prepend = false)
     {
+        $paths = (array) $paths;
         if (!$prefix) {
             // Register directories for the root namespace.
             if ($prepend) {
                 $this->fallbackDirsPsr4 = array_merge(
-                    (array) $paths,
+                    $paths,
                     $this->fallbackDirsPsr4
                 );
@@ -243,5 +241,5 @@
                 $this->fallbackDirsPsr4 = array_merge(
                     $this->fallbackDirsPsr4,
-                    (array) $paths
+                    $paths
                 );
             }
@@ -253,9 +251,9 @@
             }
             $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
-            $this->prefixDirsPsr4[$prefix] = (array) $paths;
+            $this->prefixDirsPsr4[$prefix] = $paths;
         } elseif ($prepend) {
             // Prepend directories for an already registered namespace.
             $this->prefixDirsPsr4[$prefix] = array_merge(
-                (array) $paths,
+                $paths,
                 $this->prefixDirsPsr4[$prefix]
             );
@@ -264,5 +262,5 @@
             $this->prefixDirsPsr4[$prefix] = array_merge(
                 $this->prefixDirsPsr4[$prefix],
-                (array) $paths
+                $paths
             );
         }
@@ -273,6 +271,6 @@
      * replacing any others previously set for this prefix.
      *
-     * @param string          $prefix The prefix
-     * @param string[]|string $paths  The PSR-0 base directories
+     * @param string              $prefix The prefix
+     * @param list<string>|string $paths  The PSR-0 base directories
      *
      * @return void
@@ -291,6 +289,6 @@
      * replacing any others previously set for this namespace.
      *
-     * @param string          $prefix The prefix/namespace, with trailing '\\'
-     * @param string[]|string $paths  The PSR-4 base directories
+     * @param string              $prefix The prefix/namespace, with trailing '\\'
+     * @param list<string>|string $paths  The PSR-4 base directories
      *
      * @throws \InvalidArgumentException
@@ -426,5 +424,6 @@
     {
         if ($file = $this->findFile($class)) {
-            includeFile($file);
+            $includeFile = self::$includeFile;
+            $includeFile($file);
 
             return true;
@@ -477,7 +476,7 @@
 
     /**
-     * Returns the currently registered loaders indexed by their corresponding vendor directories.
-     *
-     * @return self[]
+     * Returns the currently registered loaders keyed by their corresponding vendor directories.
+     *
+     * @return array<string, self>
      */
     public static function getRegisteredLoaders()
@@ -556,17 +555,25 @@
         return false;
     }
+
+    /**
+     * @return void
+     */
+    private static function initializeIncludeClosure()
+    {
+        if (self::$includeFile !== null) {
+            return;
+        }
+
+        /**
+         * Scope isolated include.
+         *
+         * Prevents access to $this/self from included files.
+         *
+         * @param  string $file
+         * @return void
+         */
+        self::$includeFile = \Closure::bind(static function($file) {
+            include $file;
+        }, null, null);
+    }
 }
-
-/**
- * Scope isolated include.
- *
- * Prevents access to $this/self from included files.
- *
- * @param  string $file
- * @return void
- * @private
- */
-function includeFile($file)
-{
-    include $file;
-}
Index: /mods/mod_rechnungen/lib/vendor/composer/InstalledVersions.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/InstalledVersions.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/InstalledVersions.php	(revision 8504)
@@ -22,14 +22,27 @@
  *
  * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
  */
 class InstalledVersions
 {
     /**
+     * @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
+     * @internal
+     */
+    private static $selfDir = null;
+
+    /**
      * @var mixed[]|null
-     * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}|array{}|null
+     * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
      */
     private static $installed;
 
     /**
+     * @var bool
+     */
+    private static $installedIsLocalDir;
+
+    /**
      * @var bool|null
      */
@@ -38,5 +51,5 @@
     /**
      * @var array[]
-     * @psalm-var array<string, array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+     * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
      */
     private static $installedByVendor = array();
@@ -97,5 +110,5 @@
         foreach (self::getInstalled() as $installed) {
             if (isset($installed['versions'][$packageName])) {
-                return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
+                return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
             }
         }
@@ -118,5 +131,5 @@
     public static function satisfies(VersionParser $parser, $packageName, $constraint)
     {
-        $constraint = $parser->parseConstraints($constraint);
+        $constraint = $parser->parseConstraints((string) $constraint);
         $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
 
@@ -242,5 +255,5 @@
     /**
      * @return array
-     * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}
+     * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
      */
     public static function getRootPackage()
@@ -256,5 +269,5 @@
      * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
      * @return array[]
-     * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}
+     * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
      */
     public static function getRawData()
@@ -279,5 +292,5 @@
      *
      * @return array[]
-     * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+     * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
      */
     public static function getAllRawData()
@@ -302,5 +315,5 @@
      * @return void
      *
-     * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>} $data
+     * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
      */
     public static function reload($data)
@@ -308,9 +321,27 @@
         self::$installed = $data;
         self::$installedByVendor = array();
+
+        // when using reload, we disable the duplicate protection to ensure that self::$installed data is
+        // always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
+        // so we have to assume it does not, and that may result in duplicate data being returned when listing
+        // all installed packages for example
+        self::$installedIsLocalDir = false;
+    }
+
+    /**
+     * @return string
+     */
+    private static function getSelfDir()
+    {
+        if (self::$selfDir === null) {
+            self::$selfDir = strtr(__DIR__, '\\', '/');
+        }
+
+        return self::$selfDir;
     }
 
     /**
      * @return array[]
-     * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string, type?: string}>}>
+     * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
      */
     private static function getInstalled()
@@ -321,14 +352,24 @@
 
         $installed = array();
+        $copiedLocalDir = false;
 
         if (self::$canGetVendors) {
+            $selfDir = self::getSelfDir();
             foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+                $vendorDir = strtr($vendorDir, '\\', '/');
                 if (isset(self::$installedByVendor[$vendorDir])) {
                     $installed[] = self::$installedByVendor[$vendorDir];
                 } elseif (is_file($vendorDir.'/composer/installed.php')) {
-                    $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
-                    if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
-                        self::$installed = $installed[count($installed) - 1];
+                    /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
+                    $required = require $vendorDir.'/composer/installed.php';
+                    self::$installedByVendor[$vendorDir] = $required;
+                    $installed[] = $required;
+                    if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
+                        self::$installed = $required;
+                        self::$installedIsLocalDir = true;
                     }
+                }
+                if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
+                    $copiedLocalDir = true;
                 }
             }
@@ -339,10 +380,15 @@
             // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
             if (substr(__DIR__, -8, 1) !== 'C') {
-                self::$installed = require __DIR__ . '/installed.php';
+                /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
+                $required = require __DIR__ . '/installed.php';
+                self::$installed = $required;
             } else {
                 self::$installed = array();
             }
         }
-        $installed[] = self::$installed;
+
+        if (self::$installed !== array() && !$copiedLocalDir) {
+            $installed[] = self::$installed;
+        }
 
         return $installed;
Index: /mods/mod_rechnungen/lib/vendor/composer/LICENSE
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/LICENSE	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/LICENSE	(revision 8504)
@@ -1,2 +1,3 @@
+
 Copyright (c) Nils Adermann, Jordi Boggiano
 
@@ -18,2 +19,3 @@
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
+
Index: /mods/mod_rechnungen/lib/vendor/composer/autoload_classmap.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/autoload_classmap.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/autoload_classmap.php	(revision 8504)
@@ -3,5 +3,5 @@
 // autoload_classmap.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
Index: /mods/mod_rechnungen/lib/vendor/composer/autoload_files.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/autoload_files.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/autoload_files.php	(revision 8504)
@@ -3,10 +3,10 @@
 // autoload_files.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(
+    '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
     '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
-    '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
     '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
     '662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php',
Index: /mods/mod_rechnungen/lib/vendor/composer/autoload_namespaces.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/autoload_namespaces.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/autoload_namespaces.php	(revision 8504)
@@ -3,5 +3,5 @@
 // autoload_namespaces.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
Index: /mods/mod_rechnungen/lib/vendor/composer/autoload_psr4.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/autoload_psr4.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/autoload_psr4.php	(revision 8504)
@@ -3,13 +3,9 @@
 // autoload_psr4.php @generated by Composer
 
-$vendorDir = dirname(dirname(__FILE__));
+$vendorDir = dirname(__DIR__);
 $baseDir = dirname($vendorDir);
 
 return array(
     'setasign\\Fpdi\\' => array($vendorDir . '/setasign/fpdi/src'),
-    'horstoeko\\zugferd\\udt\\' => array($vendorDir . '/horstoeko/zugferd/src/entities/udt'),
-    'horstoeko\\zugferd\\rsm\\' => array($vendorDir . '/horstoeko/zugferd/src/entities/rsm'),
-    'horstoeko\\zugferd\\ram\\' => array($vendorDir . '/horstoeko/zugferd/src/entities/ram'),
-    'horstoeko\\zugferd\\qdt\\' => array($vendorDir . '/horstoeko/zugferd/src/entities/qdt'),
     'horstoeko\\zugferd\\' => array($vendorDir . '/horstoeko/zugferd/src'),
     'horstoeko\\stringmanagement\\' => array($vendorDir . '/horstoeko/stringmanagement/src'),
@@ -22,4 +18,5 @@
     'Symfony\\Component\\Validator\\' => array($vendorDir . '/symfony/validator'),
     'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'),
+    'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'),
     'PHPStan\\PhpDocParser\\' => array($vendorDir . '/phpstan/phpdoc-parser/src'),
     'Metadata\\' => array($vendorDir . '/jms/metadata/src'),
Index: /mods/mod_rechnungen/lib/vendor/composer/autoload_real.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/autoload_real.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/autoload_real.php	(revision 8504)
@@ -23,41 +23,23 @@
         }
 
-        require __DIR__ . '/platform_check.php';
-
         spl_autoload_register(array('ComposerAutoloaderInit77946237feb5ddde22f404621e8201a7', 'loadClassLoader'), true, true);
-        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
+        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
         spl_autoload_unregister(array('ComposerAutoloaderInit77946237feb5ddde22f404621e8201a7', 'loadClassLoader'));
 
-        $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
-        if ($useStaticLoader) {
-            require __DIR__ . '/autoload_static.php';
-
-            call_user_func(\Composer\Autoload\ComposerStaticInit77946237feb5ddde22f404621e8201a7::getInitializer($loader));
-        } else {
-            $map = require __DIR__ . '/autoload_namespaces.php';
-            foreach ($map as $namespace => $path) {
-                $loader->set($namespace, $path);
-            }
-
-            $map = require __DIR__ . '/autoload_psr4.php';
-            foreach ($map as $namespace => $path) {
-                $loader->setPsr4($namespace, $path);
-            }
-
-            $classMap = require __DIR__ . '/autoload_classmap.php';
-            if ($classMap) {
-                $loader->addClassMap($classMap);
-            }
-        }
+        require __DIR__ . '/autoload_static.php';
+        call_user_func(\Composer\Autoload\ComposerStaticInit77946237feb5ddde22f404621e8201a7::getInitializer($loader));
 
         $loader->register(true);
 
-        if ($useStaticLoader) {
-            $includeFiles = Composer\Autoload\ComposerStaticInit77946237feb5ddde22f404621e8201a7::$files;
-        } else {
-            $includeFiles = require __DIR__ . '/autoload_files.php';
-        }
-        foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequire77946237feb5ddde22f404621e8201a7($fileIdentifier, $file);
+        $filesToLoad = \Composer\Autoload\ComposerStaticInit77946237feb5ddde22f404621e8201a7::$files;
+        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
+            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+                $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+
+                require $file;
+            }
+        }, null, null);
+        foreach ($filesToLoad as $fileIdentifier => $file) {
+            $requireFile($fileIdentifier, $file);
         }
 
@@ -65,16 +47,2 @@
     }
 }
-
-/**
- * @param string $fileIdentifier
- * @param string $file
- * @return void
- */
-function composerRequire77946237feb5ddde22f404621e8201a7($fileIdentifier, $file)
-{
-    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
-        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
-
-        require $file;
-    }
-}
Index: /mods/mod_rechnungen/lib/vendor/composer/autoload_static.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/autoload_static.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/autoload_static.php	(revision 8504)
@@ -8,6 +8,6 @@
 {
     public static $files = array (
+        '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
         '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
-        '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
         '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
         '662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php',
@@ -21,8 +21,4 @@
         'h' => 
         array (
-            'horstoeko\\zugferd\\udt\\' => 22,
-            'horstoeko\\zugferd\\rsm\\' => 22,
-            'horstoeko\\zugferd\\ram\\' => 22,
-            'horstoeko\\zugferd\\qdt\\' => 22,
             'horstoeko\\zugferd\\' => 18,
             'horstoeko\\stringmanagement\\' => 27,
@@ -38,4 +34,5 @@
             'Symfony\\Component\\Validator\\' => 28,
             'Symfony\\Component\\Process\\' => 26,
+            'Symfony\\Component\\Finder\\' => 25,
         ),
         'P' => 
@@ -66,20 +63,4 @@
         array (
             0 => __DIR__ . '/..' . '/setasign/fpdi/src',
-        ),
-        'horstoeko\\zugferd\\udt\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/horstoeko/zugferd/src/entities/udt',
-        ),
-        'horstoeko\\zugferd\\rsm\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/horstoeko/zugferd/src/entities/rsm',
-        ),
-        'horstoeko\\zugferd\\ram\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/horstoeko/zugferd/src/entities/ram',
-        ),
-        'horstoeko\\zugferd\\qdt\\' => 
-        array (
-            0 => __DIR__ . '/..' . '/horstoeko/zugferd/src/entities/qdt',
         ),
         'horstoeko\\zugferd\\' => 
@@ -122,4 +103,8 @@
         array (
             0 => __DIR__ . '/..' . '/symfony/process',
+        ),
+        'Symfony\\Component\\Finder\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/finder',
         ),
         'PHPStan\\PhpDocParser\\' => 
Index: /mods/mod_rechnungen/lib/vendor/composer/installed.json
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/installed.json	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/installed.json	(revision 8504)
@@ -334,15 +334,15 @@
         {
             "name": "horstoeko/zugferd",
-            "version": "v1.0.57",
-            "version_normalized": "1.0.57.0",
+            "version": "v1.0.115",
+            "version_normalized": "1.0.115.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/horstoeko/zugferd.git",
-                "reference": "272e9baf94156496e0d7119616a9449b71f329d6"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/272e9baf94156496e0d7119616a9449b71f329d6",
-                "reference": "272e9baf94156496e0d7119616a9449b71f329d6",
+                "reference": "9bbf0c06942645001d10e88d6e26ff6d8983da2c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/9bbf0c06942645001d10e88d6e26ff6d8983da2c",
+                "reference": "9bbf0c06942645001d10e88d6e26ff6d8983da2c",
                 "shasum": ""
             },
@@ -353,8 +353,9 @@
                 "horstoeko/stringmanagement": "^1",
                 "jms/serializer": "^3",
-                "php": "^7.3|^7.4|^8",
+                "php": ">=7.3",
                 "setasign/fpdf": "^1",
                 "setasign/fpdi": "^2",
                 "smalot/pdfparser": "^0|^2",
+                "symfony/finder": "^5|^6|^7",
                 "symfony/process": "^5|^6|^7",
                 "symfony/validator": "^5|^6|^7",
@@ -365,21 +366,19 @@
                 "nette/php-generator": "*",
                 "pdepend/pdepend": "^2",
+                "phpdocumentor/reflection-docblock": "^5",
                 "phploc/phploc": "^7",
                 "phpmd/phpmd": "^2",
-                "phpstan/phpstan": "^1.8",
+                "phpstan/phpstan": "^1|^2",
                 "phpunit/phpunit": "^9",
+                "rector/rector": "*",
                 "sebastian/phpcpd": "^6",
                 "squizlabs/php_codesniffer": "^3"
             },
-            "time": "2024-07-10T03:39:20+00:00",
+            "time": "2025-06-06T08:14:02+00:00",
             "type": "package",
             "installation-source": "dist",
             "autoload": {
                 "psr-4": {
-                    "horstoeko\\zugferd\\": "src",
-                    "horstoeko\\zugferd\\qdt\\": "src/entities/qdt",
-                    "horstoeko\\zugferd\\ram\\": "src/entities/ram",
-                    "horstoeko\\zugferd\\rsm\\": "src/entities/rsm",
-                    "horstoeko\\zugferd\\udt\\": "src/entities/udt"
+                    "horstoeko\\zugferd\\": "src"
                 }
             },
@@ -406,5 +405,5 @@
             "support": {
                 "issues": "https://github.com/horstoeko/zugferd/issues",
-                "source": "https://github.com/horstoeko/zugferd/tree/v1.0.57"
+                "source": "https://github.com/horstoeko/zugferd/tree/v1.0.115"
             },
             "install-path": "../horstoeko/zugferd"
@@ -872,4 +871,75 @@
         },
         {
+            "name": "symfony/finder",
+            "version": "v7.3.2",
+            "version_normalized": "7.3.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe",
+                "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.2"
+            },
+            "require-dev": {
+                "symfony/filesystem": "^6.4|^7.0"
+            },
+            "time": "2025-07-15T13:41:35+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Finds files and directories via an intuitive fluent interface",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/finder/tree/v7.3.2"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/nicolas-grekas",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/finder"
+        },
+        {
             "name": "symfony/polyfill-ctype",
             "version": "v1.30.0",
Index: /mods/mod_rechnungen/lib/vendor/composer/installed.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/composer/installed.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/composer/installed.php	(revision 8504)
@@ -1,11 +1,11 @@
 <?php return array(
     'root' => array(
+        'name' => 'm1/wpsg_mod_rechnungen',
         'pretty_version' => '1.0.0+no-version-set',
         'version' => '1.0.0.0',
+        'reference' => null,
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
-        'reference' => NULL,
-        'name' => 'm1/wpsg_mod_rechnungen',
         'dev' => true,
     ),
@@ -14,8 +14,8 @@
             'pretty_version' => '2.0.0',
             'version' => '2.0.0.0',
+            'reference' => 'c6222283fa3f4ac679f8b9ced9a4e23f163e80d0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../doctrine/instantiator',
             'aliases' => array(),
-            'reference' => 'c6222283fa3f4ac679f8b9ced9a4e23f163e80d0',
             'dev_requirement' => false,
         ),
@@ -23,8 +23,8 @@
             'pretty_version' => '3.0.1',
             'version' => '3.0.1.0',
+            'reference' => '31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd',
             'type' => 'library',
             'install_path' => __DIR__ . '/../doctrine/lexer',
             'aliases' => array(),
-            'reference' => '31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd',
             'dev_requirement' => false,
         ),
@@ -32,8 +32,8 @@
             'pretty_version' => 'v0.2.17',
             'version' => '0.2.17.0',
+            'reference' => 'be15c48cda6adfab82e180a69dfa1937e208cfe1',
             'type' => 'library',
             'install_path' => __DIR__ . '/../goetas-webservices/xsd2php-runtime',
             'aliases' => array(),
-            'reference' => 'be15c48cda6adfab82e180a69dfa1937e208cfe1',
             'dev_requirement' => false,
         ),
@@ -41,8 +41,8 @@
             'pretty_version' => 'v1.0.5',
             'version' => '1.0.5.0',
+            'reference' => '2790b61cbff7f94ae8f40565761b15beb7792fcb',
             'type' => 'package',
             'install_path' => __DIR__ . '/../horstoeko/mimedb',
             'aliases' => array(),
-            'reference' => '2790b61cbff7f94ae8f40565761b15beb7792fcb',
             'dev_requirement' => false,
         ),
@@ -50,17 +50,17 @@
             'pretty_version' => 'v1.0.11',
             'version' => '1.0.11.0',
+            'reference' => '57f0c2bae4cba941902a02d8166d1f03fb52d08a',
             'type' => 'package',
             'install_path' => __DIR__ . '/../horstoeko/stringmanagement',
             'aliases' => array(),
-            'reference' => '57f0c2bae4cba941902a02d8166d1f03fb52d08a',
             'dev_requirement' => false,
         ),
         'horstoeko/zugferd' => array(
-            'pretty_version' => 'v1.0.57',
-            'version' => '1.0.57.0',
+            'pretty_version' => 'v1.0.115',
+            'version' => '1.0.115.0',
+            'reference' => '9bbf0c06942645001d10e88d6e26ff6d8983da2c',
             'type' => 'package',
             'install_path' => __DIR__ . '/../horstoeko/zugferd',
             'aliases' => array(),
-            'reference' => '272e9baf94156496e0d7119616a9449b71f329d6',
             'dev_requirement' => false,
         ),
@@ -68,8 +68,8 @@
             'pretty_version' => '2.8.0',
             'version' => '2.8.0.0',
+            'reference' => '7ca240dcac0c655eb15933ee55736ccd2ea0d7a6',
             'type' => 'library',
             'install_path' => __DIR__ . '/../jms/metadata',
             'aliases' => array(),
-            'reference' => '7ca240dcac0c655eb15933ee55736ccd2ea0d7a6',
             'dev_requirement' => false,
         ),
@@ -77,8 +77,8 @@
             'pretty_version' => '3.30.0',
             'version' => '3.30.0.0',
+            'reference' => 'bf1105358123d7c02ee6cad08ea33ab535a09d5e',
             'type' => 'library',
             'install_path' => __DIR__ . '/../jms/serializer',
             'aliases' => array(),
-            'reference' => 'bf1105358123d7c02ee6cad08ea33ab535a09d5e',
             'dev_requirement' => false,
         ),
@@ -86,8 +86,8 @@
             'pretty_version' => '1.0.0+no-version-set',
             'version' => '1.0.0.0',
+            'reference' => null,
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
-            'reference' => NULL,
             'dev_requirement' => false,
         ),
@@ -95,8 +95,8 @@
             'pretty_version' => '1.29.1',
             'version' => '1.29.1.0',
+            'reference' => 'fcaefacf2d5c417e928405b71b400d4ce10daaf4',
             'type' => 'library',
             'install_path' => __DIR__ . '/../phpstan/phpdoc-parser',
             'aliases' => array(),
-            'reference' => 'fcaefacf2d5c417e928405b71b400d4ce10daaf4',
             'dev_requirement' => false,
         ),
@@ -104,8 +104,8 @@
             'pretty_version' => '1.8.2',
             'version' => '1.8.2.0',
+            'reference' => 'd77904018090c17dc9f3ab6e944679a7a47e710a',
             'type' => 'library',
             'install_path' => __DIR__ . '/../setasign/fpdf',
             'aliases' => array(),
-            'reference' => 'd77904018090c17dc9f3ab6e944679a7a47e710a',
             'dev_requirement' => false,
         ),
@@ -113,8 +113,8 @@
             'pretty_version' => 'v2.6.0',
             'version' => '2.6.0.0',
+            'reference' => 'a6db878129ec6c7e141316ee71872923e7f1b7ad',
             'type' => 'library',
             'install_path' => __DIR__ . '/../setasign/fpdi',
             'aliases' => array(),
-            'reference' => 'a6db878129ec6c7e141316ee71872923e7f1b7ad',
             'dev_requirement' => false,
         ),
@@ -122,8 +122,8 @@
             'pretty_version' => 'v2.11.0',
             'version' => '2.11.0.0',
+            'reference' => 'ac8e6678b0940e4b2ccd5caadd3fb18e68093be6',
             'type' => 'library',
             'install_path' => __DIR__ . '/../smalot/pdfparser',
             'aliases' => array(),
-            'reference' => 'ac8e6678b0940e4b2ccd5caadd3fb18e68093be6',
             'dev_requirement' => false,
         ),
@@ -131,8 +131,17 @@
             'pretty_version' => 'v3.5.0',
             'version' => '3.5.0.0',
+            'reference' => '0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
             'aliases' => array(),
-            'reference' => '0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1',
+            'dev_requirement' => false,
+        ),
+        'symfony/finder' => array(
+            'pretty_version' => 'v7.3.2',
+            'version' => '7.3.2.0',
+            'reference' => '2a6614966ba1074fa93dae0bc804227422df4dfe',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../symfony/finder',
+            'aliases' => array(),
             'dev_requirement' => false,
         ),
@@ -140,8 +149,8 @@
             'pretty_version' => 'v1.30.0',
             'version' => '1.30.0.0',
+            'reference' => '0424dff1c58f028c451efff2045f5d92410bd540',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
             'aliases' => array(),
-            'reference' => '0424dff1c58f028c451efff2045f5d92410bd540',
             'dev_requirement' => false,
         ),
@@ -149,8 +158,8 @@
             'pretty_version' => 'v1.30.0',
             'version' => '1.30.0.0',
+            'reference' => 'fd22ab50000ef01661e2a31d850ebaa297f8e03c',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
             'aliases' => array(),
-            'reference' => 'fd22ab50000ef01661e2a31d850ebaa297f8e03c',
             'dev_requirement' => false,
         ),
@@ -158,8 +167,8 @@
             'pretty_version' => 'v1.30.0',
             'version' => '1.30.0.0',
+            'reference' => 'dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/polyfill-php83',
             'aliases' => array(),
-            'reference' => 'dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9',
             'dev_requirement' => false,
         ),
@@ -167,8 +176,8 @@
             'pretty_version' => 'v6.4.8',
             'version' => '6.4.8.0',
+            'reference' => '8d92dd79149f29e89ee0f480254db595f6a6a2c5',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/process',
             'aliases' => array(),
-            'reference' => '8d92dd79149f29e89ee0f480254db595f6a6a2c5',
             'dev_requirement' => false,
         ),
@@ -176,8 +185,8 @@
             'pretty_version' => 'v3.5.0',
             'version' => '3.5.0.0',
+            'reference' => 'b9d2189887bb6b2e0367a9fc7136c5239ab9b05a',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/translation-contracts',
             'aliases' => array(),
-            'reference' => 'b9d2189887bb6b2e0367a9fc7136c5239ab9b05a',
             'dev_requirement' => false,
         ),
@@ -185,8 +194,8 @@
             'pretty_version' => 'v6.4.10',
             'version' => '6.4.10.0',
+            'reference' => 'bcf939a9d1acd7d2912e9474c0c3d7840a03cbcd',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/validator',
             'aliases' => array(),
-            'reference' => 'bcf939a9d1acd7d2912e9474c0c3d7840a03cbcd',
             'dev_requirement' => false,
         ),
@@ -194,8 +203,8 @@
             'pretty_version' => 'v6.4.8',
             'version' => '6.4.8.0',
+            'reference' => '52903de178d542850f6f341ba92995d3d63e60c9',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/yaml',
             'aliases' => array(),
-            'reference' => '52903de178d542850f6f341ba92995d3d63e60c9',
             'dev_requirement' => false,
         ),
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/ISSUE_TEMPLATE/bug_report.md
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/ISSUE_TEMPLATE/bug_report.md	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/ISSUE_TEMPLATE/bug_report.md	(revision 8504)
@@ -7,4 +7,14 @@
 
 ---
+
+### Before Submitting an Issue
+
+Thank you for contributing to our project! :tada: Before opening a new issue, please review our [Contributing Guidelines](https://github.com/horstoeko/zugferd/blob/master/CONTRIBUTING.md).
+
+To help us assist you efficiently, we require confirmation of the following:
+- [ ] I have read the [documentation](https://github.com/horstoeko/zugferd/wiki) and could not find a solution to my issue.
+- [ ] I have searched open and closed [issues](https://github.com/horstoeko/zugferd/issues) to ensure my issue has not already been reported.
+
+Issues that do not meet these requirements may be closed without further action. Thank you for your understanding and support! :pray:
 
 **Describe the bug**
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/ISSUE_TEMPLATE/feature.md
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/ISSUE_TEMPLATE/feature.md	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/ISSUE_TEMPLATE/feature.md	(revision 8504)
@@ -7,4 +7,14 @@
 
 ---
+
+### Before Submitting an Issue
+
+Thank you for contributing to our project! :tada: Before opening a new issue, please review our [Contributing Guidelines](https://github.com/horstoeko/zugferd/blob/master/CONTRIBUTING.md).
+
+To help us assist you efficiently, we require confirmation of the following:
+- [ ] I have read the [documentation](https://github.com/horstoeko/zugferd/wiki) and could not find a solution to my issue.
+- [ ] I have searched open and closed [issues](https://github.com/horstoeko/zugferd/issues) to ensure my issue has not already been reported.
+
+Issues that do not meet these requirements may be closed without further action. Thank you for your understanding and support! :pray:
 
 **Describe the feature**
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/ISSUE_TEMPLATE/question.md
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/ISSUE_TEMPLATE/question.md	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/ISSUE_TEMPLATE/question.md	(revision 8504)
@@ -7,4 +7,14 @@
 
 ---
+
+### Before Submitting an Issue
+
+Thank you for contributing to our project! :tada: Before opening a new issue, please review our [Contributing Guidelines](https://github.com/horstoeko/zugferd/blob/master/CONTRIBUTING.md).
+
+To help us assist you efficiently, we require confirmation of the following:
+- [ ] I have read the [documentation](https://github.com/horstoeko/zugferd/wiki) and could not find a solution to my issue.
+- [ ] I have searched open and closed [issues](https://github.com/horstoeko/zugferd/issues) to ensure my issue has not already been reported.
+
+Issues that do not meet these requirements may be closed without further action. Thank you for your understanding and support! :pray:
 
 **Your question**
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/workflows/maintain-issues-stale.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/workflows/maintain-issues-stale.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.github/workflows/maintain-issues-stale.yml	(revision 8504)
@@ -13,11 +13,11 @@
       pull-requests: write
     steps:
-      - uses: actions/stale@v5
+      - uses: actions/stale@v9
         with:
-          days-before-issue-stale: 30
-          days-before-issue-close: 14
+          days-before-issue-stale: 7
+          days-before-issue-close: 5
           stale-issue-label: "stale"
-          stale-issue-message: "This issue is stale because it has been open for 30 days with no activity."
-          close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale."
+          stale-issue-message: "This issue is stale because it has been open for 7 days with no activity."
+          close-issue-message: "This issue was closed because it has been inactive for 5 days since being marked as stale."
           days-before-pr-stale: -1
           days-before-pr-close: -1
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.gitignore
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.gitignore	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/.gitignore	(revision 8504)
@@ -70,4 +70,5 @@
 /vendor/
 /logs/*
+/make/*.md
 .phpunit.result.cache
 /.phpdoc/
@@ -80,4 +81,5 @@
 /build/phpdox/
 /build/phpdoc/
+/build/releasenotes.txt
 /*.phar
 /composer.lock
@@ -87,2 +89,5 @@
 /examples/filetovalidate-report.html
 myfile_dbg.xml
+/examples/*report*.*
+
+02_ZugferdDocumentPdfBuilder_PrintLayout_Merged.pdf
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/CONTRIBUTING.md
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/CONTRIBUTING.md	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/CONTRIBUTING.md	(revision 8504)
@@ -20,9 +20,7 @@
   - [Suggesting Enhancements](#suggesting-enhancements)
 
-
-
 ## I Have a Question
 
-> If you want to ask a question, we assume that you have read the available [Documentation](https://github.com/horstoeko/zugferd).
+> If you want to ask a question, we assume that you have read the available [Documentation](https://github.com/horstoeko/zugferd/wiki).
 
 Before you ask a question, it is best to search for existing [Issues](https://github.com/horstoeko/zugferd/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first.
@@ -49,5 +47,5 @@
 
 - Make sure that you are using the latest version.
-- Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment components/versions (Make sure that you have read the [documentation](https://github.com/horstoeko/zugferd). If you are looking for support, you might want to check [this section](#i-have-a-question)).
+- Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment components/versions (Make sure that you have read the [documentation](https://github.com/horstoeko/zugferd/wiki). If you are looking for support, you might want to check [this section](#i-have-a-question)).
 - To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the [bug tracker](https://github.com/horstoeko/zugferd/issues?q=label%3Abug).
 - Also make sure to search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue.
@@ -89,5 +87,5 @@
 
 - Make sure that you are using the latest version.
-- Read the [documentation](https://github.com/horstoeko/zugferd) carefully and find out if the functionality is already covered, maybe by an individual configuration.
+- Read the [documentation](https://github.com/horstoeko/zugferd/wiki) carefully and find out if the functionality is already covered, maybe by an individual configuration.
 - Perform a [search](https://github.com/horstoeko/zugferd/issues?q=label%3Aenhancement) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
 - Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, consider writing an add-on/plugin library.
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/README.md
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/README.md	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/README.md	(revision 8504)
@@ -1,33 +1,26 @@
+<!-- omit in toc -->
 # ZUGFeRD/XRechnung/Factur-X
 
-[![Latest Stable Version](https://poser.pugx.org/horstoeko/zugferd/v/stable.png)](https://packagist.org/packages/horstoeko/zugferd) [![Total Downloads](https://poser.pugx.org/horstoeko/zugferd/downloads.png)](https://packagist.org/packages/horstoeko/zugferd) [![Latest Unstable Version](https://poser.pugx.org/horstoeko/zugferd/v/unstable.png)](https://packagist.org/packages/horstoeko/zugferd) [![License](https://poser.pugx.org/horstoeko/zugferd/license.png)](https://packagist.org/packages/horstoeko/zugferd) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/horstoeko/zugferd)
+<!-- omit in toc -->
+## Status
 
-[![CI (Ant, PHP 7.3)](https://github.com/horstoeko/zugferd/actions/workflows/build.php73.ant.yml/badge.svg)](https://github.com/horstoeko/zugferd/actions/workflows/build.php73.ant.yml)
-[![CI (Ant, PHP 7.4)](https://github.com/horstoeko/zugferd/actions/workflows/build.php74.ant.yml/badge.svg)](https://github.com/horstoeko/zugferd/actions/workflows/build.php74.ant.yml)
-[![CI (PHP 8.0)](https://github.com/horstoeko/zugferd/actions/workflows/build.php80.ant.yml/badge.svg)](https://github.com/horstoeko/zugferd/actions/workflows/build.php80.ant.yml)
-[![CI (PHP 8.1)](https://github.com/horstoeko/zugferd/actions/workflows/build.php81.ant.yml/badge.svg)](https://github.com/horstoeko/zugferd/actions/workflows/build.php81.ant.yml)
-[![CI (PHP 8.2)](https://github.com/horstoeko/zugferd/actions/workflows/build.php82.ant.yml/badge.svg)](https://github.com/horstoeko/zugferd/actions/workflows/build.php82.ant.yml)
-[![CI (PHP 8.3)](https://github.com/horstoeko/zugferd/actions/workflows/build.php83.ant.yml/badge.svg)](https://github.com/horstoeko/zugferd/actions/workflows/build.php83.ant.yml)
+[![Latest Stable Version](https://img.shields.io/packagist/v/horstoeko/zugferd.svg?style=plastic)](https://packagist.org/packages/horstoeko/zugferd)
+[![PHP version](https://img.shields.io/packagist/php-v/horstoeko/zugferd.svg?style=plastic)](https://packagist.org/packages/horstoeko/zugferd)
+[![License](https://img.shields.io/packagist/l/horstoeko/zugferd.svg?style=plastic)](https://packagist.org/packages/horstoeko/zugferd)
 
+[![Continuous Integration](https://github.com/horstoeko/zugferd/actions/workflows/build.ci.yml/badge.svg?branch=master)](https://github.com/horstoeko/zugferd/actions/workflows/build.ci.yml)
+[![Release Status](https://github.com/horstoeko/zugferd/actions/workflows/build.release.yml/badge.svg)](https://github.com/horstoeko/zugferd/actions/workflows/build.release.yml)
+
+<!-- omit in toc -->
 ## Table of Contents
 
-- [ZUGFeRD/XRechnung/Factur-X](#zugferdxrechnungfactur-x)
-  - [Table of Contents](#table-of-contents)
-  - [License](#license)
-  - [Overview](#overview)
-  - [Supported profiles](#supported-profiles)
-  - [Further information](#further-information)
-  - [Related projects](#related-projects)
-  - [Dependencies](#dependencies)
-  - [Our Wiki](#our-wiki)
-  - [Installation](#installation)
-  - [Usage](#usage)
-    - [Configuration](#configuration)
-    - [Reading a xml file](#reading-a-xml-file)
-    - [Reading a pdf file with xml attachment](#reading-a-pdf-file-with-xml-attachment)
-    - [Writing a xml file](#writing-a-xml-file)
-    - [Writing a pdf file with attached xml file](#writing-a-pdf-file-with-attached-xml-file)
-    - [Merge existing PDF and XML](#merge-existing-pdf-and-xml)
-    - [Validation](#validation)
+- [License](#license)
+- [Overview](#overview)
+- [Supported profiles](#supported-profiles)
+- [Further information](#further-information)
+- [Related projects](#related-projects)
+- [Dependencies](#dependencies)
+- [Resources](#resources)
+- [Guide](#guide)
 
 ## License
@@ -52,5 +45,6 @@
 - EN16931 XRechnung 3.x
 
-**Note: This package provides only support for CII - not UBL**
+> [!IMPORTANT]
+> This package provides only support for CII-Syntax - not UBL-Syntax
 
 ## Further information
@@ -64,5 +58,6 @@
 * [ZUGFeRD Visualizer](https://github.com/horstoeko/zugferdvisualizer)
 * [ZUGFeRD Laravel](https://github.com/horstoeko/zugferd-laravel)
-* [ZUGFeRD UBL Syntax](https://github.com/horstoeko/ubl)
+* [ZUGFeRD UBL Bridge](https://github.com/horstoeko/zugferdublbridge)
+* [ZUGFeRD Mail](https://github.com/horstoeko/zugferdmail)
 * [Order-X](https://github.com/horstoeko/orderx)
 
@@ -76,296 +71,21 @@
 - [FPDI](https://github.com/Setasign/FPDI).
 
-## Our Wiki
+## Resources
 
-We offer you a wiki that is currently under construction. This wiki lives from your questions, but also from your cooperation. If you find that something is unclear or not described at all during your work with this library, please let us know.
+- [Official documentaries (Version Archive)](https://www.ferd-net.de/ueber-uns/ressourcen-1/veroeffentlichungen)
 
-[You can find our Wiki here...](https://github.com/horstoeko/zugferd/wiki)
+## Guide
 
-## Installation
+For detailed explanation you may have a look in the [examples](https://github.com/horstoeko/zugferd/tree/master/examples)
+of this package, the documentation attached to every release or our [wiki](https://github.com/horstoeko/zugferd/wiki).
 
-There is one recommended way to install `horstoeko/zugferd` via [Composer](https://getcomposer.org/):
+The following parts are documentated in our [Wiki](https://github.com/horstoeko/zugferd/wiki/Configuration):
 
-* adding the dependency to your ``composer.json`` file:
-
-```js
-  "require": {
-      ..
-      "horstoeko/zugferd":"^1",
-      ..
-  },
-```
-
-## Usage
-
-For detailed eplanation you may have a look in the [examples](https://github.com/horstoeko/zugferd/tree/master/examples) of this package and the documentation attached to every release.
-
-### Configuration
-
-This library can be configured in various ways. For more information please visit our [Wiki](https://github.com/horstoeko/zugferd/wiki/Configuration).
-
-### Reading a xml file
-
-The central entry point to read XML data is the class `ZugferdDocumentReader`. Among other things, this provides methods for reading header and line information, as can be seen in the following example:
-
-```php
-use horstoeko\zugferd\ZugferdDocumentReader;
-
-$document = ZugferdDocumentReader::readAndGuessFromFile(dirname(__FILE__) . "/xml/factur-x.xml");
-
-$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-
-echo "\r\nGeneral document information\r\n";
-echo "----------------------------------------------------------------------\r\n";
-echo "Profile:               {$document->getProfileDefinitionParameter("name")}\r\n";
-echo "Profile:               {$document->getProfileDefinitionParameter("altname")}\r\n";
-echo "Document No:           {$documentno}\r\n";
-echo "Document Type:         {$documenttypecode}\r\n";
-echo "Document Date:         {$documentdate->format("Y-m-d")}\r\n";
-echo "Invoice currency:      {$invoiceCurrency}\r\n";
-echo "Tax currency:          {$taxCurrency}\r\n";
-
-if ($document->firstDocumentPosition()) {
-    echo "\r\nDocument positions\r\n";
-    echo "----------------------------------------------------------------------\r\n";
-    do {
-        $document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-
-        echo " - Line Id:                        {$lineid}\r\n";
-        echo " - Product Name:                   {$prodname}\r\n";
-        echo " - Product Description:            {$proddesc}\r\n";
-        echo " - Product Buyer ID:               {$prodbuyerid}\r\n";
-        echo " - Product Gross Price:            {$grosspriceamount}\r\n";
-        echo " - Product Gross Price Basis Qty.: {$grosspricebasisquantity} {$grosspricebasisquantityunitcode}\r\n";
-        echo " - Product Net Price:              {$netpriceamount}\r\n";
-        echo " - Product Net Price Basis Qty.:   {$netpricebasisquantity} {$netpricebasisquantityunitcode}\r\n";
-        echo " - Quantity:                       {$billedquantity} {$billedquantityunitcode}\r\n";
-        echo " - Line amount:                    {$lineTotalAmount}\r\n";
-
-        if ($document->firstDocumentPositionTax()) {
-            echo " - Position Tax(es)\r\n";
-            do {
-                $document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-                echo "   - Tax category code:            {$categoryCode}\r\n";
-                echo "   - Tax type code:                {$typeCode}\r\n";
-                echo "   - Tax percent:                  {$rateApplicablePercent}\r\n";
-                echo "   - Tax amount:                   {$calculatedAmount}\r\n";
-            } while ($document->nextDocumentPositionTax());
-        }
-
-        if ($document->firstDocumentPositionAllowanceCharge()) {
-            echo " - Position Allowance(s)/Charge(s)\r\n";
-            do {
-                $document->getDocumentPositionAllowanceCharge($actualAmount, $isCharge, $calculationPercent, $basisAmount, $reason, $taxTypeCode, $taxCategoryCode, $rateApplicablePercent, $sequence, $basisQuantity, $basisQuantityUnitCode, $reasonCode);
-                echo "   - Information\r\n";
-                echo "     - Actual Amount:                {$actualAmount}\r\n";
-                echo "     - Type:                         " . ($isCharge ? "Charge" : "Allowance") . "\r\n";
-                echo "     - Tax category code:            {$taxCategoryCode}\r\n";
-                echo "     - Tax type code:                {$taxTypeCode}\r\n";
-                echo "     - Tax percent:                  {$rateApplicablePercent}\r\n";
-                echo "     - Calculated percent:           {$calculationPercent}\r\n";
-                echo "     - Basis amount:                 {$basisAmount}\r\n";
-                echo "     - Basis qty.:                   {$basisQuantity} {$basisQuantityUnitCode}\r\n";
-            } while ($document->nextDocumentPositionAllowanceCharge());
-        }
-
-        echo "\r\n";
-    } while ($document->nextDocumentPosition());
-}
-
-if ($document->firstDocumentAllowanceCharge()) {
-    echo "\r\nDocument allowance(s)/charge(s)\r\n";
-    echo "----------------------------------------------------------------------\r\n";
-    do {
-        $document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        echo "   - Information\r\n";
-        echo "     - Actual Amount:                {$actualAmount}\r\n";
-        echo "     - Type:                         " . ($isCharge ? "Charge" : "Allowance") . "\r\n";
-        echo "     - Tax category code:            {$taxCategoryCode}\r\n";
-        echo "     - Tax type code:                {$taxTypeCode}\r\n";
-        echo "     - Tax percent:                  {$rateApplicablePercent}\r\n";
-        echo "     - Calculated percent:           {$calculationPercent}\r\n";
-        echo "     - Basis amount:                 {$basisAmount}\r\n";
-        echo "     - Basis qty.:                   {$basisQuantity} {$basisQuantityUnitCode}\r\n";
-    } while ($document->nextDocumentAllowanceCharge());
-}
-
-if ($document->firstDocumentTax()) {
-    echo "\r\nDocument tax\r\n";
-    echo "----------------------------------------------------------------------\r\n";
-    do {
-        $document->getDocumentTax($categoryCode, $typeCode, $basisAmount, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, $lineTotalBasisAmount, $allowanceChargeBasisAmount, $taxPointDate, $dueDateTypeCode);
-        echo "   - Information\r\n";
-        echo "     - Tax category code:            {$categoryCode}\r\n";
-        echo "     - Tax type code:                {$typeCode}\r\n";
-        echo "     - Basis amount:                 {$basisAmount}\r\n";
-        echo "     - Line total Basis amount:      {$lineTotalBasisAmount}\r\n";
-        echo "     - Tax percent:                  {$rateApplicablePercent}\r\n";
-        echo "     - Tax amount:                   {$calculatedAmount}\r\n";
-    } while ($document->nextDocumentTax());
-}
-
-$document->getDocumentSummation($grandTotalAmount, $duePayableAmount, $lineTotalAmount, $chargeTotalAmount, $allowanceTotalAmount, $taxBasisTotalAmount, $taxTotalAmount, $roundingAmount, $totalPrepaidAmount);
-
-echo "\r\nDocument summation\r\n";
-echo "----------------------------------------------------------------------\r\n";
-
-echo "  - Line total amount                {$lineTotalAmount}\r\n";
-echo "  - Charge total amount              {$chargeTotalAmount}\r\n";
-echo "  - Allowance total amount           {$allowanceTotalAmount}\r\n";
-echo "  - Tax basis total amount           {$taxBasisTotalAmount}\r\n";
-echo "  - Tax total amount                 {$taxTotalAmount}\r\n";
-echo "  - Grant total amount               {$grandTotalAmount}\r\n";
-echo "  - Due payable amount               {$duePayableAmount}\r\n";
-```
-
-### Reading a pdf file with xml attachment
-
-Reading invoice data from a PDF is similar: you just need to use the `ZugferdDocumentPdfReader` class instead of `ZugferdDocumentReader`:
-
-```php
-  use horstoeko\zugferd\ZugferdDocumentPdfReader;
-
-  $document = ZugferdDocumentPdfReader::readAndGuessFromFile(dirname(__FILE__) . "/xml/factur-x.pdf");
-```
-
-The further reading of the invoice data is then identical with [Reading a xml file](#reading-a-xml-file)
-
-### Writing a xml file
-
-The `ZugferdDocumentBuilder` class is again the central entry point to generate compliant XML data:
-
-```php
-  use horstoeko\zugferd\ZugferdDocumentBuilder;
-  use horstoeko\zugferd\ZugferdProfiles;
-
-  // Create an empty invoice document in the EN16931 profile
-  $document = ZugferdDocumentBuilder::CreateNew(ZugferdProfiles::PROFILE_EN16931);
-
-  // Add invoice and position information
-  $document
-    ->setDocumentInformation("471102", "380", \DateTime::createFromFormat("Ymd", "20180305"), "EUR")
-    ->addDocumentNote('Rechnung gemÃ€Ã Bestellung vom 01.03.2018.')
-    ->setDocumentSupplyChainEvent(\DateTime::createFromFormat('Ymd', '20180305'))
-    ->setDocumentSeller("Lieferant GmbH", "549910")
-    ->addDocumentSellerGlobalId("4000001123452", "0088")
-    ->addDocumentSellerTaxRegistration("FC", "201/113/40209")
-    ->addDocumentSellerTaxRegistration("VA", "DE123456789")
-    ->setDocumentSellerAddress("LieferantenstraÃe 20", "", "", "80333", "MÃŒnchen", "DE")
-    ->setDocumentBuyer("Kunden AG Mitte", "GE2020211")
-    ->setDocumentBuyerAddress("KundenstraÃe 15", "", "", "69876", "Frankfurt", "DE")
-    ->addDocumentTax("S", "VAT", 275.0, 19.25, 7.0)
-    ->addDocumentTax("S", "VAT", 198.0, 37.02, 19.0)
-    ->setDocumentSummation(529.87, 529.87, 473.00, 0.0, 0.0, 473.00, 56.27, null, 0.0)
-    ->addDocumentPaymentTerm("Zahlbar innerhalb 30 Tagen netto bis 04.04.2018, 3% Skonto innerhalb 10 Tagen bis 15.03.2018")
-    ->addNewPosition("1")
-    ->setDocumentPositionProductDetails("TrennblÃ€tter A4", "", "TB100A4", null, "0160", "4012345001235")
-    ->setDocumentPositionGrossPrice(9.9000)
-    ->setDocumentPositionNetPrice(9.9000)
-    ->setDocumentPositionQuantity(20, "H87")
-    ->addDocumentPositionTax('S', 'VAT', 19)
-    ->setDocumentPositionLineSummation(198.0)
-    ->addNewPosition("2")
-    ->setDocumentPositionProductDetails("Joghurt Banane", "", "ARNR2", null, "0160", "4000050986428")
-    ->SetDocumentPositionGrossPrice(5.5000)
-    ->SetDocumentPositionNetPrice(5.5000)
-    ->SetDocumentPositionQuantity(50, "H87")
-    ->AddDocumentPositionTax('S', 'VAT', 7)
-    ->SetDocumentPositionLineSummation(275.0)
-    ->writeFile("/tmp/factur-x.xml");
-```
-
-### Writing a pdf file with attached xml file
-
-Use the class ```ZugferdDocumentPdfBuilder``` if you already have an existing print output of the invoice (for example from an ERP system) and want to add an XML data stream to the existing PDF:
-
-
-```php
-  use horstoeko\zugferd\ZugferdDocumentBuilder;
-  use horstoeko\zugferd\ZugferdDocumentPdfBuilder;
-  use horstoeko\zugferd\ZugferdProfiles;
-
-  // Create an empty invoice document in the EN16931 profile
-  $document = ZugferdDocumentBuilder::CreateNew(ZugferdProfiles::PROFILE_EN16931);
-
-  // Add invoice and position information
-  $document
-    ->setDocumentInformation("471102", "380", \DateTime::createFromFormat("Ymd", "20180305"), "EUR")
-    ->addDocumentNote('Rechnung gemÃ€Ã Bestellung vom 01.03.2018.')
-    ->setDocumentSupplyChainEvent(\DateTime::createFromFormat('Ymd', '20180305'))
-    ->setDocumentSeller("Lieferant GmbH", "549910")
-    ->addDocumentSellerGlobalId("4000001123452", "0088")
-    ->addDocumentSellerTaxRegistration("FC", "201/113/40209")
-    ->addDocumentSellerTaxRegistration("VA", "DE123456789")
-    ->setDocumentSellerAddress("LieferantenstraÃe 20", "", "", "80333", "MÃŒnchen", "DE")
-    ->setDocumentBuyer("Kunden AG Mitte", "GE2020211")
-    ->setDocumentBuyerAddress("KundenstraÃe 15", "", "", "69876", "Frankfurt", "DE")
-    ->addDocumentTax("S", "VAT", 275.0, 19.25, 7.0)
-    ->addDocumentTax("S", "VAT", 198.0, 37.02, 19.0)
-    ->setDocumentSummation(529.87, 529.87, 473.00, 0.0, 0.0, 473.00, 56.27, null, 0.0)
-    ->addDocumentPaymentTerm("Zahlbar innerhalb 30 Tagen netto bis 04.04.2018, 3% Skonto innerhalb 10 Tagen bis 15.03.2018")
-    ->addNewPosition("1")
-    ->setDocumentPositionProductDetails("TrennblÃ€tter A4", "", "TB100A4", null, "0160", "4012345001235")
-    ->setDocumentPositionGrossPrice(9.9000)
-    ->setDocumentPositionNetPrice(9.9000)
-    ->setDocumentPositionQuantity(20, "H87")
-    ->addDocumentPositionTax('S', 'VAT', 19)
-    ->setDocumentPositionLineSummation(198.0)
-    ->addNewPosition("2")
-    ->setDocumentPositionProductDetails("Joghurt Banane", "", "ARNR2", null, "0160", "4000050986428")
-    ->SetDocumentPositionGrossPrice(5.5000)
-    ->SetDocumentPositionNetPrice(5.5000)
-    ->SetDocumentPositionQuantity(50, "H87")
-    ->AddDocumentPositionTax('S', 'VAT', 7)
-    ->SetDocumentPositionLineSummation(275.0);
-
-  // Save merged PDF (existing original and XML) to a file
-  $pdfBuilder = new ZugferdDocumentPdfBuilder($document, "/tmp/existingprintlayout.pdf");
-  $pdfBuilder->generateDocument()->saveDocument("/tmp/merged.pdf");
-
-  // Alternatively, you can also return the merged output (existing original and XML) as a binary string
-  $pdfBuilder = new ZugferdDocumentPdfBuilder($document, "/tmp/existingprintlayout.pdf");
-  $pdfBinaryString = $pdfBuilder->generateDocument()->downloadString("merged.pdf");
-```
-
-### Merge existing PDF and XML
-
-Let's assume we already have a compliant XML (for example in the Comfort profile) and a PDF that already contains the print layout. Then it is possible to merge these two files into a compliant PDF (with XML attachment) using the class ```ZugferdDocumentPdfMerger```.
-
-```php
-use horstoeko\zugferd\ZugferdDocumentPdfMerger;
-
-require dirname(__FILE__) . "/../vendor/autoload.php";
-
-$existingXml = dirname(__FILE__) . "/invoice_1.xml";
-$existingPdf = dirname(__FILE__) . "/emptypdf.pdf";
-$mergeToPdf = dirname(__FILE__) . "/fullpdf.pdf";
-
-if (!file_exists($existingXml) || !file_exists($existingPdf)) {
-    throw new \Exception("XML and/or PDF does not exist");
-}
-
-(new ZugferdDocumentPdfMerger($existingXml, $existingPdf))->generateDocument()->saveDocument($mergeToPdf);
-```
-
-XML and/or PDF do not have to be available as a file. Strings containing the corresponding data can also be passed to the ZugferdDocumentPdfMerger class.
-
-```php
-use horstoeko\zugferd\ZugferdDocumentPdfMerger;
-
-require dirname(__FILE__) . "/../vendor/autoload.php";
-
-$existingXml = "<xml>,,,,,</xml>";
-$existingPdf = "%PDF-1.5...........";
-$mergeToPdf = dirname(__FILE__) . "/fullpdf.pdf";
-
-(new ZugferdDocumentPdfMerger($existingXml, $existingPdf))->generateDocument()->saveDocument($mergeToPdf);
-```
-
-### Validation
-
-This library offers several options for checking and validating a document. Please visit the corresponding page in our [Wiki](https://github.com/horstoeko/zugferd/wiki/Validation).
+- [Installation](https://github.com/horstoeko/zugferd/wiki/Installation)
+- [Configuration](https://github.com/horstoeko/zugferd/wiki/Configuration)
+- [Read a xml file](https://github.com/horstoeko/zugferd/wiki/Reading-XML-Documents)
+- [Read a pdf file with attached xml file](https://github.com/horstoeko/zugferd/wiki/Reading-PDF-Documents)
+- [Write a xml file](https://github.com/horstoeko/zugferd/wiki/Creating-XML-Documents)
+- [Write a pdf file with attached xml file file](https://github.com/horstoeko/zugferd/wiki/Creating-PDF-Documents)
+- [Merge existing PDF and XML](https://github.com/horstoeko/zugferd/wiki/Merging-XML-and-PDF-Documents)
+- [Validation](https://github.com/horstoeko/zugferd/wiki/Validation)
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpcsrules_psr12.xml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpcsrules_psr12.xml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpcsrules_psr12.xml	(revision 8504)
@@ -3,11 +3,5 @@
     <description>The PSR-12 coding standard.</description>
     <arg name="tab-width" value="4"/>
-    <!-- 2. General -->
-    <!-- 2.1 Basic Coding Standard -->
-    <!-- Code MUST follow all rules outlined in PSR-1. -->
     <rule ref="PSR1"/>
-    <!-- The term 'StudlyCaps' in PSR-1 MUST be interpreted as PascalCase where the first letter of each word is capitalized including the very first letter. -->
-    <!-- 2.2 Files -->
-    <!-- All PHP files MUST use the Unix LF (linefeed) line ending only. -->
     <rule ref="Generic.Files.LineEndings">
         <properties>
@@ -15,20 +9,12 @@
         </properties>
     </rule>
-    <!-- All PHP files MUST end with a non-blank line, terminated with a single LF. -->
     <rule ref="PSR2.Files.EndFileNewline"/>
-    <!-- The closing ?> tag MUST be omitted from files containing only PHP. -->
     <rule ref="PSR2.Files.ClosingTag"/>
-    <!-- 2.3 Lines -->
-    <!-- There MUST NOT be a hard limit on line length.
-    The soft limit on line length MUST be 120 characters.
-    Lines SHOULD NOT be longer than 80 characters; lines longer than that SHOULD be split into multiple subsequent lines of no more than 80 characters each. -->
     <rule ref="Generic.Files.LineLength">
         <properties>
-            <property name="lineLimit" value="120"/>
+            <property name="lineLimit" value="1024"/>
             <property name="absoluteLineLimit" value="0"/>
         </properties>
     </rule>
-    <!-- There MUST NOT be trailing whitespace at the end of lines.
-    Blank lines MAY be added to improve readability and to indicate related blocks of code except where explicitly forbidden. -->
     <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
         <properties>
@@ -45,8 +31,5 @@
         <severity>0</severity>
     </rule>
-    <!-- There MUST NOT be more than one statement per line. -->
     <rule ref="Generic.Formatting.DisallowMultipleStatements"/>
-    <!-- 2.4 Indenting -->
-    <!-- Code MUST use an indent of 4 spaces for each indent level, and MUST NOT use tabs for indenting. -->
     <rule ref="Generic.WhiteSpace.ScopeIndent">
         <properties>
@@ -58,67 +41,20 @@
     </rule>
     <rule ref="Generic.WhiteSpace.DisallowTabIndent"/>
-    <!-- 2.5 Keywords and Types -->
-    <!-- All PHP reserved keywords and types [1][2] MUST be in lower case.
-    Any new types and keywords added to future PHP versions MUST be in lower case. -->
     <rule ref="Generic.PHP.LowerCaseKeyword"/>
     <rule ref="Generic.PHP.LowerCaseConstant"/>
     <rule ref="Generic.PHP.LowerCaseType"/>
-    <!-- Short form of type keywords MUST be used i.e. bool instead of boolean, int instead of integer etc. -->
-    <!-- checked by PSR12.Keywords.ShortFormTypeKeywords -->
-    <!-- 3. Declare Statements, Namespace, and Import Statements -->
-    <!-- The header of a PHP file may consist of a number of different blocks. If present, each of the blocks below MUST be separated by a single blank line, and MUST NOT contain a blank line. Each block MUST be in the order listed below, although blocks that are not relevant may be omitted.
-
-    Opening php tag.
-    File-level docblock.
-    One or more declare statements.
-    The namespace declaration of the file.
-    One or more class-based use import statements.
-    One or more function-based use import statements.
-    One or more constant-based use import statements.
-    The remainder of the code in the file. -->
-    <!-- checked by PSR12.Files.FileHeader -->
-    <!-- When a file contains a mix of HTML and PHP, any of the above sections may still be used. If so, they MUST be present at the top of the file, even if the remainder of the code consists of a closing PHP tag and then a mixture of HTML and PHP. -->
-    <!-- When the opening php tag is on the first line of the file, it MUST be on its own line with no other statements unless it is a file containing markup outside of PHP opening and closing tags. -->
-    <!-- Import statements MUST never begin with a leading backslash as they must always be fully qualified. -->
-    <!-- checked by PSR12.Files.ImportStatement -->
-    <!-- Compound namespaces with a depth of more than two MUST NOT be used. -->
-    <!-- checked by PSR12.Namespaces.CompoundNamespaceDepth -->
-    <!-- When wishing to declare strict types in files containing markup outside PHP opening and closing tags, the declaration MUST be on the first line of the file and include an opening PHP tag, the strict types declaration and closing tag. -->
-    <!-- Declare statements MUST contain no spaces and MUST be exactly declare(strict_types=1) (with an optional semi-colon terminator). -->
-    <!-- Block declare statements are allowed and MUST be formatted as below. -->
-    <!-- checked by PSR12.Files.DeclareStatement -->
-    <!-- 4. Classes, Properties, and Methods -->
-    <!-- Any closing brace MUST NOT be followed by any comment or statement on the same line. -->
-    <!-- checked by PSR12.Classes.ClosingBrace -->
-    <!-- When instantiating a new class, parentheses MUST always be present even when there are no arguments passed to the constructor. -->
-    <!-- checked by PSR12.Classes.ClassInstantiation -->
-    <!-- 4.1 Extends and Implements -->
-    <!-- The extends and implements keywords MUST be declared on the same line as the class name. -->
-    <!-- The opening brace for the class MUST go on its own line; the closing brace for the class MUST go on the next line after the body. -->
-    <!-- Opening braces MUST be on their own line and MUST NOT be preceded or followed by a blank line. -->
-    <!-- Closing braces MUST be on their own line and MUST NOT be preceded by a blank line. -->
-    <!-- Lists of implements and, in the case of interfaces, extends MAY be split across multiple lines, where each subsequent line is indented once. When doing so, the first item in the list MUST be on the next line, and there MUST be only one interface per line. -->
+    <rule ref="PSR12.Keywords.ShortFormTypeKeywords"/>
+    <rule ref="PSR12.Files.FileHeader"/>
+    <rule ref="PSR12.Files.ImportStatement"/>
+    <rule ref="PSR12.Namespaces.CompoundNamespaceDepth"/>
+    <rule ref="PSR12.Files.DeclareStatement"/>
+    <rule ref="PSR12.Classes.ClosingBrace"/>
+    <rule ref="PSR12.Classes.ClassInstantiation"/>
     <rule ref="PSR2.Classes.ClassDeclaration"/>
-    <!-- 4.2 Using traits -->
-    <!-- The use keyword used inside the classes to implement traits MUST be declared on the next line after the opening brace. -->
-    <!-- Each individual trait that is imported into a class MUST be included one-per-line and each inclusion MUST have its own use import statement. -->
-    <!-- When the class has nothing after the use import statement, the class closing brace MUST be on the next line after the use import statement. Otherwise, it MUST have a blank line after the use import statement. -->
-    <!-- When using the insteadof and as operators they must be used as follows taking note of indentation, spacing, and new lines. -->
-    <!-- checked by PSR12.Traits.UseDeclaration -->
-    <!-- 4.3 Properties and Constants -->
-    <!-- Visibility MUST be declared on all properties. -->
-    <!-- The var keyword MUST NOT be used to declare a property. -->
-    <!-- There MUST NOT be more than one property declared per statement. -->
-    <!-- Property names MUST NOT be prefixed with a single underscore to indicate protected or private visibility.
-    That is, an underscore prefix explicitly has no meaning. -->
-    <!-- There MUST be a space between type declaration and property name. -->
+    <rule ref="PSR12.Traits.UseDeclaration"/>
     <rule ref="PSR2.Classes.PropertyDeclaration"/>
-    <!-- Visibility MUST be declared on all constants if your project PHP minimum version supports constant visibilities (PHP 7.1 or later). -->
-    <!-- checked by PSR12.Properties.ConstantVisibility -->
-    <!-- 4.4 Methods and Functions -->
-    <!-- Visibility MUST be declared on all methods. -->
+    <rule ref="PSR12.Properties.ConstantVisibility"/>
     <rule ref="Squiz.Scope.MethodScope"/>
     <rule ref="Squiz.WhiteSpace.ScopeKeywordSpacing"/>
-    <!-- Method names MUST NOT be prefixed with a single underscore to indicate protected or private visibility. That is, an underscore prefix explicitly has no meaning. -->
     <rule ref="PSR2.Methods.MethodDeclaration"/>
     <rule ref="PSR2.Methods.MethodDeclaration.Underscore">
@@ -126,13 +62,7 @@
         <message>Method name "%s" must not be prefixed with an underscore to indicate visibility</message>
     </rule>
-    <!-- Method and function names MUST NOT be declared with space after the method name. The opening brace MUST go on its own line, and the closing brace MUST go on the next line following the body. There MUST NOT be a space after the opening parenthesis, and there MUST NOT be a space before the closing parenthesis. -->
     <rule ref="PSR2.Methods.FunctionClosingBrace"/>
     <rule ref="Squiz.Functions.FunctionDeclaration"/>
     <rule ref="Squiz.Functions.LowercaseFunctionKeywords"/>
-    <!-- 4.5 Method and Function Arguments -->
-    <!-- In the argument list, there MUST NOT be a space before each comma, and there MUST be one space after each comma. -->
-    <!-- When using the reference operator & before an argument, there MUST NOT be a space after it. -->
-    <!-- There MUST NOT be a space between the variadic three dot operator and the argument name. -->
-    <!-- When combining both the reference operator and the variadic three dot operator, there MUST NOT be any space between the two of them. -->
     <rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing">
         <properties>
@@ -140,20 +70,9 @@
         </properties>
     </rule>
-    <!-- Method and function arguments with default values MUST go at the end of the argument list. -->
     <rule ref="PEAR.Functions.ValidDefaultValue"/>
-    <!-- Argument lists MAY be split across multiple lines, where each subsequent line is indented once. When doing so, the first item in the list MUST be on the next line, and there MUST be only one argument per line.
-    When the argument list is split across multiple lines, the closing parenthesis and opening brace MUST be placed together on their own line with one space between them. -->
     <rule ref="Squiz.Functions.MultiLineFunctionDeclaration"/>
-    <!-- When you have a return type declaration present, there MUST be one space after the colon followed by the type declaration. The colon and declaration MUST be on the same line as the argument list closing parenthesis with no spaces between the two characters. -->
-    <!-- checked by PSR12.Functions.ReturnTypeDeclaration -->
-    <!-- In nullable type declarations, there MUST NOT be a space between the question mark and the type. -->
-    <!-- checked by PSR12.Functions.NullableTypeDeclaration -->
-    <!-- 4.6 abstract, final, and static -->
-    <!-- When present, the abstract and final declarations MUST precede the visibility declaration. -->
-    <!-- When present, the static declaration MUST come after the visibility declaration. -->
-    <!-- checked by PSR2.Methods.MethodDeclaration included above -->
-    <!-- 4.7 Method and Function Calls -->
-    <!-- When making a method or function call, there MUST NOT be a space between the method or function name and the opening parenthesis, there MUST NOT be a space after the opening parenthesis, and there MUST NOT be a space before the closing parenthesis. In the argument list, there MUST NOT be a space before each comma, and there MUST be one space after each comma. -->
-    <!-- Argument lists MAY be split across multiple lines, where each subsequent line is indented once. When doing so, the first item in the list MUST be on the next line, and there MUST be only one argument per line. A single argument being split across multiple lines (as might be the case with an anonymous function or array) does not constitute splitting the argument list itself. -->
+    <rule ref="PSR12.Functions.ReturnTypeDeclaration"/>
+    <rule ref="PSR12.Functions.NullableTypeDeclaration"/>
+    <rule ref="PSR2.Methods.MethodDeclaration"/>
     <rule ref="Generic.Functions.FunctionCallArgumentSpacing"/>
     <rule ref="PSR2.Methods.FunctionCallSignature"/>
@@ -164,14 +83,4 @@
         <severity>0</severity>
     </rule>
-    <!-- 5. Control Structures -->
-    <!-- The general style rules for control structures are as follows:
-    There MUST be one space after the control structure keyword
-    There MUST NOT be a space after the opening parenthesis
-    There MUST NOT be a space before the closing parenthesis
-    There MUST be one space between the closing parenthesis and the opening brace
-    The structure body MUST be indented once
-    The body MUST be on the next line after the opening brace
-    The closing brace MUST be on the next line after the body
-    The body of each structure MUST be enclosed by braces. This standardizes how the structures look and reduces the likelihood of introducing errors as new lines get added to the body. -->
     <rule ref="Squiz.ControlStructures.ControlSignature"/>
     <rule ref="Squiz.WhiteSpace.ControlStructureSpacing.SpacingAfterOpen"/>
@@ -192,41 +101,11 @@
     <rule ref="Squiz.ControlStructures.LowercaseDeclaration"/>
     <rule ref="Generic.ControlStructures.InlineControlStructure"/>
-    <!-- exclude this message as it is already checked in Generic.PHP.LowerCaseKeyword -->
     <rule ref="Squiz.ControlStructures.ForEachLoopDeclaration.AsNotLower">
         <severity>0</severity>
     </rule>
-    <!-- 5.1 if, elseif, else -->
-    <!-- else and elseif are on the same line as the closing brace from the earlier body. -->
-    <!-- checked by Squiz.ControlStructures.ControlSignature included above -->
-    <!-- The keyword elseif SHOULD be used instead of else if so that all control keywords look like single words. -->
     <rule ref="PSR2.ControlStructures.ElseIfDeclaration"/>
-    <!-- Expressions in parentheses MAY be split across multiple lines, where each subsequent line is indented at least once. When doing so, the first condition MUST be on the next line. The closing parenthesis and opening brace MUST be placed together on their own line with one space between them. Boolean operators between conditions MUST always be at the beginning or at the end of the line, not a mix of both. -->
-    <!-- checked by PSR12.ControlStructures.ControlStructureSpacing -->
-    <!-- checked by PSR12.ControlStructures.BooleanOperatorPlacement -->
-    <!-- checked by Squiz.ControlStructures.ControlSignature -->
-    <!-- 5.2 switch, case -->
-    <!-- The case statement MUST be indented once from switch, and the break keyword (or other terminating keywords) MUST be indented at the same level as the case body. There MUST be a comment such as // no break when fall-through is intentional in a non-empty case body. -->
+    <rule ref="PSR12.ControlStructures.ControlStructureSpacing"/>
+    <rule ref="PSR12.ControlStructures.BooleanOperatorPlacement"/>
     <rule ref="PSR2.ControlStructures.SwitchDeclaration"/>
-    <!-- Expressions in parentheses MAY be split across multiple lines, where each subsequent line is indented at least once. When doing so, the first condition MUST be on the next line. The closing parenthesis and opening brace MUST be placed together on their own line with one space between them. Boolean operators between conditions MUST always be at the beginning or at the end of the line, not a mix of both. -->
-    <!-- checked by PSR12.ControlStructures.ControlStructureSpacing -->
-    <!-- checked by PSR12.ControlStructures.BooleanOperatorPlacement -->
-    <!-- checked by Squiz.ControlStructures.ControlSignature -->
-    <!-- 5.3.1 while -->
-    <!-- Expressions in parentheses MAY be split across multiple lines, where each subsequent line is indented at least once. When doing so, the first condition MUST be on the next line. The closing parenthesis and opening brace MUST be placed together on their own line with one space between them. Boolean operators between conditions MUST always be at the beginning or at the end of the line, not a mix of both. -->
-    <!-- checked by PSR12.ControlStructures.ControlStructureSpacing -->
-    <!-- checked by PSR12.ControlStructures.BooleanOperatorPlacement -->
-    <!-- checked by Squiz.ControlStructures.ControlSignature -->
-    <!-- 5.3.2 do while -->
-    <!-- Expressions in parentheses MAY be split across multiple lines, where each subsequent line is indented at least once. When doing so, the first condition MUST be on the next line. Boolean operators between conditions MUST always be at the beginning or at the end of the line, not a mix of both. -->
-    <!-- checked by PSR12.ControlStructures.ControlStructureSpacing -->
-    <!-- checked by PSR12.ControlStructures.BooleanOperatorPlacement -->
-    <!-- checked by Squiz.ControlStructures.ControlSignature -->
-    <!-- 5.4 for -->
-    <!-- Expressions in parentheses MAY be split across multiple lines, where each subsequent line is indented at least once. When doing so, the first expression MUST be on the next line. The closing parenthesis and opening brace MUST be placed together on their own line with one space between them. -->
-    <!-- checked by PSR12.ControlStructures.ControlStructureSpacing -->
-    <!-- checked by PSR12.ControlStructures.BooleanOperatorPlacement -->
-    <!-- checked by Squiz.ControlStructures.ControlSignature -->
-    <!-- 5.5 foreach -->
-    <!-- exclude these messages as they are already checked by PSR2.ControlStructures.ControlStructureSpacing -->
     <rule ref="Squiz.ControlStructures.ForEachLoopDeclaration.SpaceAfterOpen">
         <severity>0</severity>
@@ -235,34 +114,9 @@
         <severity>0</severity>
     </rule>
-    <!-- 5.6 try, catch, finally -->
-    <!-- 6. Operators -->
-    <!-- When space is permitted around an operator, multiple spaces MAY be used for readability purposes. -->
-    <!-- All operators not described here are left undefined. -->
-    <!-- 6.1. Unary operators -->
-    <!-- The increment/decrement operators MUST NOT have any space between the operator and operand. -->
     <rule ref="Generic.WhiteSpace.IncrementDecrementSpacing"/>
-    <!-- Type casting operators MUST NOT have any space within the parentheses. -->
     <rule ref="Squiz.WhiteSpace.CastSpacing"/>
-    <!-- 6.2. Binary operators -->
-    <!-- All binary arithmetic, comparison, assignment, bitwise, logical, string, and type operators MUST be preceded and followed by at least one space. -->
-    <!-- checked by PSR12.Operators.OperatorSpacing -->
-    <!-- 6.3. Ternary operators -->
-    <!-- The conditional operator, also known simply as the ternary operator, MUST be preceded and followed by at least one space around both the ? and : characters. -->
-    <!-- When the middle operand of the conditional operator is omitted, the operator MUST follow the same style rules as other binary comparison operators. -->
-    <!-- checked by PSR12.Operators.OperatorSpacing -->
-    <!-- 7. Closures -->
-    <!-- Closures MUST be declared with a space after the function keyword, and a space before and after the use keyword. -->
-    <!-- The opening brace MUST go on the same line, and the closing brace MUST go on the next line following the body. -->
-    <!-- There MUST NOT be a space after the opening parenthesis of the argument list or variable list, and there MUST NOT be a space before the closing parenthesis of the argument list or variable list. -->
-    <!-- In the argument list and variable list, there MUST NOT be a space before each comma, and there MUST be one space after each comma. -->
-    <!-- Closure arguments with default values MUST go at the end of the argument list. -->
-    <!-- Argument lists and variable lists MAY be split across multiple lines, where each subsequent line is indented once. When doing so, the first item in the list MUST be on the next line, and there MUST be only one argument or variable per line. -->
-    <!-- When the ending list (whether of arguments or variables) is split across multiple lines, the closing parenthesis and opening brace MUST be placed together on their own line with one space between them. -->
-    <!-- checked by Squiz.Functions.MultiLineFunctionDeclaration -->
-    <!-- If a return type is present, it MUST follow the same rules as with normal functions and methods; if the use keyword is present, the colon MUST follow the use list closing parentheses with no spaces between the two characters. -->
-    <!-- checked by PSR12.Functions.ReturnTypeDeclaration -->
-    <!-- 8. Anonymous Classes -->
-    <!-- Anonymous Classes MUST follow the same guidelines and principles as closures in the above section. -->
-    <!-- The opening brace MAY be on the same line as the class keyword so long as the list of implements interfaces does not wrap. If the list of interfaces wraps, the brace MUST be placed on the line immediately following the last interface. -->
-    <!-- checked by PSR12.Classes.AnonClassDeclaration -->
+    <rule ref="PSR12.Operators.OperatorSpacing"/>
+    <rule ref="PSR12.Operators.OperatorSpacing"/>
+    <rule ref="PSR12.Functions.ReturnTypeDeclaration"/>
+    <rule ref="PSR12.Classes.AnonClassDeclaration"/>
 </ruleset>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpmd.xml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpmd.xml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpmd.xml	(revision 8504)
@@ -7,7 +7,14 @@
          xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
     <description>Custom rule sets that checks your PHP code.</description>
-    <rule ref="rulesets/unusedcode.xml"/>
-    <rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
-    <rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>
+    <rule ref="rulesets/unusedcode.xml">
+        <exclude name="UnusedLocalVariable" />
+    </rule>
+    <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable">
+        <properties>
+            <property name="exceptions" value="_" />
+        </properties>
+    </rule>
+    <!--<rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>
+    <rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>-->
 </ruleset>
 
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpstan.neon
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpstan.neon	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpstan.neon	(revision 8504)
@@ -3,7 +3,10 @@
         - ../src
         - ../tests
-    level: 5
+    level: 3
     treatPhpDocTypesAsCertain: false
-    checkMissingIterableValueType: false
     excludePaths:
         - ../src/entities/*
+        - ../src/codelistsenum/*
+        - ../tests/testcases/issues/Issue32Test.php
+        - ../src/quick/ZugferdQuickDescriptor.php
+        - ../tests/traits/HandlesXmlTests.php
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpunit.xml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpunit.xml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/build/phpunit.xml	(revision 8504)
@@ -15,11 +15,11 @@
         </testsuite>
         <testsuite name="Reader">
-            <file>../tests/testcases/ReaderBasicSimpleTest.php</file>
-            <file>../tests/testcases/ReaderEn16931SimpleTest.php</file>
+            <file>../tests/testcases/ReaderBasicTest.php</file>
+            <file>../tests/testcases/ReaderEn16931Test.php</file>
             <file>../tests/testcases/ReaderEn16931AllowanceChargeTest.php</file>
             <file>../tests/testcases/ReaderEn16931Bank1Test.php</file>
             <file>../tests/testcases/ReaderExtendedTest.php</file>
             <file>../tests/testcases/ReaderExtended2Test.php</file>
-            <file>../tests/testcases/ReaderXRechnungSimpleTest.php</file>
+            <file>../tests/testcases/ReaderXRechnungTest.php</file>
             <file>../tests/testcases/ReaderXRechnungAttachedBinaryObjectTest.php</file>
         </testsuite>
@@ -29,16 +29,23 @@
             <file>../tests/testcases/BuilderExtendedTest.php</file>
         </testsuite>
+        <testsuite name="ProfileConverter">
+            <file>../tests/testcases/ProfileConverterTest.php</file>
+        </testsuite>
         <testsuite name="PDFReader">
-            <file>../tests/testcases/PdfReaderMinimumSimpleTest.php</file>
+            <file>../tests/testcases/PdfReaderGeneralTest.php</file>
+            <file>../tests/testcases/PdfReaderMinimumTest.php</file>
+            <file>../tests/testcases/PdfReaderEn16931Test.php</file>
             <file>../tests/testcases/PdfReaderEn16931AllowanceChargeTest.php</file>
-            <file>../tests/testcases/PdfReaderEn16931SimpleTest.php</file>
             <file>../tests/testcases/PdfReaderExtendedTest.php</file>
             <file>../tests/testcases/PdfReaderExtended2Test.php</file>
-            <file>../tests/testcases/PdfReaderXRechnungSimpleTest.php</file>
-            <file>../tests/testcases/PdfReaderInvalidTest.php</file>
+            <file>../tests/testcases/PdfReaderXRechnungTest.php</file>
             <file>../tests/testcases/PdfReaderMultipleAttachmentsTest.php</file>
+            <file>../tests/testcases/PdfReaderExtGeneralTest.php</file>
         </testsuite>
         <testsuite name="PDFBuilder">
             <file>../tests/testcases/PdfBuilderEn16931Test.php</file>
+        </testsuite>
+        <testsuite name="PDFMerger">
+            <file>../tests/testcases/PdfMergerTest.php</file>
         </testsuite>
         <testsuite name="Validator">
@@ -54,4 +61,9 @@
             <file>../tests/testcases/issues/Issue32Test.php</file>
             <file>../tests/testcases/issues/Issue43Test.php</file>
+            <file>../tests/testcases/issues/Issue104Test.php</file>
+            <file>../tests/testcases/issues/Issue113Test.php</file>
+            <file>../tests/testcases/issues/Issue206Test.php</file>
+            <file>../tests/testcases/issues/Issue268Test.php</file>
+            <file>../tests/testcases/issues/Issue270Test.php</file>
         </testsuite>
     </testsuites>
@@ -62,5 +74,5 @@
         <exclude>
             <directory suffix=".php">../src/codelists</directory>
-            <directory suffix=".php">../src/entities</directory>
+            <directory suffix=".php">../src/codelistsenum</directory>
             <directory suffix=".php">../src/exception</directory>
             <file>../src/ZugferdProfiles.php</file>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/composer.json
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/composer.json	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/composer.json	(revision 8504)
@@ -20,9 +20,5 @@
     "autoload": {
         "psr-4": {
-            "horstoeko\\zugferd\\": "src",
-            "horstoeko\\zugferd\\rsm\\": "src/entities/rsm",
-            "horstoeko\\zugferd\\qdt\\": "src/entities/qdt",
-            "horstoeko\\zugferd\\ram\\": "src/entities/ram",
-            "horstoeko\\zugferd\\udt\\": "src/entities/udt"
+            "horstoeko\\zugferd\\": "src"
         }
     },
@@ -33,16 +29,17 @@
     },
     "require": {
-        "php": "^7.3|^7.4|^8",
+        "php": ">=7.3",
+        "ext-simplexml": "*",
+        "goetas-webservices/xsd2php-runtime": "^0.2.13",
+        "horstoeko/mimedb": "^1",
+        "horstoeko/stringmanagement": "^1",
         "jms/serializer": "^3",
-        "goetas-webservices/xsd2php-runtime": "^0.2.13",
-        "ext-simplexml": "*",
-        "symfony/validator": "^5|^6|^7",
-        "smalot/pdfparser": "^0|^2",
         "setasign/fpdf": "^1",
         "setasign/fpdi": "^2",
-        "symfony/yaml": "^5|^6|^7",
+        "smalot/pdfparser": "^0|^2",
+        "symfony/finder": "^5|^6|^7",
         "symfony/process": "^5|^6|^7",
-        "horstoeko/stringmanagement": "^1",
-        "horstoeko/mimedb": "^1"
+        "symfony/validator": "^5|^6|^7",
+        "symfony/yaml": "^5|^6|^7"
     },
     "require-dev": {
@@ -50,8 +47,10 @@
         "nette/php-generator": "*",
         "pdepend/pdepend": "^2",
+        "phpdocumentor/reflection-docblock": "^5",
         "phploc/phploc": "^7",
         "phpmd/phpmd": "^2",
-        "phpstan/phpstan": "^1.8",
+        "phpstan/phpstan": "^1|^2",
         "phpunit/phpunit": "^9",
+        "rector/rector": "*",
         "sebastian/phpcpd": "^6",
         "squizlabs/php_codesniffer": "^3"
@@ -60,14 +59,20 @@
         "tests": "./vendor/bin/phpunit ./tests/",
         "testsreal": "./vendor/bin/phpunit --configuration ./build/phpunit.xml",
-        "phpcs": "./vendor/bin/phpcs --standard=./build/phpcsrules.xml --extensions=php --ignore=autoload.php ./src ./tests",
-        "phpcs12": "./vendor/bin/phpcs --standard=./build/phpcsrules_psr12.xml --extensions=php --ignore=autoload.php ./src ./tests",
-        "phpcbf": "./vendor/bin/phpcbf -q ./src ./tests",
-        "phpcbf1": "./vendor/bin/phpcbf --standard=./build/phpcsrules_psr1.xml -q ./src ./tests",
-        "phpcbf2": "./vendor/bin/phpcbf --standard=./build/phpcsrules_psr2.xml -q ./src ./tests",
-        "phpcbf12": "./vendor/bin/phpcbf --standard=./build/phpcsrules_psr12.xml -q ./src ./tests",
-        "phpcbfsq": "./vendor/bin/phpcbf --standard=./build/phpcsrules_squiz.xml -q ./src ./tests",
-        "phpstan": "./vendor/bin/phpstan analyze -c ./build/phpstan.neon --autoload-file=vendor/autoload.php --no-interaction --no-progress --xdebug",
-        "phpstan_cs": "./vendor/bin/phpstan analyze -c ./build/phpstan.neon --autoload-file=vendor/autoload.php --no-interaction --no-progress --error-format=checkstyle --xdebug",
-        "makedoc": "phing -f ./build.xml projectdoc"
+        "phpcs": "./vendor/bin/phpcs --standard=./build/phpcsrules.xml --extensions=php --ignore=autoload.php,./src/entities ./src ./tests",
+        "phpcs12": "./vendor/bin/phpcs --standard=./build/phpcsrules_psr12.xml --extensions=php --ignore=autoload.php,./src/entities ./src ./tests",
+        "phpcbf": "./vendor/bin/phpcbf -q --extensions=php --ignore=autoload.php,./src/entities ./src ./tests",
+        "phpcbf1": "./vendor/bin/phpcbf --standard=./build/phpcsrules_psr1.xml -q --extensions=php --ignore=autoload.php,./src/entities ./src ./tests",
+        "phpcbf2": "./vendor/bin/phpcbf --standard=./build/phpcsrules_psr2.xml -q --extensions=php --ignore=autoload.php,./src/entities ./src ./tests",
+        "phpcbf12": "./vendor/bin/phpcbf --standard=./build/phpcsrules_psr12.xml -q --extensions=php --ignore=autoload.php,./src/entities ./src ./tests",
+        "phpcbfsq": "./vendor/bin/phpcbf --standard=./build/phpcsrules_squiz.xml -q --extensions=php --ignore=autoload.php,./src/entities ./src ./tests",
+        "phpstan": "./vendor/bin/phpstan analyze -c ./build/phpstan.neon --autoload-file=vendor/autoload.php --no-interaction --no-progress",
+        "phpstan_cs": "./vendor/bin/phpstan analyze -c ./build/phpstan.neon --autoload-file=vendor/autoload.php --no-interaction --no-progress --error-format=checkstyle",
+        "makedoc": "phing -f ./build.xml projectdoc",
+        "checkstyle": [
+            "Composer\\Config::disableProcessTimeout",
+            "vendor/bin/phpcs --report=checkstyle --report-file=build/logs/checkstyle.xml --standard=build/phpcsrules_psr12.xml --extensions=php --ignore=autoload.php,./src/entities src tests",
+            "vendor/bin/phpstan analyze -c build/phpstan.neon --autoload-file=vendor/autoload.php --no-interaction --no-progress --error-format=checkstyle > build/logs/checkstyle_phpstan.xml"
+        ],
+        "rector": "vendor/bin/rector --config=./build/phprectorconfig.php"
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/make/gencodelists.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/make/gencodelists.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/make/gencodelists.php	(revision 8504)
@@ -3,6 +3,7 @@
 use horstoeko\stringmanagement\PathUtils;
 
-require dirname(__FILE__) . "/../vendor/autoload.php";
-
+require __DIR__ . "/../vendor/autoload.php";
+
+define('DOWNLOADDEF_KEY_ENABLED', 'enabled');
 define('DOWNLOADDEF_LIB_NAME', 'libname');
 define('DOWNLOADDEF_LIB_TITLE', 'libtitle');
@@ -15,6 +16,7 @@
 define('DOWNLOADDEF_KEY_TITLE_LIST', 'titlelist');
 define('DOWNLOADDEF_KEY_SHORTIDENTIFIERS', 'shortidentifiers');
+define('DOWNLOADDEF_KEY_SHORTIDENTIFIERS_LENGTH', 'shortidentifierslength');
 define('DOWNLOADDEF_KEY_ADDMETHODS', 'addmethods');
-define('DOWNLOADDEF_KEY_ADDMETHODS_DEFAULT', true);
+define('DOWNLOADDEF_KEY_ADDMETHODS_DEFAULT', false);
 define('DOWNLOADDEF_KEY_DATA_CODEINDEX', 'codeindex');
 define('DOWNLOADDEF_KEY_DATA_DESCINDEX', 'descindex');
@@ -45,7 +47,6 @@
     $str = str_replace("Ã€", "ae", $str);
     $str = str_replace("ÃŒ", "ue", $str);
-    $str = str_replace("Ã
+    return str_replace("Ã
 ", "A", $str);
-    return $str;
 }
 
@@ -63,6 +64,5 @@
     $str = str_replace("\t", "", $str);
     $str = preg_replace('/\s+/', ' ', $str);
-    $str = wordwrap($str);
-    return $str;
+    return wordwrap($str);
 }
 
@@ -72,7 +72,8 @@
  * @param  string  $str
  * @param  boolean $shortIdentifier
+ * @param  integer $partLength
  * @return string
  */
-function strIdentifier(string $str, bool $shortIdentifier): string
+function strIdentifier(string $str, bool $shortIdentifier, int $partLength = 4): string
 {
     $strNew = "";
@@ -83,4 +84,5 @@
     $str = strtoupper($str);
     $str = preg_replace("/[^A-Za-z0-9\s]/", "", $str);
+
     $strArray = explode(" ", $str);
     if (count($strArray) == 1) {
@@ -88,9 +90,10 @@
     } else {
         foreach ($strArray as $item) {
-            if ($strNew != "") {
+            if ($strNew !== "") {
                 $strNew .= "_";
             }
+
             if ($shortIdentifier) {
-                $strNew .= substr($item, 0, 4);
+                $strNew .= substr($item, 0, $partLength);
             } else {
                 $strNew .= $item;
@@ -98,8 +101,8 @@
         }
     }
+
     $strNew = preg_replace('/__+/', '_', $strNew);
     $strNew = preg_replace('~\d~', '', $strNew, 5);
-    $strNew = rtrim(ltrim($strNew, "_"), "_");
-    return $strNew;
+    return rtrim(ltrim($strNew, "_"), "_");
 }
 
@@ -117,6 +120,5 @@
     $str = str_replace("\r", " ", $str);
     $str = str_replace("\t", " ", $str);
-    $str = preg_replace('/\s+/', ' ', $str);
-    return $str;
+    return preg_replace('/\s+/', ' ', $str);
 }
 
@@ -155,14 +157,11 @@
         }
 
-        $ch = curl_init();
-        curl_setopt($ch, CURLOPT_URL, $downloadFromUrl);
-        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0");
-        curl_setopt($ch, CURLOPT_HEADER, 0);
-        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
-        $output = curl_exec($ch);
-        curl_close($ch);
-
-        if (file_put_contents($saveToFile, $output) === false) {
+        $downloadedContent = file_get_contents($downloadFromUrl);
+
+        if ($downloadedContent=== false) {
+            throw new \Exception('Failed to download the file.');
+        }
+
+        if (file_put_contents($saveToFile, $downloadedContent) === false) {
             throw new \Exception('Failed saved the downloaded file.');
         }
@@ -192,13 +191,15 @@
     // Define some internal variables
 
+    $classGenerationEnabled = $fileToDownload[DOWNLOADDEF_KEY_ENABLED] ?? false;
     $classNamespace = $fileToDownload[DOWNLOADDEF_KEY_CLASSNAMESPACE];
     $className = $fileToDownload[DOWNLOADDEF_KEY_CLASSNAME];
-    $classDir = PathUtils::combineAllPaths(dirname(__FILE__), "classes");
+    $classDir = PathUtils::combineAllPaths(__DIR__, "classes");
     $classTitle = $fileToDownload[DOWNLOADDEF_KEY_TITLE];
     $classTitleList = $fileToDownload[DOWNLOADDEF_KEY_TITLE_LIST];
-    $classHomepageUrls = !is_array($fileToDownload[DOWNLOADDEF_KEY_URL_HP]) ? [$fileToDownload[DOWNLOADDEF_KEY_URL_HP]] : $fileToDownload[DOWNLOADDEF_KEY_URL_HP];
+    $classHomepageUrls = is_array($fileToDownload[DOWNLOADDEF_KEY_URL_HP]) ? $fileToDownload[DOWNLOADDEF_KEY_URL_HP] : [$fileToDownload[DOWNLOADDEF_KEY_URL_HP]];
     $classShortIdentifiers = $fileToDownload[DOWNLOADDEF_KEY_SHORTIDENTIFIERS];
+    $classShortIdentifiersLength = $fileToDownload[DOWNLOADDEF_KEY_SHORTIDENTIFIERS_LENGTH] ?? 4;
     $classFilename = PathUtils::combinePathWithFile($classDir, sprintf('%s.php', $className));
-    $classConstantPrefixes = !is_array($fileToDownload[DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX]) ? [$fileToDownload[DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX]] : $fileToDownload[DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX];
+    $classConstantPrefixes = is_array($fileToDownload[DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX]) ? $fileToDownload[DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX] : [$fileToDownload[DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX]];
 
     $dataCodeIndex = $fileToDownload[DOWNLOADDEF_KEY_DATA_CODEINDEX] ?? 0;
@@ -209,4 +210,15 @@
     $libName = $fileToDownload[DOWNLOADDEF_LIB_NAME];
     $libTitle = $fileToDownload[DOWNLOADDEF_LIB_TITLE];
+
+    // Check enabled
+
+    if ($classGenerationEnabled !== true) {
+        outputline(sprintf("Generating class %s is disabled", $className));
+        return;
+    }
+
+    // Logging
+
+    outputline(sprintf("Generating class %s", $className));
 
     // Check destination directory
@@ -256,5 +268,5 @@
         foreach ($downloadedContentObjectData as $line) {
             $phpClass
-                ->addConstant(sprintf('%s%s', $constantPrefix, strIdentifier($line[$dataDescIndex], $classShortIdentifiers)), $line[$dataCodeIndex])
+                ->addConstant(sprintf('%s%s', $constantPrefix, strIdentifier($line[$dataDescIndex], $classShortIdentifiers, $classShortIdentifiersLength)), $line[$dataCodeIndex])
                 ->addComment("\n" . (strComment($line[$dataDescIndex] ?? "")) . " (" . (strComment($line[$dataCodeIndex] ?? "")) . ")")
                 ->addComment("\n" . strComment($line[$dataDescLongIndex] ?? ($line[$dataDescIndex] ?? "")));
@@ -290,5 +302,5 @@
 
             foreach ($downloadedContentObjectData as $line) {
-                $phpClassMethod->addBody(sprintf("    static::%s%s,", $constantPrefix, strIdentifier($line[$dataDescIndex], $classShortIdentifiers)));
+                $phpClassMethod->addBody(sprintf("    static::%s%s,", $constantPrefix, strIdentifier($line[$dataDescIndex], $classShortIdentifiers, $classShortIdentifiersLength)));
             }
         }
@@ -321,5 +333,5 @@
 
             foreach ($downloadedContentObjectData as $line) {
-                $phpClassMethod->addBody(sprintf("    static::%s%s => '%s',", $constantPrefix, strIdentifier($line[$dataDescIndex], $classShortIdentifiers), strDesc($line[$dataDescIndex])));
+                $phpClassMethod->addBody(sprintf("    static::%s%s => '%s',", $constantPrefix, strIdentifier($line[$dataDescIndex], $classShortIdentifiers, $classShortIdentifiersLength), strDesc($line[$dataDescIndex])));
             }
         }
@@ -365,4 +377,227 @@
 }
 
+
+/**
+ * Create a code class
+ *
+ * @return void
+ */
+function createCodeClassFromCsv(array $fileToDownload): void
+{
+    // Define some internal variables
+
+    $classGenerationEnabled = $fileToDownload[DOWNLOADDEF_KEY_ENABLED] ?? false;
+    $classNamespace = $fileToDownload[DOWNLOADDEF_KEY_CLASSNAMESPACE];
+    $className = $fileToDownload[DOWNLOADDEF_KEY_CLASSNAME];
+    $classDir = PathUtils::combineAllPaths(__DIR__, "classes");
+    $classTitle = $fileToDownload[DOWNLOADDEF_KEY_TITLE];
+    $classTitleList = $fileToDownload[DOWNLOADDEF_KEY_TITLE_LIST];
+    $classHomepageUrls = is_array($fileToDownload[DOWNLOADDEF_KEY_URL_HP]) ? $fileToDownload[DOWNLOADDEF_KEY_URL_HP] : [$fileToDownload[DOWNLOADDEF_KEY_URL_HP]];
+    $classShortIdentifiers = $fileToDownload[DOWNLOADDEF_KEY_SHORTIDENTIFIERS];
+    $classShortIdentifiersLength = $fileToDownload[DOWNLOADDEF_KEY_SHORTIDENTIFIERS_LENGTH] ?? 4;
+    $classFilename = PathUtils::combinePathWithFile($classDir, sprintf('%s.php', $className));
+    $classConstantPrefixes = is_array($fileToDownload[DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX]) ? $fileToDownload[DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX] : [$fileToDownload[DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX]];
+
+    $dataCodeIndex = $fileToDownload[DOWNLOADDEF_KEY_DATA_CODEINDEX] ?? 0;
+    $dataDescIndex = $fileToDownload[DOWNLOADDEF_KEY_DATA_DESCINDEX] ?? 1;
+    $dataDescLongIndex = $fileToDownload[DOWNLOADDEF_KEY_DATA_DESCLONGINDEX] ?? 2;
+    $dataSortIndex = $fileToDownload[DOWNLOADDEF_KEY_DATA_SORTINDEX] ?? ($fileToDownload[DOWNLOADDEF_KEY_DATA_CODEINDEX] ?? 0);
+
+    $libName = $fileToDownload[DOWNLOADDEF_LIB_NAME];
+    $libTitle = $fileToDownload[DOWNLOADDEF_LIB_TITLE];
+
+    // Check enabled
+
+    if ($classGenerationEnabled !== true) {
+        outputline(sprintf("Generating class %s is disabled", $className));
+        return;
+    }
+
+    // Logging
+
+    outputline(sprintf("Generating class %s", $className));
+
+    // Check destination directory
+
+    if (!is_file($classDir)) {
+        @mkdir($classDir);
+    }
+
+    // Remove existing class file
+
+    if (file_exists($classFilename)) {
+        @unlink($classFilename);
+    }
+
+    // Create PHP Printer
+
+    $phpPrinter = new Nette\PhpGenerator\Printer;
+
+    // Create PHP File
+
+    $phpFile = new Nette\PhpGenerator\PhpFile;
+    $phpFile->addComment(sprintf("This file is a part of horstoeko/%s.\n\nFor the full copyright and license information, please view the LICENSE\nfile that was distributed with this source code.", $libName));
+
+    // Create PHP Class
+
+    $phpClass = $phpFile->addNamespace($classNamespace)->addClass($className);
+    $phpClass->addComment(sprintf("Class representing %s\nName of list: %s\n\n@category %s\n@package  %s\n@author   D. Erling <horstoeko@erling.com.de>\n@license  https://opensource.org/licenses/MIT MIT\n@link     https://github.com/horstoeko/zugferd", $classTitle, $classTitleList, $libTitle, $libTitle));
+    foreach ($classHomepageUrls as $classHomepageUrl) {
+        $phpClass->addComment(sprintf("@see      %s", $classHomepageUrl));
+    }
+
+    // Fill PHP Class
+
+    foreach ($fileToDownload[DOWNLOADDEF_KEY_TOFILE] as $idx => $dummy) {
+        $downloadedContentObjectData = [];
+
+        if (($handle = fopen($fileToDownload[DOWNLOADDEF_KEY_TOFILE][$idx], "r")) !== false) {
+            while (($row = fgetcsv($handle, null, "|")) !== false) {
+                $downloadedContentObjectData[] = $row;
+            }
+            
+            fclose($handle);
+        } else {
+            echo "Die Datei konnte nicht geÃ¶ffnet werden.";
+        }
+
+        $constantPrefix = $classConstantPrefixes[$idx] ?? "";
+
+        usort(
+            $downloadedContentObjectData,
+            function ($a, $b) use ($dataSortIndex) {
+                return strcasecmp($a[$dataSortIndex], $b[$dataSortIndex]);
+            }
+        );
+
+        foreach ($downloadedContentObjectData as $line) {
+            $phpClass
+                ->addConstant(sprintf('%s%s', $constantPrefix, strIdentifier($line[$dataDescIndex], $classShortIdentifiers, $classShortIdentifiersLength)), $line[$dataCodeIndex])
+                ->addComment("\n" . (strComment($line[$dataDescIndex] ?? "")) . " (" . (strComment($line[$dataCodeIndex] ?? "")) . ")")
+                ->addComment("\n" . strComment($line[$dataDescLongIndex] ?? ($line[$dataDescIndex] ?? "")));
+        }
+    }
+
+    // Should methods be added
+
+    if ($fileToDownload[DOWNLOADDEF_KEY_ADDMETHODS] === true) {
+        // Add method which returns a list of all codes to generated class
+
+        $phpClassMethod = $phpClass->addMethod('getAllCodes');
+        $phpClassMethod->setFinal();
+        $phpClassMethod->setStatic();
+        $phpClassMethod->setReturnType('array');
+        $phpClassMethod->addComment("Returns an array of all available codes\n");
+        $phpClassMethod->addComment("@return array");
+        $phpClassMethod->addComment("@codeCoverageIgnore");
+        $phpClassMethod->addBody('return [');
+
+        foreach ($fileToDownload[DOWNLOADDEF_KEY_TOFILE] as $idx => $dummy) {
+            $downloadedContentObjectData = [];
+
+            if (($handle = fopen($fileToDownload[DOWNLOADDEF_KEY_TOFILE][$idx], "r")) !== false) {
+                while (($row = fgetcsv($handle, null, "|")) !== false) {
+                    $downloadedContentObjectData[] = $row;
+                }
+                
+                fclose($handle);
+            } else {
+                echo "Die Datei konnte nicht geÃ¶ffnet werden.";
+            }
+
+            $constantPrefix = $classConstantPrefixes[$idx] ?? "";
+
+            usort(
+                $downloadedContentObjectData,
+                function ($a, $b) use ($dataSortIndex) {
+                    return strcasecmp($a[$dataSortIndex], $b[$dataSortIndex]);
+                }
+            );
+
+            foreach ($downloadedContentObjectData as $line) {
+                $phpClassMethod->addBody(sprintf("    static::%s%s,", $constantPrefix, strIdentifier($line[$dataDescIndex], $classShortIdentifiers, $classShortIdentifiersLength)));
+            }
+        }
+
+        $phpClassMethod->addBody('];');
+
+        // Add method which returns an associate array for code => description
+
+        $phpClassMethod = $phpClass->addMethod('getAllCodeDescriptions');
+        $phpClassMethod->setFinal();
+        $phpClassMethod->setStatic();
+        $phpClassMethod->setReturnType('array');
+        $phpClassMethod->addComment("Returns an array of code descriptions indexed by code\n");
+        $phpClassMethod->addComment("@return array");
+        $phpClassMethod->addComment("@codeCoverageIgnore");
+        $phpClassMethod->addBody('return [');
+
+        foreach ($fileToDownload[DOWNLOADDEF_KEY_TOFILE] as $idx => $dummy) {
+            $downloadedContentObjectData = [];
+
+            if (($handle = fopen($fileToDownload[DOWNLOADDEF_KEY_TOFILE][$idx], "r")) !== false) {
+                while (($row = fgetcsv($handle, null, "|")) !== false) {
+                    $downloadedContentObjectData[] = $row;
+                }
+                
+                fclose($handle);
+            } else {
+                echo "Die Datei konnte nicht geÃ¶ffnet werden.";
+            }
+
+            $constantPrefix = $classConstantPrefixes[$idx] ?? "";
+
+            usort(
+                $downloadedContentObjectData,
+                function ($a, $b) use ($dataSortIndex) {
+                    return strcasecmp($a[$dataSortIndex], $b[$dataSortIndex]);
+                }
+            );
+
+            foreach ($downloadedContentObjectData as $line) {
+                $phpClassMethod->addBody(sprintf("    static::%s%s => '%s',", $constantPrefix, strIdentifier($line[$dataDescIndex], $classShortIdentifiers, $classShortIdentifiersLength), strDesc($line[$dataDescIndex])));
+            }
+        }
+
+        $phpClassMethod->addBody('];');
+
+        // Add method which returns an boolean true when code exists otherwise false
+
+        $phpClassMethod = $phpClass->addMethod('checkCodeExists');
+        $phpClassMethod->setFinal();
+        $phpClassMethod->setStatic();
+        $phpClassMethod->setReturnType('bool');
+        $phpClassMethod->addComment("Returns true if a code exists in the list, otherwise false\n");
+        $phpClassMethod->addComment("@param string \$code");
+        $phpClassMethod->addComment("@return boolean");
+        $phpClassMethod->addComment("@codeCoverageIgnore");
+        $phpClassMethod->addParameter('code')->setType("string");
+        $phpClassMethod->addBody('return isset(static::getAllCodes()[$code]);');
+
+        // Add method which returns the description of a code
+
+        $phpClassMethod = $phpClass->addMethod('getCodeDescription');
+        $phpClassMethod->setFinal();
+        $phpClassMethod->setStatic();
+        $phpClassMethod->setReturnType('string');
+        $phpClassMethod->addComment("Returns the description of a code. If code is not found an empty string is returned\n");
+        $phpClassMethod->addComment("@param string \$code");
+        $phpClassMethod->addComment("@return string");
+        $phpClassMethod->addComment("@codeCoverageIgnore");
+        $phpClassMethod->addParameter('code')->setType("string");
+        $phpClassMethod->addBody('if (static::checkCodeExists($code) === true) {');
+        $phpClassMethod->addBody('    return static::getAllCodeDescriptions()[$code];');
+        $phpClassMethod->addBody('}');
+        $phpClassMethod->addBody('');
+        $phpClassMethod->addBody('return "";');
+    }
+
+    // Save generated class to file
+
+    outputLine(sprintf("Saving class to directory\n  %s", $classFilename));
+
+    file_put_contents($classFilename, $phpPrinter->printFile($phpFile));
+}
+
 /**
  * Create code classes
@@ -374,5 +609,5 @@
 {
     foreach ($filesToDownload as $fileToDownload) {
-        $classCreatorFunc = $filesToDownload[DOWNLOADDEF_KEY_CLASSCREATORFUNC] ?? DOWNLOADDEF_KEY_CLASSCREATORFUNC_DEFAULT;
+        $classCreatorFunc = $fileToDownload[DOWNLOADDEF_KEY_CLASSCREATORFUNC] ?? DOWNLOADDEF_KEY_CLASSCREATORFUNC_DEFAULT;
         $classCreatorFunc($fileToDownload);
     }
@@ -385,4 +620,5 @@
 $filesToDownload = [
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -392,6 +628,6 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "UNTDID_7161.json"),
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "UNTDID_5189.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_7161.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_5189.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:untdid.7161",
@@ -406,4 +642,5 @@
     ],
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -412,5 +649,5 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "ISO_COUNTRY_CODES.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "ISO_COUNTRY_CODES.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:country-codes",
@@ -428,4 +665,5 @@
     ],
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -434,5 +672,5 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "ISO_CURRENCY_CODES.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "ISO_CURRENCY_CODES.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:currency-codes",
@@ -450,4 +688,5 @@
     ],
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -456,5 +695,5 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "UNTDID_5305.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_5305.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:untdid.5305",
@@ -472,4 +711,5 @@
     ],
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -478,5 +718,5 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "UNTDID_1001.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_1001.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:untdid.1001",
@@ -491,4 +731,5 @@
     ],
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -497,5 +738,5 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "UNTDID_7143.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_7143.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:untdid.7143",
@@ -510,4 +751,5 @@
     ],
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -516,5 +758,5 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "UNTDID_4461.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_4461.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:xrechnung:codeliste:untdid.4461",
@@ -529,4 +771,5 @@
     ],
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -535,5 +778,5 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "UNTDID_1153.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_1153.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:untdid.1153",
@@ -548,4 +791,5 @@
     ],
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -554,5 +798,5 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "UNTDID_4451.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_4451.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:untdid.4451",
@@ -567,4 +811,5 @@
     ],
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -573,5 +818,5 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "ICD_5.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "ICD_5.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:icd",
@@ -586,4 +831,5 @@
     ],
     [
+        DOWNLOADDEF_KEY_ENABLED => true,
         DOWNLOADDEF_LIB_NAME => 'zugferd',
         DOWNLOADDEF_LIB_TITLE => 'Zugferd',
@@ -593,6 +839,6 @@
         ],
         DOWNLOADDEF_KEY_TOFILE => [
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "UNECE_REC_20.json"),
-            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(dirname(__FILE__), "download"), "UNECE_REC_21.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNECE_REC_20.json"),
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNECE_REC_21.json"),
         ],
         DOWNLOADDEF_KEY_URL_HP => [
@@ -609,4 +855,46 @@
         DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX => ["REC20_", "REC21_"],
     ],
+    [
+        DOWNLOADDEF_KEY_ENABLED => true,
+        DOWNLOADDEF_LIB_NAME => 'zugferd',
+        DOWNLOADDEF_LIB_TITLE => 'Zugferd',
+        DOWNLOADDEF_KEY_URL => [
+            "https://www.xrepository.de/api/xrepository/urn:xoev-de:kosit:codeliste:untdid.5305_3/download/UNTDID_5305_3.json",
+        ],
+        DOWNLOADDEF_KEY_TOFILE => [
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_5305.json"),
+        ],
+        DOWNLOADDEF_KEY_URL_HP => "https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:untdid.5305_3",
+        DOWNLOADDEF_KEY_CLASSNAMESPACE => "horstoeko\zugferd\codelists",
+        DOWNLOADDEF_KEY_CLASSNAME => "ZugferdVatCategoryCodes",
+        DOWNLOADDEF_KEY_TITLE => "list of duty or tax or fee category codes",
+        DOWNLOADDEF_KEY_TITLE_LIST => "UNTDID 5305 Duty or tax or fee category code",
+        DOWNLOADDEF_KEY_SHORTIDENTIFIERS => true,
+        DOWNLOADDEF_KEY_ADDMETHODS => DOWNLOADDEF_KEY_ADDMETHODS_DEFAULT,
+        DOWNLOADDEF_KEY_DATA_SORTINDEX => 1,
+        DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX => [],
+    ],
+    [
+        DOWNLOADDEF_KEY_ENABLED => true,
+        DOWNLOADDEF_LIB_NAME => 'zugferd',
+        DOWNLOADDEF_LIB_TITLE => 'Zugferd',
+        DOWNLOADDEF_KEY_URL => [
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_1229.csv"),
+        ],
+        DOWNLOADDEF_KEY_TOFILE => [
+            PathUtils::combinePathWithFile(PathUtils::combineAllPaths(__DIR__, "download"), "UNTDID_1229.csv"),
+        ],
+        DOWNLOADDEF_KEY_URL_HP => "https://service.unece.org/trade/untdid/d05a/tred/tred1229.htm",
+        DOWNLOADDEF_KEY_CLASSNAMESPACE => "horstoeko\zugferd\codelists",
+        DOWNLOADDEF_KEY_CLASSNAME => "ZugferdLineStatusCodes",
+        DOWNLOADDEF_KEY_TITLE => "list of codes specifying an action request/notification",
+        DOWNLOADDEF_KEY_TITLE_LIST => "UNTDID 1229 Action request/notification description code",
+        DOWNLOADDEF_KEY_SHORTIDENTIFIERS => true,
+        DOWNLOADDEF_KEY_SHORTIDENTIFIERS_LENGTH => 6,
+        DOWNLOADDEF_KEY_ADDMETHODS => DOWNLOADDEF_KEY_ADDMETHODS_DEFAULT,
+        DOWNLOADDEF_KEY_DATA_SORTINDEX => 0,
+        DOWNLOADDEF_KEY_CLASSCONSTANT_PREFIX => [],
+        DOWNLOADDEF_KEY_CLASSCREATORFUNC => 'createCodeClassFromCsv',
+    ],
 ];
 
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocument.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocument.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocument.php	(revision 8504)
@@ -13,9 +13,11 @@
 use GoetasWebservices\Xsd\XsdToPhpRuntime\Jms\Handler\XmlSchemaDateHandler;
 use horstoeko\stringmanagement\PathUtils;
-use horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoiceType;
+use horstoeko\zugferd\exception\ZugferdUnknownProfileIdException;
 use horstoeko\zugferd\exception\ZugferdUnknownProfileParameterException;
 use horstoeko\zugferd\jms\ZugferdTypesHandler;
 use horstoeko\zugferd\ZugferdObjectHelper;
 use horstoeko\zugferd\ZugferdProfileResolver;
+use JMS\Serializer\Exception\InvalidArgumentException;
+use JMS\Serializer\Exception\RuntimeException;
 use JMS\Serializer\Handler\HandlerRegistryInterface;
 use JMS\Serializer\SerializerBuilder;
@@ -34,46 +36,42 @@
 {
     /**
-     * @internal
-     * @var      integer    Internal profile id
+     * @var integer $profileId Internal profile id
      */
     private $profileId = -1;
 
     /**
-     * @internal
-     * @var      array  Internal profile definition
+     * @var array $profileDefinition Internal profile definition
      */
     private $profileDefinition = [];
 
     /**
-     * @internal
-     * @var      SerializerBuilder  Serializer builder
+     * @var SerializerBuilder $serializerBuilder Serializer builder
      */
     private $serializerBuilder;
 
     /**
-     * @internal
-     * @var      SerializerInterface    Serializer
+     * @var SerializerInterface $serializer Serializer
      */
     private $serializer;
 
     /**
-     * @internal
-     * @var      CrossIndustryInvoiceType   The internal invoice object
-     */
-    private $invoiceObject = null;
-
-    /**
-     * @internal
-     * @var      ZugferdObjectHelper    Object Helper
-     */
-    private $objectHelper = null;
+     * @var \horstoeko\zugferd\entities\basic\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\basicwl\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\minimum\rsm\CrossIndustryInvoice $invoiceObject The internal invoice object
+     */
+    private $invoiceObject;
+
+    /**
+     * @var ZugferdObjectHelper $objectHelper Object Helper
+     */
+    private $objectHelper;
 
     /**
      * Constructor
      *
-     * @param integer $profile
-     * The ID of the profile of the document
-     *
-     * @codeCoverageIgnore
+     * @param  integer $profile The ID of the profile of the document
+     * @return void
+     * @throws ZugferdUnknownProfileIdException
+     * @throws ZugferdUnknownProfileParameterException
+     * @throws InvalidArgumentException
+     * @throws RuntimeException
      */
     final protected function __construct(int $profile)
@@ -85,10 +83,9 @@
 
     /**
-     * Returns the internal invoice object (created by the
-     * serializer). This is used e.g. in the validator
+     * Returns the internal invoice object (created by the serializer). This is used e.g. in the validator
      *
      * @return \horstoeko\zugferd\entities\basic\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\basicwl\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\minimum\rsm\CrossIndustryInvoice
      */
-    public function getInvoiceObject()
+    protected function getInvoiceObject()
     {
         return $this->invoiceObject;
@@ -99,5 +96,4 @@
      *
      * @return \horstoeko\zugferd\entities\basic\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\basicwl\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\minimum\rsm\CrossIndustryInvoice
-     * @codeCoverageIgnore
      */
     protected function createInvoiceObject()
@@ -113,5 +109,5 @@
      * @return SerializerInterface
      */
-    public function getSerializer()
+    protected function getSerializer()
     {
         return $this->serializer;
@@ -123,5 +119,5 @@
      * @return \horstoeko\zugferd\ZugferdObjectHelper
      */
-    public function getObjectHelper()
+    protected function getObjectHelper()
     {
         return $this->objectHelper;
@@ -151,6 +147,7 @@
      * Get a parameter from profile definition
      *
-     * @param string $parameterName
+     * @param  string $parameterName
      * @return mixed
+     * @throws ZugferdUnknownProfileParameterException
      */
     public function getProfileDefinitionParameter(string $parameterName)
@@ -158,5 +155,5 @@
         $profileDefinition = $this->getProfileDefinition();
 
-        if (is_array($profileDefinition) && isset($profileDefinition[$parameterName])) {
+        if (isset($profileDefinition[$parameterName])) {
             return $profileDefinition[$parameterName];
         }
@@ -166,14 +163,11 @@
 
     /**
-     * @internal
-     *
      * Sets the internal profile definitions
      *
-     * @param integer $profile
-     * The internal id of the profile
-     *
+     * @param  int $profile
      * @return ZugferdDocument
-     */
-    private function initProfile(int $profile): ZugferdDocument
+     * @throws ZugferdUnknownProfileIdException
+     */
+    protected function initProfile(int $profile): ZugferdDocument
     {
         $this->profileId = $profile;
@@ -184,12 +178,9 @@
 
     /**
-     * @internal
-     *
      * Build the internal object helper
-     * @codeCoverageIgnore
      *
      * @return ZugferdDocument
      */
-    private function initObjectHelper(): ZugferdDocument
+    protected function initObjectHelper(): ZugferdDocument
     {
         $this->objectHelper = new ZugferdObjectHelper($this->profileId);
@@ -199,12 +190,12 @@
 
     /**
-     * @internal
-     *
      * Build the internal serialzer
-     * @codeCoverageIgnore
      *
      * @return ZugferdDocument
-     */
-    private function initSerialzer(): ZugferdDocument
+     * @throws ZugferdUnknownProfileParameterException
+     * @throws InvalidArgumentException
+     * @throws RuntimeException
+     */
+    protected function initSerialzer(): ZugferdDocument
     {
         $this->serializerBuilder = SerializerBuilder::create();
@@ -255,4 +246,8 @@
         );
 
+        if (ZugferdSettings::hasSerializerCacheDirectory()) {
+            $this->serializerBuilder->setCacheDir(ZugferdSettings::getSerializerCacheDirectory());
+        }
+
         $this->serializerBuilder->addDefaultListeners();
         $this->serializerBuilder->addDefaultHandlers();
@@ -274,6 +269,8 @@
      * Deserialize XML content to internal invoice object
      *
-     * @param string $xmlContent
+     * @param  mixed $xmlContent
      * @return \horstoeko\zugferd\entities\basic\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\basicwl\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\minimum\rsm\CrossIndustryInvoice
+     * @throws ZugferdUnknownProfileParameterException
+     * @throws RuntimeException
      */
     public function deserialize($xmlContent)
@@ -288,4 +285,5 @@
      *
      * @return string
+     * @throws RuntimeException
      */
     public function serializeAsXml(): string
@@ -298,4 +296,5 @@
      *
      * @return string
+     * @throws RuntimeException
      */
     public function serializeAsJson(): string
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentBuilder.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentBuilder.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentBuilder.php	(revision 8504)
@@ -11,8 +11,10 @@
 
 use DateTime;
+use DOMXPath;
 use DOMDocument;
-use DOMXPath;
-
+use horstoeko\zugferd\codelists\ZugferdDocumentType;
 use horstoeko\zugferd\codelists\ZugferdPaymentMeans;
+use horstoeko\zugferd\exception\ZugferdUnsupportedMimetype;
+use horstoeko\zugferd\codelists\ZugferdReferenceCodeQualifiers;
 
 /**
@@ -32,5 +34,5 @@
      * @var object
      */
-    protected $headerTradeAgreement = null;
+    protected $headerTradeAgreement;
 
     /**
@@ -39,5 +41,5 @@
      * @var object
      */
-    protected $headerTradeDelivery = null;
+    protected $headerTradeDelivery;
 
     /**
@@ -46,5 +48,5 @@
      * @var object
      */
-    protected $headerTradeSettlement = null;
+    protected $headerTradeSettlement;
 
     /**
@@ -53,5 +55,5 @@
      * @var object
      */
-    protected $headerSupplyChainTradeTransaction = null;
+    protected $headerSupplyChainTradeTransaction;
 
     /**
@@ -60,5 +62,5 @@
      * @var object
      */
-    protected $currentPaymentTerms = null;
+    protected $currentPaymentTerms;
 
     /**
@@ -67,5 +69,5 @@
      * @var object
      */
-    protected $currentPosition = null;
+    protected $currentPosition;
 
     /**
@@ -73,5 +75,5 @@
      *
      * @return string
-     * @see https://www.php.net/manual/en/language.oop5.magic.php#object.tostring
+     * @see    https://www.php.net/manual/en/language.oop5.magic.php#object.tostring
      */
     public function __toString()
@@ -82,6 +84,4 @@
     /**
      * Creates a new ZugferdDocumentBuilder with profile $profile
-     *
-     * @codeCoverageIgnore
      *
      * @param  integer $profileId
@@ -134,5 +134,5 @@
 
     /**
-     * Write the content of an invoice object to a DOMDocument instance
+     * Write the content of a invoice object to a DOMDocument instance
      *
      * @return DOMDocument
@@ -153,7 +153,5 @@
     public function getContentAsDomXPath(): DOMXpath
     {
-        $domXPath = new DOMXPath($this->getContentAsDomDocument());
-
-        return $domXPath;
+        return new DOMXPath($this->getContentAsDomDocument());
     }
 
@@ -167,26 +165,27 @@
     {
         file_put_contents($xmlfilename, $this->getContent());
-        return $this;
-    }
-
-    /**
-     * Set main information about this document
-     *
-     * @param string         $documentno               __BT-1, From MINIMUM__ The document no issued by the seller
-     * @param string         $documenttypecode         __BT-3, From MINIMUM__ The type of the document, See \horstoeko\codelists\ZugferdInvoiceType for details
-     * @param DateTime       $documentdate             __BT-2, From MINIMUM__ Date of invoice. The date when the document was issued by the seller
-     * @param string         $invoiceCurrency          __BT-5, From MINIMUM__ Code for the invoice currency. The code for the invoice currency
-     * @param string|null    $documentname             Document Type. The documenttype (free text)
-     * @param string|null    $documentlanguage         Language indicator. The language code in which the document was written
-     * @param  DateTime|null $effectiveSpecifiedPeriod The contractual due date of the invoice
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentInformation(string $documentno, string $documenttypecode, DateTime $documentdate, string $invoiceCurrency, ?string $documentname = null, ?string $documentlanguage = null, ?DateTime $effectiveSpecifiedPeriod = null): ZugferdDocumentBuilder
-    {
-        $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "setID", $this->getObjectHelper()->getIdType($documentno));
-        $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "setName", $this->getObjectHelper()->getTextType($documentname));
-        $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "setTypeCode", $this->getObjectHelper()->getDocumentCodeType($documenttypecode));
-        $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "setIssueDateTime", $this->getObjectHelper()->getDateTimeType($documentdate));
-        $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "addToLanguageID", $this->getObjectHelper()->getIdType($documentlanguage));
+
+        return $this;
+    }
+
+    /**
+     * Set main information about this document.
+     *
+     * @param  string        $documentNo               __BT-1, From MINIMUM__ The document no issued by the seller
+     * @param  string        $documentTypeCode         __BT-3, From MINIMUM__ The type of the document, See \horstoeko\codelists\ZugferdInvoiceType for details
+     * @param  DateTime      $documentDate             __BT-2, From MINIMUM__ Date of invoice. The date when the document was issued by the seller
+     * @param  string        $invoiceCurrency          __BT-5, From MINIMUM__ Code for the invoice currency
+     * @param  string|null   $documentName             __BT-X-2, From EXTENDED__ Document Type. The documenttype (free text)
+     * @param  string|null   $documentLanguage         __BT-X-4, From EXTENDED__ Language indicator. The language code in which the document was written
+     * @param  DateTime|null $effectiveSpecifiedPeriod __BT-X-6-000, From EXTENDED__ The contractual due date of the invoice
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentInformation(string $documentNo, string $documentTypeCode, DateTime $documentDate, string $invoiceCurrency, ?string $documentName = null, ?string $documentLanguage = null, ?DateTime $effectiveSpecifiedPeriod = null): ZugferdDocumentBuilder
+    {
+        $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "setID", $this->getObjectHelper()->getIdType($documentNo));
+        $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "setName", $this->getObjectHelper()->getTextType($documentName));
+        $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "setTypeCode", $this->getObjectHelper()->getDocumentCodeType($documentTypeCode));
+        $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "setIssueDateTime", $this->getObjectHelper()->getDateTimeType($documentDate));
+        $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "addToLanguageID", $this->getObjectHelper()->getIdType($documentLanguage));
         $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "setEffectiveSpecifiedPeriod", $this->getObjectHelper()->getSpecifiedPeriodType(null, null, $effectiveSpecifiedPeriod, null));
 
@@ -197,8 +196,59 @@
 
     /**
-     * Set grouping of business process information
-     *
-     * @param string $id    __BT-23, From MINIMUM__ Identifies the context of a business process where the transaction is taking place, thus allowing the buyer to process the invoice in an appropriate manner.
-     * __Note__: These data make it possible to define the purpose of the settlement (invoice of the authorised person, contractual partner, subcontractor, settlement document for a building contract etc.).
+     * Set general payment information.
+     *
+     * @param  string|null $creditorReferenceID __BT-90, From BASIC WL__ Identifier of the creditor
+     * @param  string|null $paymentReference    __BT-83, From BASIC WL__ Intended use for payment
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentGeneralPaymentInformation(?string $creditorReferenceID = null, ?string $paymentReference = null): ZugferdDocumentBuilder
+    {
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setCreditorReferenceID", $this->getObjectHelper()->getIdType($creditorReferenceID));
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setPaymentReference", $this->getObjectHelper()->getIdType($paymentReference));
+
+        return $this;
+    }
+
+    /**
+     * An identifier assigned by the buyer and used for internal routing.
+     *
+     * __Note__: The reference is specified by the buyer (e.g. contact details, department, office ID, project code),
+     * but stated by the seller on the invoice.
+     *
+     * __Note__: The route ID must be specified in the Buyer Reference (BT-10) in the XRechnung. According to the XRechnung
+     * standard, two syntaxes are permitted for displaying electronic invoices: Universal Business Language (UBL) and UN/CEFACT
+     * Cross Industry Invoice (CII).
+     *
+     * @param  string $buyerReference __BT-10, From MINIMUM__ An identifier assigned by the buyer and used for internal routing
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentBuyerReference(?string $buyerReference): ZugferdDocumentBuilder
+    {
+        $reference = $this->getObjectHelper()->getTextType($buyerReference);
+
+        $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setBuyerReference", $reference);
+
+        return $this;
+    }
+
+    /**
+     * Set the routing-id (needed for German XRechnung).
+     *
+     * This is an alias-method for setDocumentBuyerReference
+     *
+     * __Note__: The route ID must be specified in the Buyer Reference (BT-10) in the XRechnung.
+     *
+     * @param  string $routingId __BT-10, From MINIMUM__ An identifier assigned by the buyer and used for internal routing
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentRoutingId(string $routingId): ZugferdDocumentBuilder
+    {
+        return $this->setDocumentBuyerReference($routingId);
+    }
+
+    /**
+     * Set grouping of business process information.
+     *
+     * @param  string $id __BT-23, From MINIMUM__ Identifies the context of a business process where the transaction is taking place, thus allowing the buyer to process the invoice in an appropriate manner.
      * @return ZugferdDocumentBuilder
      */
@@ -210,4 +260,5 @@
 
         $busProcessCtxParameter = $this->getObjectHelper()->createClassInstance('ram\DocumentContextParameterType');
+
         $this->getObjectHelper()->tryCall($busProcessCtxParameter, 'setID', $this->getObjectHelper()->getIdType($id));
         $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocumentContext(), 'setBusinessProcessSpecifiedDocumentContextParameter', $busProcessCtxParameter);
@@ -217,19 +268,5 @@
 
     /**
-     * Set general payment information
-     *
-     * @param  string|null $creditorReferenceID __BT-90, From BASIC WL__ Identifier of the creditor
-     * @param  string|null $paymentReference    __BT-83, From BASIC WL__ Intended use for payment
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentGeneralPaymentInformation(?string $creditorReferenceID = null, ?string $paymentReference = null): ZugferdDocumentBuilder
-    {
-        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setCreditorReferenceID", $this->getObjectHelper()->getIdType($creditorReferenceID));
-        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setPaymentReference", $this->getObjectHelper()->getIdType($paymentReference));
-        return $this;
-    }
-
-    /**
-     * Mark document as a copy from the original one
+     * Mark document as a copy from the original one __(BT-X-3-00, BT-X-3, From EXTENDED)__
      *
      * @return ZugferdDocumentBuilder
@@ -238,9 +275,10 @@
     {
         $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "setCopyIndicator", $this->getObjectHelper()->getIndicatorType(true));
-        return $this;
-    }
-
-    /**
-     * Mark document as a test document
+
+        return $this;
+    }
+
+    /**
+     * Mark document as a test document.
      *
      * @return ZugferdDocumentBuilder
@@ -249,39 +287,5 @@
     {
         $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocumentContext(), "setTestIndicator", $this->getObjectHelper()->getIndicatorType(true));
-        return $this;
-    }
-
-    /**
-     * Document money summation
-     *
-     * @param  float      $grandTotalAmount     __BT-112, From MINIMUM__ Total invoice amount including sales tax
-     * @param  float      $duePayableAmount     __BT-115, From MINIMUM__ Payment amount due
-     * @param  float|null $lineTotalAmount      __BT-106, From BASIC WL__ Sum of the net amounts of all invoice items
-     * @param  float|null $chargeTotalAmount    __BT-108, From BASIC WL__ Sum of the surcharges at document level
-     * @param  float|null $allowanceTotalAmount __BT-107, From BASIC WL__ Sum of the discounts at document level
-     * @param  float|null $taxBasisTotalAmount  __BT-109, From MINIMUM__ Total invoice amount excluding sales tax
-     * @param  float|null $taxTotalAmount       __BT-110/111, From MINIMUM/BASIC WL__ if BT--6 is not null $taxTotalAmount = BT--111. Total amount of the invoice sales tax, Total tax amount in the booking currency
-     * @param  float|null $roundingAmount       __BT-114, From EN 16931__ Rounding amount
-     * @param  float|null $totalPrepaidAmount   __BT-113, From BASIC WL__ Prepayment amount
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentSummation(float $grandTotalAmount, float $duePayableAmount, ?float $lineTotalAmount = null, ?float $chargeTotalAmount = null, ?float $allowanceTotalAmount = null, ?float $taxBasisTotalAmount = null, ?float $taxTotalAmount = null, ?float $roundingAmount = null, ?float $totalPrepaidAmount = null): ZugferdDocumentBuilder
-    {
-        $summation = $this->getObjectHelper()->getTradeSettlementHeaderMonetarySummationType($grandTotalAmount, $duePayableAmount, $lineTotalAmount, $chargeTotalAmount, $allowanceTotalAmount, $taxBasisTotalAmount, $taxTotalAmount, $roundingAmount, $totalPrepaidAmount);
-        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setSpecifiedTradeSettlementHeaderMonetarySummation", $summation);
-        $taxTotalAmount = $this->getObjectHelper()->tryCallAndReturn($summation, "getTaxTotalAmount");
-        $invoiceCurrencyCode = $this->getObjectHelper()->tryCallByPathAndReturn($this->headerTradeSettlement, "getInvoiceCurrencyCode.value");
-        $this->getObjectHelper()->tryCall($this->getObjectHelper()->ensureArray($taxTotalAmount)[0], 'setCurrencyID', $invoiceCurrencyCode);
-        return $this;
-    }
-
-    /**
-     * Initilize the main document summation
-     *
-     * @return ZugferdDocumentBuilder
-     */
-    public function initDocumentSummation(): ZugferdDocumentBuilder
-    {
-        $this->setDocumentSummation(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
+
         return $this;
     }
@@ -291,9 +295,10 @@
      * is calculated by tax amounts
      *
-     * @param  string $foreignCurrencyCode __BT-6, From BASIC WL__ Foreign currency code
-     * @param  float  $foreignTaxAmount    __BT-, From __ Required from EXTENDED Tax total amount in the foreign currency
-     * @return ZugferdDocumentBuilder
-     */
-    public function setForeignCurrency(string $foreignCurrencyCode, ?float $foreignTaxAmount): ZugferdDocumentBuilder
+     * @param  string     $foreignCurrencyCode __BT-6, From BASIC WL__ Foreign currency code
+     * @param  float      $foreignTaxAmount    __BT-X-260, From EXTENDED__ Tax total amount in the foreign currency
+     * @param  float|null $exchangeRate        __BT-X-260, From EXTENDED__ Exchange Rate
+     * @return ZugferdDocumentBuilder
+     */
+    public function setForeignCurrency(string $foreignCurrencyCode, float $foreignTaxAmount, ?float $exchangeRate = null): ZugferdDocumentBuilder
     {
         $invoiceCurrencyCode = $this->getObjectHelper()->tryCallByPathAndReturn($this->headerTradeSettlement, "getInvoiceCurrencyCode.value");
@@ -317,4 +322,5 @@
                 $taxTotalAmountInvoice = $taxTotalAmount;
             }
+
             if ($this->getObjectHelper()->tryCallAndReturn($taxTotalAmount, "getCurrencyID") == $foreignCurrencyCode) {
                 $taxTotalAmountForeign = $taxTotalAmount;
@@ -340,8 +346,13 @@
         }
 
-        $exchangeRate = round($foreignTaxAmount / $invoiceTaxAmount, 5);
+        $calculatedExchangeRate = $exchangeRate;
+
+        if (is_null($calculatedExchangeRate)) {
+            $calculatedExchangeRate = round($foreignTaxAmount / $invoiceTaxAmount, 5);
+        }
 
         $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setTaxCurrencyCode", $this->getObjectHelper()->getIdType($foreignCurrencyCode));
-        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setTaxApplicableTradeCurrencyExchange", $this->getObjectHelper()->getTaxApplicableTradeCurrencyExchangeType($invoiceCurrencyCode, $foreignCurrencyCode, $exchangeRate));
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setTaxApplicableTradeCurrencyExchange", $this->getObjectHelper()->getTaxApplicableTradeCurrencyExchangeType($invoiceCurrencyCode, $foreignCurrencyCode, $calculatedExchangeRate));
+
         return $this;
     }
@@ -350,7 +361,7 @@
      * Add a note to the docuzment
      *
-     * @param  string      $content     __BT-22, From BASIC WL__ Free text on the invoice
-     * @param  string|null $contentCode __BT-, From __ Free text at document level
-     * @param  string|null $subjectCode __BT-21, From BASIC WL__ Code to qualify the free text for the invoice
+     * @param  string      $content     __BT-22, From BASIC WL__ A free text containing unstructured information that is relevant to the invoice as a whole
+     * @param  string|null $contentCode __BT-X-5, From EXTENDED__ A code to classify the content of the free text of the invoice
+     * @param  string|null $subjectCode __BT-21, From BASIC WL__ The qualification of the free text for the invoice from BT-22
      * @return ZugferdDocumentBuilder
      */
@@ -358,42 +369,8 @@
     {
         $note = $this->getObjectHelper()->getNoteType($content, $contentCode, $subjectCode);
+
         $this->getObjectHelper()->tryCall($this->getInvoiceObject()->getExchangedDocument(), "addToIncludedNote", $note);
-        return $this;
-    }
-
-    /**
-     * An identifier assigned by the buyer and used for internal routing.
-     *
-     * __Note__: The reference is specified by the buyer (e.g. contact details, department, office ID, project code),
-     * but stated by the seller on the invoice.
-     *
-     * __Note__: The route ID must be specified in the Buyer Reference (BT--10) in the XRechnung. According to the XRechnung
-     * standard, two syntaxes are permitted for displaying electronic invoices: Universal Business Language (UBL) and UN/CEFACT
-     * Cross Industry Invoice (CII).
-     *
-     * @param  string $buyerreference __BT-10, From MINIMUM__ An identifier assigned by the buyer and used for internal routing
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentBuyerReference(?string $buyerreference): ZugferdDocumentBuilder
-    {
-        $reference = $this->getObjectHelper()->getTextType($buyerreference);
-        $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setBuyerReference", $reference);
-        return $this;
-    }
-
-    /**
-     * Set the routing-id (needed for German XRechnung)
-     * This is an alias-method for setDocumentBuyerReference
-     *
-     * __Note__: The route ID must be specified in the Buyer Reference (BT--10) in the XRechnung. According to the XRechnung
-     * standard, two syntaxes are permitted for displaying electronic invoices: Universal Business Language (UBL) and UN/CEFACT
-     * Cross Industry Invoice (CII).
-     *
-     * @param  string $routingId __BT-, From __ The routing ID
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentRoutingId(string $routingId): ZugferdDocumentBuilder
-    {
-        return $this->setDocumentBuyerReference($routingId);
+
+        return $this;
     }
 
@@ -409,5 +386,7 @@
     {
         $sellerTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setSellerTradeParty", $sellerTradeParty);
+
         return $this;
     }
@@ -416,5 +395,5 @@
      * Add an id to the document seller
      *
-     * @param  string|null $id          __BT-29, From BASIC WL__ An identifier of the seller. In many systems, seller identification is key information. Multiple seller IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g. a previously exchanged, buyer-assigned identifier of the seller
+     * @param  string $id __BT-29, From BASIC WL__ An identifier of the seller. In many systems, seller identification is key information. Multiple seller IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g. a previously exchanged, buyer-assigned identifier of the seller
      * @return ZugferdDocumentBuilder
      */
@@ -422,5 +401,7 @@
     {
         $sellerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTradeParty");
+
         $this->getObjectHelper()->tryCall($sellerTradeParty, "addToID", $this->getObjectHelper()->getIdType($id));
+
         return $this;
     }
@@ -434,5 +415,5 @@
      *   assigned to a seller by a global registration organization
      *
-     * @param  string|null $globalID     __BT-29/BT--29-0, From BASIC WL__ The seller's identifier identification scheme is an identifier uniquely assigned to a seller by a global registration organization.
+     * @param  string|null $globalID     __BT-29/BT-29-0, From BASIC WL__ The seller's identifier identification scheme is an identifier uniquely assigned to a seller by a global registration organization.
      * @param  string|null $globalIDType __BT-29-1, From BASIC WL__ If the identifier is used for the identification scheme, it must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
@@ -441,5 +422,7 @@
     {
         $sellerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTradeParty");
+
         $this->getObjectHelper()->tryCall($sellerTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
+
         return $this;
     }
@@ -455,14 +438,38 @@
      * identification number, unless he uses a tax agent.
      *
-     * @param  string|null $taxregtype __BT-31-0/BT-32-0, From __ Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid   __BT-31/32, From MINIMUM/EN 16931__ Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentSellerTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+     * @param  string|null $taxRegType __BT-31-0/BT-32-0, From MINIMUM/EN 16931__ Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-31/32, From MINIMUM/EN 16931__ Tax number of the seller or sales tax identification number of the seller
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentSellerTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $sellerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($sellerTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
-        return $this;
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($sellerTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
+        return $this;
+    }
+
+    /**
+     * Add information about the seller's VAT Registration Number (Umsatzsteueridentnummer)
+     *
+     * @param  string|null $vatRegNo __BT-31, From MINIMUM/EN 16931__ VAT Registration Number (Umsatzsteueridentnummer)
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentSellerVATRegistrationNumber(?string $vatRegNo = null): ZugferdDocumentBuilder
+    {
+        return $this->addDocumentSellerTaxRegistration(ZugferdReferenceCodeQualifiers::VAT_REGI_NUMB, $vatRegNo);
+    }
+
+    /**
+     * Add information about the seller's Tax Number (Steuernummer)
+     *
+     * @param  string|null $taxNo __BT-32, From MINIMUM/EN 16931__ Tax Number (Steuernummer)
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentSellerTaxNumber(?string $taxNo = null): ZugferdDocumentBuilder
+    {
+        return $this->addDocumentSellerTaxRegistration(ZugferdReferenceCodeQualifiers::FISC_NUMB, $taxNo);
     }
 
@@ -470,18 +477,20 @@
      * Sets detailed information on the business address of the seller
      *
-     * @param  string|null $lineone     __BT-35, From BASIC WL__ The main line in the sellers address. This is usually the street name and house number or the post office box
-     * @param  string|null $linetwo     __BT-36, From BASIC WL__ Line 2 of the seller's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line used to provide additional details in addition to the main line
-     * @param  string|null $linethree   __BT-162, From BASIC WL__Line 3 of the seller's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
-     * @param  string|null $postcode    __BT-38, From BASIC WL__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $lineOne     __BT-35, From BASIC WL__ The main line in the sellers address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-36, From BASIC WL__ Line 2 of the seller's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-162, From BASIC WL__ Line 3 of the seller's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-38, From BASIC WL__ Identifier for a group of properties, such as a zip code
      * @param  string|null $city        __BT-37, From BASIC WL__ Usual name of the city or municipality in which the seller's address is located
      * @param  string|null $country     __BT-40, From MINIMUM__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision __BT-39, From BASIC WL__ The sellers state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentSellerAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+     * @param  string|null $subDivision __BT-39, From BASIC WL__ The sellers state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentSellerAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $sellerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($sellerTradeParty, "setPostalTradeAddress", $address);
+
         return $this;
     }
@@ -490,14 +499,16 @@
      * Set Organization details
      *
-     * @param  string|null $legalorgid   __BT-30, From MINIMUM__ An identifier issued by an official registrar that identifies the seller as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer and seller
-     * @param  string|null $legalorgtype __BT-30-1, From MINIMUM__ The identifier for the identification scheme of the legal registration of the seller. If the identification scheme is used, it must be selected from ISO/IEC 6523 list
-     * @param  string|null $legalorgname __BT-28, From BASIC WL__ A name by which the seller is known, if different from the seller's name (also known as the company name). Note: This may be used if different from the seller's name.
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentSellerLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+     * @param  string|null $legalOrgId   __BT-30, From MINIMUM__ An identifier issued by an official registrar that identifies the seller as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer and seller
+     * @param  string|null $legalOrgType __BT-30-1, From MINIMUM__ The identifier for the identification scheme of the legal registration of the seller. If the identification scheme is used, it must be selected from ISO/IEC 6523 list
+     * @param  string|null $legalOrgName __BT-28, From BASIC WL__ A name by which the seller is known, if different from the seller's name (also known as the company name). Note: This may be used if different from the seller's name.
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentSellerLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $sellerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($sellerTradeParty, "setSpecifiedLegalOrganization", $legalorg);
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($sellerTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
         return $this;
     }
@@ -506,43 +517,46 @@
      * Set detailed information on the seller's contact person
      *
-     * @param  string|null $contactpersonname     __BT-41, From EN 16931__ Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname __BT-, From __ Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno        __BT-42, From EN 16931__ Detailed information on the seller's phone number
-     * @param  string|null $contactfaxno          __BT-, From __ Detailed information on the seller's fax number
-     * @param  string|null $contactemailadd       __BT-43, From __ Detailed information on the seller's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentSellerContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+     * @param  string|null $contactPersonName     __BT-41, From EN 16931__ Such as personal name, name of contact person or department or office
+     * @param  string|null $contactDepartmentName __BT-41-0, From EN 16931__ If a contact person is specified, either the name or the department must be transmitted.
+     * @param  string|null $contactPhoneNo        __BT-42, From EN 16931__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-107, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-43, From EN 16931__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentSellerContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $sellerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($sellerTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add additional detailed information on the seller's contact person. Only supported
-     * in EXTENDED profile
-     *
-     * @param  string|null $contactpersonname     __BT-, From __ Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname __BT-, From __ Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno        __BT-, From __ Detailed information on the seller's phone number
-     * @param  string|null $contactfaxno          __BT-, From __ Detailed information on the seller's fax number
-     * @param  string|null $contactemailadd       __BT-, From __ Detailed information on the seller's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentSellerContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an (additional) contact to the seller party (EXTENDED Profile only)
+     *
+     * @param  string|null $contactPersonName     __BT-41, From EN 16931__ Such as personal name, name of contact person or department or office
+     * @param  string|null $contactDepartmentName __BT-41-0, From EN 16931__ If a contact person is specified, either the name or the department must be transmitted.
+     * @param  string|null $contactPhoneNo        __BT-42, From EN 16931__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-107, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-43, From EN 16931__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentSellerContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $sellerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($sellerTradeParty, "addToDefinedTradeContact", $contact);
-        return $this;
-    }
-
-    /**
-     * Set Sellers electronic communication information
-     *
-     * @param  string|null $uriScheme __BT-34-1, From BASIC WL__
-     * @param  string|null $uri       __BT-34, From BASIC WL__
+
+        return $this;
+    }
+
+    /**
+     * Set the seller's electronic communication information
+     *
+     * @param  string|null $uriScheme __BT-34-1, From BASIC WL__ The identifier for the identification scheme of the seller's electronic address
+     * @param  string|null $uri       __BT-34, From BASIC WL__ Specifies the electronic address of the seller to which the response to the invoice can be sent at application level
      * @return ZugferdDocumentBuilder
      */
@@ -551,5 +565,7 @@
         $sellerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTradeParty");
         $communication = $this->getObjectHelper()->getUniversalCommunicationType(null, $uri, $uriScheme);
+
         $this->getObjectHelper()->tryCall($sellerTradeParty, "setURIUniversalCommunication", $communication);
+
         return $this;
     }
@@ -560,5 +576,5 @@
      * @param  string      $name        __BT-44, From MINIMUM__ The full name of the buyer
      * @param  string|null $id          __BT-46, From BASIC WL__ An identifier of the buyer. In many systems, buyer identification is key information. Multiple buyer IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and buyer, e.g. a previously exchanged, seller-assigned identifier of the buyer
-     * @param  string|null $description __BT-, From __  Further legal information about the buyer
+     * @param  string|null $description __BT-X-334, From EXTENDED__ Further legal information about the buyer
      * @return ZugferdDocumentBuilder
      */
@@ -566,5 +582,7 @@
     {
         $buyerTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setBuyerTradeParty", $buyerTradeParty);
+
         return $this;
     }
@@ -573,5 +591,5 @@
      * Add an id to the document buyer
      *
-     * @param  string|null $id          __BT-46, From BASIC WL__ An identifier of the buyer. In many systems, buyer identification is key information. Multiple buyer IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and buyer, e.g. a previously exchanged, seller-assigned identifier of the buyer
+     * @param  string $id __BT-46, From BASIC WL__ An identifier of the buyer. In many systems, buyer identification is key information. Multiple buyer IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and buyer, e.g. a previously exchanged, seller-assigned identifier of the buyer
      * @return ZugferdDocumentBuilder
      */
@@ -579,5 +597,7 @@
     {
         $buyerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getBuyerTradeParty");
+
         $this->getObjectHelper()->tryCall($buyerTradeParty, "addToID", $this->getObjectHelper()->getIdType($id));
+
         return $this;
     }
@@ -586,6 +606,6 @@
      * Add a global id for the buyer
      *
-     * @param  string|null $globalID     __BT-46/BT-46-0, From BASIC WL__ The buyers's identifier identification scheme is an identifier uniquely assigned to a buyer by a global registration organization.
-     * @param  string|null $globalIDType __BT-46-1__ If the identifier is used for the identification scheme, it must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
+     * @param  string|null $globalID     __BT-46-0, From BASIC WL__ The buyers's identifier identification scheme is an identifier uniquely assigned to a buyer by a global registration organization.
+     * @param  string|null $globalIDType __BT-46-1, From BASIC WL__ If the identifier is used for the identification scheme, it must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -593,5 +613,7 @@
     {
         $buyerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getBuyerTradeParty");
+
         $this->getObjectHelper()->tryCall($buyerTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
+
         return $this;
     }
@@ -607,14 +629,38 @@
      * identification number, unless he uses a tax agent.
      *
-     * @param  string|null $taxregtype __BT-48-0, From BASIC WL__ Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid   __BT-48, From BASIC WL__ Tax number of the seller or sales tax identification number of the seller. Tax number of the seller or sales tax identification number of the (FC = Tax number, VA = Sales tax number)
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentBuyerTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+     * @param  string|null $taxRegType __BT-48-0, From BASIC WL__ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-48, From BASIC WL__ Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentBuyerTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $buyerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getBuyerTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($buyerTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
-        return $this;
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($buyerTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
+        return $this;
+    }
+
+    /**
+     * Add information about the buyers's VAT Registration Number (Umsatzsteueridentnummer)
+     *
+     * @param  string|null $vatRegNo __BT-48, From MINIMUM/EN 16931__ VAT Registration Number (Umsatzsteueridentnummer)
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentBuyerVATRegistrationNumber(?string $vatRegNo = null): ZugferdDocumentBuilder
+    {
+        return $this->addDocumentBuyerTaxRegistration(ZugferdReferenceCodeQualifiers::VAT_REGI_NUMB, $vatRegNo);
+    }
+
+    /**
+     * Add information about the buyer's Tax Number (Steuernummer)
+     *
+     * @param  string|null $taxNo __BT-48, From MINIMUM/EN 16931__ Tax Number (Steuernummer)
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentBuyerTaxNumber(?string $taxNo = null): ZugferdDocumentBuilder
+    {
+        return $this->addDocumentBuyerTaxRegistration(ZugferdReferenceCodeQualifiers::FISC_NUMB, $taxNo);
     }
 
@@ -622,18 +668,20 @@
      * Sets detailed information on the business address of the buyer
      *
-     * @param  string|null $lineone     __BT-50, From BASIC WL__ The main line in the buyers address. This is usually the street name and house number or the post office box
-     * @param  string|null $linetwo     __BT-51, From BASIC WL__ Line 2 of the buyers address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
-     * @param  string|null $linethree   __BT-163, From BASIC WL__ Line 3 of the buyers address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
-     * @param  string|null $postcode    __BT-53, From BASIC WL__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $lineOne     __BT-50, From BASIC WL__ The main line in the buyers address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-51, From BASIC WL__ Line 2 of the buyers address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-163, From BASIC WL__ Line 3 of the buyers address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-53, From BASIC WL__ Identifier for a group of properties, such as a zip code
      * @param  string|null $city        __BT-52, From BASIC WL__ Usual name of the city or municipality in which the buyers address is located
      * @param  string|null $country     __BT-55, From BASIC WL__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision __BT-54, From BASIC WL__ The buyers state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentBuyerAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+     * @param  string|null $subDivision __BT-54, From BASIC WL__ The buyers state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentBuyerAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $buyerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getBuyerTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($buyerTradeParty, "setPostalTradeAddress", $address);
+
         return $this;
     }
@@ -642,14 +690,16 @@
      * Set legal organisation of the buyer party
      *
-     * @param  string|null $legalorgid   __BT-47, From MINIMUM__ An identifier issued by an official registrar that identifies the buyer as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer and buyer
-     * @param  string|null $legalorgtype __BT-47-1, From MINIMUM__ The identifier for the identification scheme of the legal registration of the buyer. If the identification scheme is used, it must be selected from ISO/IEC 6523 list
-     * @param  string|null $legalorgname __BT-45, From EN 16931__ A name by which the buyer is known, if different from the buyers name (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentBuyerLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+     * @param  string|null $legalOrgId   __BT-47, From MINIMUM__ An identifier issued by an official registrar that identifies the buyer as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer and buyer
+     * @param  string|null $legalOrgType __BT-47-1, From MINIMUM__ The identifier for the identification scheme of the legal registration of the buyer. If the identification scheme is used, it must be selected from ISO/IEC 6523 list
+     * @param  string|null $legalOrgName __BT-45, From EN 16931__ A name by which the buyer is known, if different from the buyers name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentBuyerLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $buyerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getBuyerTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($buyerTradeParty, "setSpecifiedLegalOrganization", $legalorg);
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($buyerTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
         return $this;
     }
@@ -658,43 +708,46 @@
      * Set contact of the buyer party
      *
-     * @param  string|null $contactpersonname     __BT-56, From EN 16931__ Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname __BT-, From __ Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno        __BT-57, From EN 16931__ Detailed information on the buyer's phone number
-     * @param  string|null $contactfaxno          __BT-, From __ Detailed information on the buyer's fax number
-     * @param  string|null $contactemailadd       __BT-58, From EN 16931__ Detailed information on the buyer's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentBuyerContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+     * @param  string|null $contactPersonName     __BT-56, From EN 16931__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-56-0, From EN 16931__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-57, From EN 16931__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-115, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-58, From EN 16931__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentBuyerContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $buyerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getBuyerTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($buyerTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add additional contact of the buyer party. This only supported in the
-     * EXTENDED profile
-     *
-     * @param  string|null $contactpersonname     __BT-, From __ Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname __BT-, From __ Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno        __BT-, From __ Detailed information on the buyer's phone number
-     * @param  string|null $contactfaxno          __BT-, From __ Detailed information on the buyer's fax number
-     * @param  string|null $contactemailadd       __BT-, From __ Detailed information on the buyer's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentBuyerContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an (additional) contact to the buyer party contact person (EXTENDED Profile only)
+     *
+     * @param  string|null $contactPersonName     __BT-56, From EN 16931__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-56-0, From EN 16931__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-57, From EN 16931__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-115, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-58, From EN 16931__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentBuyerContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $buyerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getBuyerTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($buyerTradeParty, "addToDefinedTradeContact", $contact);
-        return $this;
-    }
-
-    /**
-     * Set Buyers electronic communication information
-     *
-     * @param  string|null $uriScheme __BT-49-1, From BASIC WL__
-     * @param  string|null $uri       __BT-49, From BASIC WL__
+
+        return $this;
+    }
+
+    /**
+     * Set the buyers's electronic communication information
+     *
+     * @param  string|null $uriScheme __BT-49-1, From BASIC WL__ The identifier for the identification scheme of the buyer's electronic address
+     * @param  string|null $uri       __BT-49, From BASIC WL__ Specifies the buyer's electronic address to which the invoice is sent
      * @return ZugferdDocumentBuilder
      */
@@ -703,13 +756,15 @@
         $buyerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getBuyerTradeParty");
         $communication = $this->getObjectHelper()->getUniversalCommunicationType(null, $uri, $uriScheme);
+
         $this->getObjectHelper()->tryCall($buyerTradeParty, "setURIUniversalCommunication", $communication);
-        return $this;
-    }
-
-    /**
-     * Sets the sellers tax representative trade party
+
+        return $this;
+    }
+
+    /**
+     * Sets the Information about the seller's tax representative
      *
      * @param  string      $name        __BT-62, From BASIC WL__ The full name of the seller's tax agent
-     * @param  string|null $id          __BT-, From __ An identifier of the sellers tax agent.
+     * @param  string|null $id          __BT-X-116, From EXTENDED__ An identifier of the sellers tax agent.
      * @param  string|null $description __BT-, From __ Further legal information that is relevant for the sellers tax agent
      * @return ZugferdDocumentBuilder
@@ -718,17 +773,15 @@
     {
         $sellerTaxRepresentativeTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setSellerTaxRepresentativeTradeParty", $sellerTaxRepresentativeTradeParty);
-        return $this;
-    }
-
-    /**
-     * Add a global id for the Tax representative party
-     *
-     * @param  string|null $globalID
-     * The seller's tax agent identifier identification scheme is an identifier uniquely assigned to a seller by a
-     * global registration organization.
-     * @param  string|null $globalIDType
-     * If the identifier is used for the identification scheme, it must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+
+        return $this;
+    }
+
+    /**
+     * Add a global id for the seller's Tax representative party
+     *
+     * @param  string|null $globalID     __BT-X-117, From EXTENDED__ The seller's tax agent identifier identification scheme is an identifier uniquely assigned to a seller by a global registration organization.
+     * @param  string|null $globalIDType __BT-X-117-1, From EXTENDED__ If the identifier is used for the identification scheme, it must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -736,125 +789,113 @@
     {
         $taxrepresentativeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTaxRepresentativeTradeParty");
+
         $this->getObjectHelper()->tryCall($taxrepresentativeTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
-        return $this;
-    }
-
-    /**
-     * Add Tax registration to tax representative party
-     *
-     * @param  string|null $taxregtype __BT-63-0, From BASIC WL__ Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid   __BT-63, From BASIC WL__ Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentSellerTaxRepresentativeTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add Tax registration to seller's tax representative party
+     *
+     * @param  string|null $taxRegType __BT-63-0, From BASIC WL__ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-63, From BASIC WL__ Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentSellerTaxRepresentativeTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $taxrepresentativeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTaxRepresentativeTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($taxrepresentativeTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
-        return $this;
-    }
-
-    /**
-     * Sets the postal address of the tax representative party
-     *
-     * @param  string|null $lineone     __BT-64, From BASIC WL__ The main line in the sellers tax agent address. This is usually the street name and house number or the post office box
-     * @param  string|null $linetwo     __BT-65, From BASIC WL__ Line 2 of the sellers tax agent address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
-     * @param  string|null $linethree   __BT-164, From BASIC WL__ Line 3 of the sellers tax agent address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
-     * @param  string|null $postcode    __BT-67, From BASIC WL__ Identifier for a group of properties, such as a zip code
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($taxrepresentativeTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
+        return $this;
+    }
+
+    /**
+     * Sets the postal address of the seller's tax representative party
+     *
+     * @param  string|null $lineOne     __BT-64, From BASIC WL__ The main line in the sellers tax agent address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-65, From BASIC WL__ Line 2 of the sellers tax agent address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-164, From BASIC WL__ Line 3 of the sellers tax agent address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-67, From BASIC WL__ Identifier for a group of properties, such as a zip code
      * @param  string|null $city        __BT-66, From BASIC WL__ Usual name of the city or municipality in which the sellers tax agent address is located
      * @param  string|null $country     __BT-69, From BASIC WL__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision __BT-68, From BASIC WL__ The sellers tax agent state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentSellerTaxRepresentativeAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+     * @param  string|null $subDivision __BT-68, From BASIC WL__ The sellers tax agent state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentSellerTaxRepresentativeAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $taxrepresentativeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTaxRepresentativeTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($taxrepresentativeTradeParty, "setPostalTradeAddress", $address);
-        return $this;
-    }
-
-    /**
-     * Set legal organisation of the tax representative party
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the seller tax agent as
-     * a legal entity or legal person.
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the sellers tax
-     * agent. If the identification scheme is used, it must be selected from  ISO/IEC 6523 list
-     * @param  string|null $legalorgname
-     * A name by which the sellers tax agent is known, if different from the  sellers tax agent
-     * name (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentSellerTaxRepresentativeLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Set legal organisation of the seller's tax representative party
+     *
+     * @param  string|null $legalOrgId   __BT-, From __ An identifier issued by an official registrar that identifies the seller tax agent as a legal entity or legal person.
+     * @param  string|null $legalOrgType __BT-, From __ The identifier for the identification scheme of the legal registration of the sellers tax agent. If the identification scheme is used, it must be selected from  ISO/IEC 6523 list
+     * @param  string|null $legalOrgName __BT-, From __ A name by which the sellers tax agent is known, if different from the  sellers tax agent name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentSellerTaxRepresentativeLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $taxrepresentativeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTaxRepresentativeTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($taxrepresentativeTradeParty, "setSpecifiedLegalOrganization", $legalorg);
-        return $this;
-    }
-
-    /**
-     * Set contact of the tax representative party
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the seller's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the seller's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the seller's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentSellerTaxRepresentativeContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($taxrepresentativeTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
+        return $this;
+    }
+
+    /**
+     * Set detailed information on the seller's tax representative party contact person
+     *
+     * @param  string|null $contactPersonName     __BT-X-120, From EXTENDED__ Such as personal name, name of contact person or department or office
+     * @param  string|null $contactDepartmentName __BT-X-121, From EXTENDED__ If a contact person is specified, either the name or the department must be transmitted.
+     * @param  string|null $contactPhoneNo        __BT-X-122, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-123, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-124, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentSellerTaxRepresentativeContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $taxrepresentativeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTaxRepresentativeTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($taxrepresentativeTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add an additional contact to the tax representative party. This is only supported in
-     * EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the seller's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the seller's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the seller's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentSellerTaxRepresentativeContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an (additional) contact to the seller's tax representative party (EXTENDED Profile only)
+     *
+     * @param  string|null $contactPersonName     __BT-X-120, From EXTENDED__ Such as personal name, name of contact person or department or office
+     * @param  string|null $contactDepartmentName __BT-X-121, From EXTENDED__ If a contact person is specified, either the name or the department must be transmitted.
+     * @param  string|null $contactPhoneNo        __BT-X-122, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-123, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-124, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentSellerTaxRepresentativeContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $taxrepresentativeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getSellerTaxRepresentativeTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($taxrepresentativeTradeParty, "addToDefinedTradeContact", $contact);
-        return $this;
-    }
-
-    /**
-     * Detailed information on the product end user (general information)
-     *
-     * @param  string      $name
-     * The full formal name under which the product end user is registered in the
-     * National Register of Legal Entities, Taxable Person or otherwise acting as person(s)
-     * @param  string|null $id
-     * An identifier of the product end user. In many systems, product end user identification
-     * is key information. Multiple product end user IDs can be assigned or specified. They can be differentiated
-     * by using different identification schemes. If no scheme is given, it should be known to all trade
-     * parties, e.g. a previously exchanged
-     * @param  string|null $description
-     * Further legal information that is relevant for the product end user
+
+        return $this;
+    }
+
+    /**
+     * Detailed information on the deviating end user (general informaton)
+     *
+     * @param  string      $name        __BT-X-128, From EXTENDED__ Name/company name of the end user
+     * @param  string|null $id          __BT-X-126, From EXTENDED__ An identifier of the product end user
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the product end user
      * @return ZugferdDocumentBuilder
      */
@@ -862,16 +903,15 @@
     {
         $productEndUserTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setProductEndUserTradeParty", $productEndUserTradeParty);
-        return $this;
-    }
-
-    /**
-     * Add a global id for the Product Enduser Trade Party
-     *
-     * @param  string|null $globalID
-     * The identifier is uniquely assigned to a party by a global registration organization.
-     * @param  string|null $globalIDType
-     * If the identifier is used for the identification scheme, it must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+
+        return $this;
+    }
+
+    /**
+     * Add a Global identifier of the deviating end user
+     *
+     * @param  string|null $globalID     __BT-X-127, From EXTENDED__ The identifier is uniquely assigned to a party by a global registration organization.
+     * @param  string|null $globalIDType __BT-X-127-0, From EXTENDED__ If the identifier is used for the identification scheme, it must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -879,29 +919,24 @@
     {
         $productEndUserTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getProductEndUserTradeParty");
+
         $this->getObjectHelper()->tryCall($productEndUserTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
-        return $this;
-    }
-
-    /**
-     * Add Tax registration to Product Enduser Trade Party
-     *
-     * The local identification (defined by the party's address) of the party for tax purposes or a reference that enables the party
-     * to indicate his reporting status for tax purposes The sales tax identification number of the party
-     * Note: This information may affect how the buyer the invoice settled (such as in relation to social security contributions). So
-     * e.g. In some countries, if the party is not reported for tax, the buyer will withhold the tax amount and pay it on behalf of the
-     * party. Sales tax number with a prefixed country code. A supplier registered as subject to VAT must provide his sales tax
-     * identification number, unless he uses a tax agent.
-     *
-     * @param  string|null $taxregtype
-     * Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid
-     * Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentProductEndUserTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add Tax registration to the deviating end user
+     *
+     * @param  string|null $taxRegType __BT-, From __ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-, From __ Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentProductEndUserTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $productEndUserTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getProductEndUserTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($productEndUserTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($productEndUserTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
         return $this;
     }
@@ -910,30 +945,20 @@
      * Sets the postal address of the Product Enduser party
      *
-     * @param  string|null $lineone
-     * The main line in the product end users address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the product end users address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the product end users address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the product end users address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision
-     * The product end users state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentProductEndUserAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+     * @param  string|null $lineOne     __BT-X-397, From EXTENDED__ The main line in the product end users address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-X-398, From EXTENDED__ Line 2 of the product end users address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-399, From EXTENDED__ Line 3 of the product end users address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-396, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-400, From EXTENDED__ Usual name of the city or municipality in which the product end users address is located
+     * @param  string|null $country     __BT-X-401, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  string|null $subDivision __BT-X-402, From EXTENDED__ The product end users state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentProductEndUserAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $productEndUserTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getProductEndUserTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($productEndUserTradeParty, "setPostalTradeAddress", $address);
+
         return $this;
     }
@@ -942,22 +967,16 @@
      * Set legal organisation of the Product Enduser party
      *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * product end user as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to all trade parties
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal
-     * registration of the product end user. If the identification scheme is used, it must be selected from
-     * ISO/IEC 6523 list
-     * @param  string|null $legalorgname
-     * A name by which the product end user is known, if different from the product
-     * end users name (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentProductEndUserLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+     * @param  string|null $legalOrgId   __BT-X-129, From EXTENDED__ An identifier issued by an official registrar that identifies the product end user as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to all trade parties
+     * @param  string|null $legalOrgType __BT-X-129-0, From EXTENDED__The identifier for the identification scheme of the legal registration of the product end user. If the identification scheme is used, it must be selected from ISO/IEC 6523 list
+     * @param  string|null $legalOrgName __BT-X-130, From EXTENDED__ A name by which the product end user is known, if different from the product end users name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentProductEndUserLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $productEndUserTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getProductEndUserTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($productEndUserTradeParty, "setSpecifiedLegalOrganization", $legalorg);
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($productEndUserTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
         return $this;
     }
@@ -966,45 +985,38 @@
      * Set contact of the Product Enduser party
      *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the product end user's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the product end user's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the product end user's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentProductEndUserContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+     * @param  string|null $contactPersonName     __BT-X-131, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-132, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-133, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-134, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-135, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentProductEndUserContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $productEndUserTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getProductEndUserTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($productEndUserTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add an additional contact to the Product Enduser party. This is only supported in
-     * EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the product end user's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the product end user's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the product end user's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentProductEndUserContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an (additional) contact to the Product Enduser party (EXTENDED Profile only)
+     *
+     * @param  string|null $contactPersonName     __BT-X-131, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-132, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-133, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-134, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-135, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentProductEndUserContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $productEndUserTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeAgreement, "getProductEndUserTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($productEndUserTradeParty, "addToDefinedTradeContact", $contact);
+
         return $this;
     }
@@ -1013,13 +1025,15 @@
      * Ship-To
      *
-     * @param  string      $name        __BT-70, From BASIC WL__ The name of the party to whom the goods are being delivered or for whom the services are being performed. Must be used if the recipient of the goods or services is not the same as the buyer.
+     * @param  string|null $name        __BT-70, From BASIC WL__ The name of the party to whom the goods are being delivered or for whom the services are being performed. Must be used if the recipient of the goods or services is not the same as the buyer.
      * @param  string|null $id          __BT-71, From BASIC WL__ An identifier for the place where the goods are delivered or where the services are provided. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
      * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party
      * @return ZugferdDocumentBuilder
      */
-    public function setDocumentShipTo(?string $name, ?string $id = null, ?string $description = null): ZugferdDocumentBuilder
-    {
-        $shipToTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+    public function setDocumentShipTo(?string $name = null, ?string $id = null, ?string $description = null): ZugferdDocumentBuilder
+    {
+        $shipToTradeParty = $this->getObjectHelper()->getTradePartyAllowEmpty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeDelivery, "setShipToTradeParty", $shipToTradeParty);
+
         return $this;
     }
@@ -1028,5 +1042,5 @@
      * Add an id to the Ship-to Trade Party
      *
-     * @param  string|null $id          __BT-71, From BASIC WL__ An identifier for the place where the goods are delivered or where the services are provided. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
+     * @param  string $id __BT-71, From BASIC WL__ An identifier for the place where the goods are delivered or where the services are provided. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
      * @return ZugferdDocumentBuilder
      */
@@ -1034,5 +1048,7 @@
     {
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipToTradeParty");
+
         $this->getObjectHelper()->tryCall($shipToTradeParty, "addToID", $this->getObjectHelper()->getIdType($id));
+
         return $this;
     }
@@ -1041,6 +1057,6 @@
      * Add a global id for the Ship-to Trade Party
      *
-     * @param  string|null $globalID     __BT-71-0, From __ Global identifier of the goods recipient
-     * @param  string|null $globalIDType __BT-71-1, From __ Type of global identification number, must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
+     * @param  string|null $globalID     __BT-71-0, From BASIC WL__ Global identifier of the goods recipient
+     * @param  string|null $globalIDType __BT-71-1, From BASIC WL__ Type of global identification number, must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -1048,5 +1064,7 @@
     {
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipToTradeParty");
+
         $this->getObjectHelper()->tryCall($shipToTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
+
         return $this;
     }
@@ -1055,13 +1073,15 @@
      * Add Tax registration to Ship-To Trade party
      *
-     * @param  string|null $taxregtype __BT-, From __ Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid   __BT-, From __ Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentShipToTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+     * @param  string|null $taxRegType __BT-X-161-0, From EXTENDED__ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-X-161, From EXTENDED__ Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentShipToTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipToTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($shipToTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($shipToTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
         return $this;
     }
@@ -1070,18 +1090,20 @@
      * Sets the postal address of the Ship-To party
      *
-     * @param  string|null $lineone     __BT-75, From BASIC WL__ The main line in the party's address. This is usually the street name and house number or the post office box
-     * @param  string|null $linetwo     __BT-76, From BASIC WL__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
-     * @param  string|null $linethree   __BT-165, From BASIC WL__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
-     * @param  string|null $postcode    __BT-78, From BASIC WL__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $lineOne     __BT-75, From BASIC WL__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-76, From BASIC WL__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-165, From BASIC WL__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-78, From BASIC WL__ Identifier for a group of properties, such as a zip code
      * @param  string|null $city        __BT-77, From BASIC WL__ Usual name of the city or municipality in which the party's address is located
      * @param  string|null $country     __BT-80, From BASIC WL__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision __BT-79, From BASIC WL__ The party's state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentShipToAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+     * @param  string|null $subDivision __BT-79, From BASIC WL__ The party's state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentShipToAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipToTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($shipToTradeParty, "setPostalTradeAddress", $address);
+
         return $this;
     }
@@ -1090,68 +1112,56 @@
      * Set legal organisation of the Ship-To party
      *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype The identifier for the identification scheme of the legal
-     *                                   registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN,
-     *                                   0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname A name by which the party is known, if different from the party's name
-     *                                   (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentShipToLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+     * @param  string|null $legalOrgId   __BT-X-153, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-153-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-154, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentShipToLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipToTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($shipToTradeParty, "setSpecifiedLegalOrganization", $legalorg);
-        return $this;
-    }
-
-    /**
-     * Set contact of the Ship-To party. All formerly assigned contacts will be
-     * overwritten
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentShipToContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($shipToTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
+        return $this;
+    }
+
+    /**
+     * Set contact of the Ship-To party
+     *
+     * @param  string|null $contactPersonName     __BT-X-155, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-156, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-157, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-158, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-159, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentShipToContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipToTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($shipToTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add a contact to the Ship-To party. This is actually only possible in
-     * the EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentShipToContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an (additional) contact to the Ship-To party
+     *
+     * @param  string|null $contactPersonName     __BT-X-155, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-156, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-157, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-158, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-159, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentShipToContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipToTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($shipToTradeParty, "addToDefinedTradeContact", $contact);
+
         return $this;
     }
@@ -1160,32 +1170,22 @@
      * Detailed information on the different end recipient
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string      $name
-     * Name or company name of the different end recipient
-     * @param  string|null $id
-     * Identification of the different end recipient. Multiple IDs can be assigned or specified. They can be
-     * differentiated by using different identification schemes.
-     * @param  string|null $description
-     * Further legal information that is relevant for the different end recipient
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentUltimateShipTo(string $name, ?string $id = null, ?string $description = null): ZugferdDocumentBuilder
-    {
-        $shipToTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+     * @param  string|null $name        __BT-X-164, From EXTENDED__ Name or company name of the different end recipient
+     * @param  string|null $id          __BT-X-162, From EXTENDED__ Identification of the different end recipient. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes.
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the different end recipient
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentUltimateShipTo(?string $name = null, ?string $id = null, ?string $description = null): ZugferdDocumentBuilder
+    {
+        $shipToTradeParty = $this->getObjectHelper()->getTradePartyAllowEmpty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeDelivery, "setUltimateShipToTradeParty", $shipToTradeParty);
-        return $this;
-    }
-
-    /**
-     * Add an id to the different end recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $id
-     * Identification of the different end recipient. Multiple IDs can be assigned or specified. They can be
-     * differentiated by using different identification schemes.
+
+        return $this;
+    }
+
+    /**
+     * Add an id to the different end recipient
+     *
+     * @param  string $id __BT-X-162, From EXTENDED__ Identification of the different end recipient. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes.
      * @return ZugferdDocumentBuilder
      */
@@ -1193,19 +1193,15 @@
     {
         $UltimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getUltimateShipToTradeParty");
+
         $this->getObjectHelper()->tryCall($UltimateShipToTradeParty, "addToID", $this->getObjectHelper()->getIdType($id));
-        return $this;
-    }
-
-    /**
-     * Add a global id for the different end recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $globalID
-     * Global identifier of the goods recipient
-     * @param  string|null $globalIDType
-     * Type of global identification number, must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+
+        return $this;
+    }
+
+    /**
+     * Add a global id for the different end recipient
+     *
+     * @param  string|null $globalID     __BT-X-163, From EXTENDED__ Global identifier of the different end recipient
+     * @param  string|null $globalIDType __BT-X-163-0, From EXTENDED__ Type of global identification number, must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -1213,25 +1209,24 @@
     {
         $UltimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getUltimateShipToTradeParty");
+
         $this->getObjectHelper()->tryCall($UltimateShipToTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
-        return $this;
-    }
-
-    /**
-     * Add Tax registration to the different end recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $taxregtype
-     * Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid
-     * Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentUltimateShipToTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add Tax registration to the different end recipient
+     *
+     * @param  string|null $taxRegType __BT-X-180-0, From EXTENDED__ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-X-180, From EXTENDED__ Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentUltimateShipToTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $UltimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getUltimateShipToTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($UltimateShipToTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($UltimateShipToTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
         return $this;
     }
@@ -1240,33 +1235,20 @@
      * Sets the postal address of the different end recipient
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box. For major customer addresses, this field must be filled with "-".
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision
-     * The party's state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentUltimateShipToAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+     * @param  string|null $lineOne     __BT-X-173, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box. For major customer addresses, this field must be filled with "-".
+     * @param  string|null $lineTwo     __BT-X-174, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-175, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-172, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-176, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-X-177, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  string|null $subDivision __BT-X-178, From EXTENDED__ The party's state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentUltimateShipToAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $UltimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getUltimateShipToTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($UltimateShipToTradeParty, "setPostalTradeAddress", $address);
+
         return $this;
     }
@@ -1275,23 +1257,16 @@
      * Set legal organisation of the different end recipient
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the party. In particular,
-     * the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname
-     * A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentUltimateShipToLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+     * @param  string|null $legalOrgId   __BT-X-165, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-165-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-166, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentUltimateShipToLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $UltimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getUltimateShipToTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($UltimateShipToTradeParty, "setSpecifiedLegalOrganization", $legalorg);
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($UltimateShipToTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
         return $this;
     }
@@ -1300,45 +1275,38 @@
      * Set contact of the different end recipient
      *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentUltimateShipToContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+     * @param  string|null $contactPersonName     __BT-X-167, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-168, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-169, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-170, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-171, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentUltimateShipToContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $UltimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getUltimateShipToTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($UltimateShipToTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add an additional contact to the different end recipient. This is only supported in the
-     * EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentUltimateShipToContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an (additional) contact to the different end recipient.
+     *
+     * @param  string|null $contactPersonName     __BT-X-167, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-168, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-169, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-170, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-171, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentUltimateShipToContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $UltimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getUltimateShipToTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($UltimateShipToTradeParty, "addToDefinedTradeContact", $contact);
+
         return $this;
     }
@@ -1347,21 +1315,15 @@
      * Set detailed information of the deviating consignor party
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string      $name
-     * The name of the party
-     * @param  string|null $id
-     * An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using
-     * different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
-     * @param  string|null $description
-     * Further legal information that is relevant for the party
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentShipFrom(string $name, ?string $id = null, ?string $description = null): ZugferdDocumentBuilder
-    {
-        $shipToTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+     * @param  string|null $name        __BT-X-183, From EXTENDED__ The name of the party
+     * @param  string|null $id          __BT-X-181, From EXTENDED__ An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentShipFrom(?string $name = null, ?string $id = null, ?string $description = null): ZugferdDocumentBuilder
+    {
+        $shipToTradeParty = $this->getObjectHelper()->getTradePartyAllowEmpty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeDelivery, "setShipFromTradeParty", $shipToTradeParty);
+
         return $this;
     }
@@ -1370,11 +1332,5 @@
      * Add an id to the deviating consignor party
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $id
-     * An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using
-     * different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
+     * @param  string $id __BT-X-181, From EXTENDED__ An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
      * @return ZugferdDocumentBuilder
      */
@@ -1382,5 +1338,7 @@
     {
         $shipFromTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipFromTradeParty");
+
         $this->getObjectHelper()->tryCall($shipFromTradeParty, "addToID", $this->getObjectHelper()->getIdType($id));
+
         return $this;
     }
@@ -1389,12 +1347,6 @@
      * Add a global id for the deviating consignor party
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $globalID
-     * Global identifier of the goods recipient
-     * @param  string|null $globalIDType
-     * Type of global identification number, must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+     * @param  string|null $globalID     __BT-X-182, From EXTENDED__ Global identifier of the goods recipient
+     * @param  string|null $globalIDType __BT-X-182-0, From EXTENDED__ Type of global identification number, must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -1402,5 +1354,7 @@
     {
         $shipFromTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipFromTradeParty");
+
         $this->getObjectHelper()->tryCall($shipFromTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
+
         return $this;
     }
@@ -1409,18 +1363,15 @@
      * Add Tax registration to the deviating consignor party
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $taxregtype
-     * Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid
-     * Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentShipFromTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+     * @param  string|null $taxRegType __BT-, From __ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-, From __ Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentShipFromTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $shipFromTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipFromTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($shipFromTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($shipFromTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
         return $this;
     }
@@ -1429,33 +1380,20 @@
      * Sets the postal address of the deviating consignor party
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision
-     * The party's state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentShipFromAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+     * @param  string|null $lineOne     __BT-X-192, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-X-193, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-194, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-191, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-195, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-X-196, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  string|null $subDivision __BT-X-197, From EXTENDED__ The party's state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentShipFromAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $shipFromTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipFromTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($shipFromTradeParty, "setPostalTradeAddress", $address);
+
         return $this;
     }
@@ -1464,23 +1402,16 @@
      * Set legal organisation of the deviating consignor party
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the party. In particular,
-     * the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname
-     * A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentShipFromLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+     * @param  string|null $legalOrgId   __BT-X-184, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-184-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-185, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentShipFromLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $shipFromTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipFromTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($shipFromTradeParty, "setSpecifiedLegalOrganization", $legalorg);
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($shipFromTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
         return $this;
     }
@@ -1489,59 +1420,47 @@
      * Set contact of the deviating consignor party
      *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentShipFromContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+     * @param  string|null $contactPersonName     __BT-X-186, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-187, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-188, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-189, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-190, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentShipFromContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $shipFromTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipFromTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($shipFromTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add an additional contact to the deviating consignor party. This is only supported in the
-     * EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentShipFromContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an (additional) contact to the deviating consignor party
+     *
+     * @param  string|null $contactPersonName     __BT-X-186, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-187, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-188, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-189, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-190, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentShipFromContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $shipFromTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeDelivery, "getShipFromTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($shipFromTradeParty, "addToDefinedTradeContact", $contact);
-        return $this;
-    }
-
-    /**
-     * Invoicer (Rechnungssteller)
-     *
-     * @param  string      $name
-     * The name of the party
-     * @param  string|null $id
-     * An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using
-     * different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
-     * @param  string|null $description
-     * Further legal information that is relevant for the party
+
+        return $this;
+    }
+
+    /**
+     * Detailed information about the Invoicer Party
+     *
+     * @param  string      $name        __BT-X-207, From EXTENDED__ The name of the party
+     * @param  string|null $id          __BT-X-205, From EXTENDED__ An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party
      * @return ZugferdDocumentBuilder
      */
@@ -1549,18 +1468,14 @@
     {
         $invoicerTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setInvoicerTradeParty", $invoicerTradeParty);
-        return $this;
-    }
-
-    /**
-     * Add an id to the Invoicer Trade Party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $id
-     * An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using
-     * different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
+
+        return $this;
+    }
+
+    /**
+     * Add an id to the Invoicer Party
+     *
+     * @param  string $id __BT-X-205, From EXTENDED__ An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
      * @return ZugferdDocumentBuilder
      */
@@ -1568,19 +1483,15 @@
     {
         $invoicerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoicerTradeParty");
+
         $this->getObjectHelper()->tryCall($invoicerTradeParty, "addToID", $this->getObjectHelper()->getIdType($id));
-        return $this;
-    }
-
-    /**
-     * Add a global id for the Invoicer Trade Party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $globalID
-     * Global identifier of the goods recipient
-     * @param  string|null $globalIDType
-     * Type of global identification number, must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+
+        return $this;
+    }
+
+    /**
+     * Add a global id to the Invoicer Party
+     *
+     * @param  string|null $globalID     __BT-X-206, From EXTENDED__ Global identifier of the goods recipient
+     * @param  string|null $globalIDType __BT-X-206-0, From EXTENDED__ Type of global identification number, must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -1588,151 +1499,113 @@
     {
         $invoicerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoicerTradeParty");
+
         $this->getObjectHelper()->tryCall($invoicerTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
-        return $this;
-    }
-
-    /**
-     * Add Tax registration to Invoicer Trade Party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $taxregtype
-     * Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid
-     * Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentInvoicerTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add Tax registration to Invoicer Party
+     *
+     * @param  string|null $taxRegType __BT-, From __ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-, From __ Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentInvoicerTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $invoicerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoicerTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($invoicerTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
-        return $this;
-    }
-
-    /**
-     * Sets the postal address of the ultimate Ship-from party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision
-     * The party's state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentInvoicerAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($invoicerTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
+        return $this;
+    }
+
+    /**
+     * Sets the postal address of the Invoicer Party
+     *
+     * @param  string|null $lineOne     __BT-X-216, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-X-217, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-218, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-215, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-219, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-X-220, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  string|null $subDivision __BT-X-221, From EXTENDED__ The party's state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentInvoicerAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $invoicerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoicerTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($invoicerTradeParty, "setPostalTradeAddress", $address);
-        return $this;
-    }
-
-    /**
-     * Set legal organisation of the ultimate Ship-from party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the party. In particular,
-     * the following scheme codes are used: 0021 : SWIFT, 0088 : EAN,* 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname
-     * A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentInvoicerLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Set legal organisation of the Invoicer Party
+     *
+     * @param  string|null $legalOrgId   __BT-X-208, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-208-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN,* 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-209, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentInvoicerLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $invoicerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoicerTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($invoicerTradeParty, "setSpecifiedLegalOrganization", $legalorg);
-        return $this;
-    }
-
-    /**
-     * Set contact of the ultimate Ship-from party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentInvoicerContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($invoicerTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
+        return $this;
+    }
+
+    /**
+     * Set contact of the Invoicer Party
+     *
+     * @param  string|null $contactPersonName     __BT-X-210, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-211, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-212, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-213, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-214, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentInvoicerContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $invoicerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoicerTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($invoicerTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add an additional contact to the ultimate Ship-from party
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentInvoicerContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an (additional) contact to the Invoicer Party
+     *
+     * @param  string|null $contactPersonName     __BT-X-210, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-211, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-212, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-213, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-214, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentInvoicerContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $invoicerTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoicerTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($invoicerTradeParty, "addToDefinedTradeContact", $contact);
-        return $this;
-    }
-
-    /**
-     * Set detailed information on the different invoice recipient,
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string      $name
-     * The name of the party
-     * @param  string|null $id
-     * An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using
-     * different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
-     * @param  string|null $description
-     * Further legal information that is relevant for the party
+
+        return $this;
+    }
+
+    /**
+     * Set detailed information on the different invoice recipient
+     *
+     * @param  string      $name        __BT-X-226, From EXTENDED__ The name of the party
+     * @param  string|null $id          __BT-X-224, From EXTENDED__ An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party
      * @return ZugferdDocumentBuilder
      */
@@ -1740,18 +1613,14 @@
     {
         $invoiceeTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setInvoiceeTradeParty", $invoiceeTradeParty);
-        return $this;
-    }
-
-    /**
-     * Add an id to the Invoicee Trade Party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $id
-     * An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using
-     * different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
+
+        return $this;
+    }
+
+    /**
+     * Add an id to the Invoicee Party
+     *
+     * @param  string $id __BT-X-224, From EXTENDED__ An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
      * @return ZugferdDocumentBuilder
      */
@@ -1759,19 +1628,15 @@
     {
         $invoiceeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoiceeTradeParty");
+
         $this->getObjectHelper()->tryCall($invoiceeTradeParty, "addToID", $this->getObjectHelper()->getIdType($id));
-        return $this;
-    }
-
-    /**
-     * Add a global id for the Invoicee Trade Party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $globalID
-     * Global identification number
-     * @param  string|null $globalIDType
-     * Type of global identification number, must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+
+        return $this;
+    }
+
+    /**
+     * Add a global id for the Invoicee Party
+     *
+     * @param  string|null $globalID     __BT-X-225, From EXTENDED__ Global identification number
+     * @param  string|null $globalIDType __BT-X-225-0, From EXTENDED__ Type of global identification number, must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -1779,135 +1644,104 @@
     {
         $invoiceeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoiceeTradeParty");
+
         $this->getObjectHelper()->tryCall($invoiceeTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
-        return $this;
-    }
-
-    /**
-     * Add Tax registration to Invoicer Trade Party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $taxregtype
-     * Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid
-     * Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentInvoiceeTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add Tax registration to the Invoicee Party
+     *
+     * @param  string|null $taxRegType __BT-X-242-0, From EXTENDED__ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-X-242, From EXTENDED__ Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentInvoiceeTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $invoiceeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoiceeTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($invoiceeTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
-        return $this;
-    }
-
-    /**
-     * Sets the postal address of the ultimate Ship-from party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision
-     * The party's state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentInvoiceeAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($invoiceeTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
+        return $this;
+    }
+
+    /**
+     * Sets the postal address of the Invoicee Party
+     *
+     * @param  string|null $lineOne     __BT-X-235, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-X-236, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-237, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-234, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-238, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-X-239, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  string|null $subDivision __BT-X-240, From EXTENDED__ The party's state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentInvoiceeAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $invoiceeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoiceeTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($invoiceeTradeParty, "setPostalTradeAddress", $address);
-        return $this;
-    }
-
-    /**
-     * Set legal organisation of the ultimate Ship-from party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the party. In particular,
-     * the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname
-     * A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentInvoiceeLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Set legal organisation of the Invoicee Party
+     *
+     * @param  string|null $legalOrgId   __BT-X-227, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-227-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-228, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentInvoiceeLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $invoiceeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoiceeTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($invoiceeTradeParty, "setSpecifiedLegalOrganization", $legalorg);
-        return $this;
-    }
-
-    /**
-     * Set contact of the ultimate Ship-from party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentInvoiceeContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($invoiceeTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
+        return $this;
+    }
+
+    /**
+     * Set contact of the Invoicee Party
+     *
+     * @param  string|null $contactPersonName     __BT-X-229, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-230, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-231, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-232, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-233, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentInvoiceeContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $invoiceeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoiceeTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($invoiceeTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add an additional contact to the ultimate Ship-from party. This is only supported in the
-     * EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentInvoiceeContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an (additional) contact to the Invoicee Party
+     *
+     * @param  string|null $contactPersonName     __BT-X-229, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-230, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-231, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-232, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-233, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentInvoiceeContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $invoiceeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getInvoiceeTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($invoiceeTradeParty, "addToDefinedTradeContact", $contact);
+
         return $this;
     }
@@ -1925,5 +1759,7 @@
     {
         $payeeTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setPayeeTradeParty", $payeeTradeParty);
+
         return $this;
     }
@@ -1932,5 +1768,5 @@
      * Add an id to the payee trade party
      *
-     * @param  string|null $id          __BT-60, From BASIC WL__ An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
+     * @param  string $id __BT-60, From BASIC WL__ An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
      * @return ZugferdDocumentBuilder
      */
@@ -1938,5 +1774,7 @@
     {
         $payeeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getPayeeTradeParty");
+
         $this->getObjectHelper()->tryCall($payeeTradeParty, "addToID", $this->getObjectHelper()->getIdType($id));
+
         return $this;
     }
@@ -1945,9 +1783,6 @@
      * Add a global id for the payee trade party
      *
-     * @param  string|null $globalID
-     * Global identification number
-     * @param  string|null $globalIDType
-     * Type of global identification number, must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+     * @param  string|null $globalID     __BT-60-0, From BASIC WL__ Global identification number
+     * @param  string|null $globalIDType __BT-60-1, From BASIC WL__ Type of global identification number, must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -1955,5 +1790,7 @@
     {
         $payeeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getPayeeTradeParty");
+
         $this->getObjectHelper()->tryCall($payeeTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
+
         return $this;
     }
@@ -1962,13 +1799,15 @@
      * Add Tax registration to payee trade party
      *
-     * @param  string|null $taxregtype __BT-, From BASIC WL__ Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid   __BT-60, From BASIC WL__ Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPayeeTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+     * @param  string|null $taxRegType __BT-X-257-0, From EXTENDED__ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-X-257, From EXTENDED Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPayeeTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $payeeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getPayeeTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($payeeTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($payeeTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
         return $this;
     }
@@ -1977,30 +1816,20 @@
      * Sets the postal address of the payee trade party
      *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision
-     * The party's state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPayeeAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+     * @param  string|null $lineOne     __BT-X-250, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-X-251, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-252, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-249, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-253, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-X-254, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  string|null $subDivision __BT-X-255, From EXTENDED__ The party's state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPayeeAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $payeeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getPayeeTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($payeeTradeParty, "setPostalTradeAddress", $address);
+
         return $this;
     }
@@ -2009,14 +1838,16 @@
      * Set legal organisation of the payee trade party
      *
-     * @param  string|null $legalorgid   __BT-61, From BASIC WL__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype __BT-, From __ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname __BT-, From __ A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPayeeLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+     * @param  string|null $legalOrgId   __BT-61, From BASIC WL__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-61-1, From BASIC WL__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-243, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPayeeLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $payeeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getPayeeTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($payeeTradeParty, "setSpecifiedLegalOrganization", $legalorg);
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($payeeTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
         return $this;
     }
@@ -2025,45 +1856,38 @@
      * Set contact of the payee trade party
      *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPayeeContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+     * @param  string|null $contactPersonName     __BT-X-244, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-245, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-246, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-247, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-248, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPayeeContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $payeeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getPayeeTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($payeeTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add an additional contact to the payee trade party. Note this is only supported in the
-     * EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPayeeContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an (additional) contact to the payee trade party
+     *
+     * @param  string|null $contactPersonName     __BT-X-244, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-245, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-246, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-247, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-248, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPayeeContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $payeeTradeParty = $this->getObjectHelper()->tryCallAndReturn($this->headerTradeSettlement, "getPayeeTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($payeeTradeParty, "addToDefinedTradeContact", $contact);
+
         return $this;
     }
@@ -2072,8 +1896,5 @@
      * Set information on the delivery conditions
      *
-     * __Note__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $code
+     * @param  string|null $code __BT-X-145, From EXTENDED__ The code indicating the type of delivery for these commercial delivery terms. To be selected from the entries in the list UNTDID 4053 + INCOTERMS
      * @return ZugferdDocumentBuilder
      */
@@ -2081,33 +1902,55 @@
     {
         $deliveryterms = $this->getObjectHelper()->getTradeDeliveryTermsType($code);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setApplicableTradeDeliveryTerms", $deliveryterms);
-        return $this;
-    }
-
-    /**
-     * Set details of the associated order confirmation
-     *
-     * @param  string        $issuerassignedid __BT-14, From EN 16931__ An identifier issued by the seller for a referenced sales order (Order confirmation number)
-     * @param  DateTime|null $issueddate       __BT-, From __ Order confirmation date
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentSellerOrderReferencedDocument(string $issuerassignedid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $sellerorderrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, null, null, null, null, $issueddate, null);
+
+        return $this;
+    }
+
+    /**
+     * Set details of the associated order confirmation.
+     *
+     * @param  string        $issuerAssignedId __BT-14, From EN 16931__ An identifier issued by the seller for a referenced sales order (Order confirmation number)
+     * @param  DateTime|null $issueDate        __BT-X-146, From EXTENDED__ Order confirmation date
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentSellerOrderReferencedDocument(string $issuerAssignedId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $sellerorderrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, null, null, null, $issueDate, null);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setSellerOrderReferencedDocument", $sellerorderrefdoc);
-        return $this;
-    }
-
-    /**
-     * Set details of the related buyer order
-     *
-     * @param  string        $issuerassignedid __BT-13, From MINIMUM__ An identifier issued by the buyer for a referenced order (order number)
-     * @param  DateTime|null $issueddate       __BT-, From __ Date of order
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentBuyerOrderReferencedDocument(?string $issuerassignedid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $buyerorderrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, null, null, null, null, $issueddate, null);
+
+        return $this;
+    }
+
+    /**
+     * Set details of the related buyer order.
+     *
+     * @param  string        $issuerAssignedId __BT-13, From MINIMUM__ An identifier issued by the buyer for a referenced order (order number)
+     * @param  DateTime|null $issueDate        __BT-X-147, From EXTENDED__ Date of order
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentBuyerOrderReferencedDocument(?string $issuerAssignedId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $buyerorderrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, null, null, null, $issueDate, null);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setBuyerOrderReferencedDocument", $buyerorderrefdoc);
+
+        return $this;
+    }
+
+    /**
+     * Set details of the associated offer
+     *
+     * @param  string        $issuerAssignedId __BT-X-403, From EXTENDED__ Offer number
+     * @param  DateTime|null $issueDate        __BT-X-404, From EXTENDED__ Date of offer
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentQuotationReferencedDocument(?string $issuerAssignedId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $quotationrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, null, null, null, $issueDate, null);
+
+        $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setQuotationReferencedDocument", $quotationrefdoc);
+
         return $this;
     }
@@ -2116,12 +1959,14 @@
      * Set details of the associated contract
      *
-     * @param  string        $issuerassignedid __BT-12, From BASIC WL__ The contract reference should be assigned once in the context of the specific trade relationship and for a defined period of time (contract number)
-     * @param  DateTime|null $issueddate       __BT-, From __ Contract date
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentContractReferencedDocument(?string $issuerassignedid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $contractrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, null, null, null, null, $issueddate, null);
+     * @param  string        $issuerAssignedId __BT-12, From BASIC WL__ The contract reference should be assigned once in the context of the specific trade relationship and for a defined period of time (contract number)
+     * @param  DateTime|null $issueDate        __BT-X-26, From EXTENDED__ Contract date
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentContractReferencedDocument(?string $issuerAssignedId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $contractrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, null, null, null, $issueDate, null);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setContractReferencedDocument", $contractrefdoc);
+
         return $this;
     }
@@ -2136,38 +1981,80 @@
      *    to large attachments and / or sensitive information, e.g. for personal services, which must be separated
      *    from the bill
-     *  - Use ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument and
-     *    ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument to seek between multiple additional referenced
-     *    documents
-     *
-     * @param  string            $issuerassignedid
-     * The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for
-     * an object on which the invoice is based, or an identifier of the document on which the invoice is based.
-     * @param  string            $typecode
-     * Type of referenced document (See codelist UNTDID 1001)
-     *  - Code 916 "reference paper" is used to reference the identification of the document on which the invoice is based
-     *  - Code 50 "Price / sales catalog response" is used to reference the tender or the lot
-     *  - Code 130 "invoice data sheet" is used to reference an identifier for an object specified by the seller.
-     * @param  string|null       $uriid
-     * The Uniform Resource Locator (URL) at which the external document is available. A means of finding the resource
-     * including the primary access method intended for it, e.g. http: // or ftp: //. The location of the external document
-     * must be used if the buyer needs additional information to support the amounts billed. External documents are not part
-     * of the invoice. Access to external documents can involve certain risks.
-     * @param  string|array|null $name
-     * A description of the document, e.g. Hourly billing, usage or consumption report, etc.
-     * @param  string|null       $reftypecode
-     * The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the
-     * recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected
-     * from UNTDID 1153 in accordance with the code list entries.
-     * @param  DateTime|null     $issueddate
-     * Document date
-     * @param  string|null       $binarydatafilename
-     * Contains a file name of an attachment document embedded as a binary object
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentAdditionalReferencedDocument(string $issuerassignedid, string $typecode, ?string $uriid = null, $name = null, ?string $reftypecode = null, ?DateTime $issueddate = null, ?string $binarydatafilename = null): ZugferdDocumentBuilder
-    {
-        $additionalrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, $uriid, null, $typecode, $name, $reftypecode, $issueddate, $binarydatafilename);
+     *
+     * @param  string            $issuerAssignedId   __BT-122, From EN 16931__ The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for an object on which the invoice is based, or an identifier of the document on which the invoice is based.
+     * @param  string            $typeCode           __BT-122-0, From EN 16931__ Type of referenced document (See codelist UNTDID 1001)
+     *                                               - Code 916 "reference paper" is used to reference the identification of the
+     *                                               document on which the invoice is based - Code 50 "Price / sales catalog response"
+     *                                               is used to reference the tender or the lot - Code 130 "invoice data sheet" is used
+     *                                               to reference an identifier for an object specified by the seller.
+     * @param  string|null       $uriId              __BT-124, From EN 16931__ A means of locating the resource, including the primary access method intended for it, e.g. http:// or ftp://. The storage location of the external document must be used if the buyer requires further information as
+     *                                               supporting documents for the invoiced amounts. External documents are not part of the invoice. Invoice processing should be possible without access to external documents. Access to external documents can entail certain risks.
+     * @param  string|array|null $name               __BT-123, From EN 16931__ A description of the document, e.g. Hourly billing, usage or consumption report, etc.
+     * @param  string|null       $refTypeCode        __BT-18-1, From ENN 16931__ The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected from UNTDID 1153 in accordance with the code list entries.
+     * @param  DateTime|null     $issueDate          __BT-X-149, From EXTENDED__ Document date
+     * @param  string|null       $binaryDataFilename __BT-125, From EN 16931__ Contains a file name of an attachment document embedded as a binary object
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentAdditionalReferencedDocument(string $issuerAssignedId, string $typeCode, ?string $uriId = null, $name = null, ?string $refTypeCode = null, ?DateTime $issueDate = null, ?string $binaryDataFilename = null): ZugferdDocumentBuilder
+    {
+        $additionalrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, $uriId, null, $typeCode, $name, $refTypeCode, $issueDate, $binaryDataFilename);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "addToAdditionalReferencedDocument", $additionalrefdoc);
-        return $this;
+
+        return $this;
+    }
+
+    /**
+     * Add an invoice supporting additional document reference with an URL which specifies the location where the information can be found
+     * The invoice supporting documents can be used to reference a document number, which should be known to the recipient, as well as an external document (referenced by a URL).
+     * The option of linking to an external document is required, for example, when large attachments and/or sensitive information, e.g. for personal services, are involved,
+     * which must be separated from the invoice.
+     *
+     * @param  string            $issuerAssignedId __BT-122, From EN 16931__ Identification of the document supporting the invoice
+     * @param  string            $uriId            __BT-124, From EN 16931__ A means of locating the resource, including the primary access method intended for it, e.g. http:// or ftp://. The storage location of the external document must be used if the buyer requires further information as
+     * @param  string|array|null $name             __BT-123, From EN 16931__ A description of the document, e.g. Hourly billing, usage or consumption report, etc.
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentInvoiceSupportingDocumentWithUri(string $issuerAssignedId, string $uriId, $name = null): ZugferdDocumentBuilder
+    {
+        return $this->addDocumentAdditionalReferencedDocument($issuerAssignedId, ZugferdDocumentType::RELATED_DOCUMENT, $uriId, $name);
+    }
+
+    /**
+     * Add an invoice supporting additional document reference with an URL which specifies the location where the information can be found
+     * The invoice supporting documents can be used to reference both a document number, which should be known to the recipient, and an embedded file (such as a timesheet as a PDF file).
+     *
+     * @param  string            $issuerAssignedId   __BT-122, From EN 16931__ Identification of the document supporting the invoice
+     * @param  string            $binaryDataFilename __BT-125, From EN 16931__ Contains a file name of an attachment document embedded as a binary object
+     * @param  string|array|null $name               __BT-123, From EN 16931__ A description of the document, e.g. Hourly billing, usage or consumption report, etc.
+     * @return ZugferdDocumentBuilder
+     * @throws ZugferdUnsupportedMimetype
+     */
+    public function addDocumentInvoiceSupportingDocumentWithFile(string $issuerAssignedId, string $binaryDataFilename, $name = null): ZugferdDocumentBuilder
+    {
+        return $this->addDocumentAdditionalReferencedDocument($issuerAssignedId, ZugferdDocumentType::RELATED_DOCUMENT, null, $name, null, null, $binaryDataFilename);
+    }
+
+    /**
+     * Add a tender or lot document reference
+     *
+     * @param  string $issuerAssignedId __BT-122, From EN 16931__ Tender or lot reference
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentTenderOrLotReferenceDocument(string $issuerAssignedId): ZugferdDocumentBuilder
+    {
+        return $this->addDocumentAdditionalReferencedDocument($issuerAssignedId, ZugferdDocumentType::VALIDATED_PRICED_TENDER);
+    }
+
+    /**
+     * Add details of the calculated object
+     *
+     * @param  string $issuerAssignedId __BT-122, From EN 16931__ Depending on the application, this can be a subscription number, a telephone number, a meter reading, a vehicle, a person, etc.
+     * @param  string $refTypeCode      __BT-18-1, From ENN 16931__ The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected from UNTDID 1153 in accordance with the code list entries.
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentInvoicedObjectReferenceDocument(string $issuerAssignedId, string $refTypeCode): ZugferdDocumentBuilder
+    {
+        return $this->addDocumentAdditionalReferencedDocument($issuerAssignedId, ZugferdDocumentType::INVOICING_DATA_SHEET, null, null, $refTypeCode);
     }
 
@@ -2175,17 +2062,42 @@
      * Set a Reference to the previous invoice
      *
-     * __Note__: To be used if:
+     * To be used if:
      *  - a previous invoice is corrected
-     *  - reference is made to previous partial invoices from a final invoice
-     *  - Reference is made to previous invoices for advance payments from a final invoice
-     *
-     * @param  string        $issuerassignedid __BT-25, From BASIC WL__ Number of the previous invoice
-     * @param  DateTime|null $issueddate       __BT-26, From BASIC WL__ Date of the previous invoice
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentInvoiceReferencedDocument(string $issuerassignedid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $invoicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, null, null, null, null, $issueddate, null);
-        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setInvoiceReferencedDocument", $invoicerefdoc);
+     *  - reference is made from a final invoice to previous partial invoices
+     *  - reference is made from a final invoice to previous invoices for advance payments.     *
+     *
+     * @param  string        $issuerAssignedId __BT-25, From BASIC WL__ The identification of an invoice previously sent by the seller
+     * @param  string|null   $typeCode         __BT-X-555, From EXTENDED__ Type of previous invoice (code)
+     * @param  DateTime|null $issueDate        __BT-26, From BASIC WL__ Date of the previous invoice
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentInvoiceReferencedDocument(string $issuerAssignedId, ?string $typeCode = null, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $invoicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, $typeCode, null, null, $issueDate, null);
+
+        $this->getObjectHelper()->tryCallIfMethodExists($this->headerTradeSettlement, "addToInvoiceReferencedDocument", "setInvoiceReferencedDocument", [$invoicerefdoc], $invoicerefdoc);
+
+        return $this;
+    }
+
+    /**
+     * Add a Reference to the previous invoice
+     *
+     * To be used if:
+     *  - a previous invoice is corrected
+     *  - reference is made from a final invoice to previous partial invoices
+     *  - reference is made from a final invoice to previous invoices for advance payments.     *
+     *
+     * @param  string        $issuerAssignedId __BT-25, From BASIC WL__ The identification of an invoice previously sent by the seller
+     * @param  string|null   $typeCode         __BT-X-555, From EXTENDED__ Type of previous invoice (code)
+     * @param  DateTime|null $issueDate        __BT-26, From BASIC WL__ Date of the previous invoice
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentInvoiceReferencedDocument(string $issuerAssignedId, ?string $typeCode = null, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $invoicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, $typeCode, null, null, $issueDate, null);
+
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToInvoiceReferencedDocument", $invoicerefdoc);
+
         return $this;
     }
@@ -2194,6 +2106,6 @@
      * Set Details of a project reference
      *
-     * @param  string $id   __BT-11, From EN 16931__ Project Data
-     * @param  string $name __BT-, From __ Project Name
+     * @param  string $id   __BT-11, From EN 16931__ The identifier of the project to which the invoice relates
+     * @param  string $name __BT-11-0, From EN 16931__  The name of the project to which the invoice relates
      * @return ZugferdDocumentBuilder
      */
@@ -2201,19 +2113,23 @@
     {
         $procuringproject = $this->getObjectHelper()->getProcuringProjectType($id, $name);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "setSpecifiedProcuringProject", $procuringproject);
-        return $this;
-    }
-
-    /**
-     * Add a reference of the ultimate customer order
-     *
-     * @param  string        $issuerassignedid
-     * @param  DateTime|null $issueddate
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentUltimateCustomerOrderReferencedDocument(string $issuerassignedid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $additionalrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, null, null, null, null, $issueddate, null);
+
+        return $this;
+    }
+
+    /**
+     * Details of the associated end customer order
+     *
+     * @param  string        $issuerAssignedId __BT-X-150, From EXTENDED__ Order number of the end customer
+     * @param  DateTime|null $issueDate        __BT-X-151, From EXTENDED__ Date of the order issued by the end customer
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentUltimateCustomerOrderReferencedDocument(string $issuerAssignedId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $additionalrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, null, null, null, $issueDate, null);
+
         $this->getObjectHelper()->tryCall($this->headerTradeAgreement, "addToUltimateCustomerOrderReferencedDocument", $additionalrefdoc);
+
         return $this;
     }
@@ -2228,19 +2144,23 @@
     {
         $supplyChainevent = $this->getObjectHelper()->getSupplyChainEventType($date);
+
         $this->getObjectHelper()->tryCall($this->headerTradeDelivery, "setActualDeliverySupplyChainEvent", $supplyChainevent);
-        return $this;
-    }
-
-    /**
-     * Set detailed information on the associated shipping notification
-     *
-     * @param  string        $issuerassignedid __BT-16, From BASIC WL__ Shipping notification reference
-     * @param  DateTime|null $issueddate       __BT-, From __ Shipping notification date
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentDespatchAdviceReferencedDocument(?string $issuerassignedid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $despatchddvicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, null, null, null, null, $issueddate, null);
+
+        return $this;
+    }
+
+    /**
+     * Set Detailed information on the actual delivery
+     *
+     * @param  string        $issuerAssignedId __BT-16, From BASIC WL__ Shipping notification reference
+     * @param  DateTime|null $issueDate        __BT-X-200, From EXTENDED__ Shipping notification date
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentDespatchAdviceReferencedDocument(?string $issuerAssignedId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $despatchddvicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, null, null, null, $issueDate, null);
+
         $this->getObjectHelper()->tryCall($this->headerTradeDelivery, "setDespatchAdviceReferencedDocument", $despatchddvicerefdoc);
+
         return $this;
     }
@@ -2249,70 +2169,68 @@
      * Set detailed information on the associated goods receipt notification
      *
-     * @param  string        $issuerassignedid __BT-15, From EN 16931__ An identifier for a referenced goods receipt notification (Goods receipt number)
-     * @param  DateTime|null $issueddate       __BT-, From __ Goods receipt date
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentReceivingAdviceReferencedDocument(string $issuerassignedid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $receivingadvicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, null, null, null, null, $issueddate, null);
+     * @param  string        $issuerAssignedId __BT-15, From EN 16931__ An identifier for a referenced goods receipt notification (Goods receipt number)
+     * @param  DateTime|null $issueDate        __BT-X-201, From EXTENDED__ Goods receipt date
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentReceivingAdviceReferencedDocument(string $issuerAssignedId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $receivingadvicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, null, null, null, $issueDate, null);
+
         $this->getObjectHelper()->tryCall($this->headerTradeDelivery, "setReceivingAdviceReferencedDocument", $receivingadvicerefdoc);
-        return $this;
-    }
-
-    /**
-     * Set detailed information on the associated delivery note
+
+        return $this;
+    }
+
+    /**
+     * Set detailed information on the associated delivery bill
+     *
+     * @param  string        $issuerAssignedId __BT-X-202, From EXTENDED__ Delivery slip number
+     * @param  DateTime|null $issueDate        __BT-X-203, From EXTENDED__ Delivery slip date
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentDeliveryNoteReferencedDocument(string $issuerAssignedId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $deliverynoterefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, null, null, null, $issueDate, null);
+
+        $this->getObjectHelper()->tryCall($this->headerTradeDelivery, "setDeliveryNoteReferencedDocument", $deliverynoterefdoc);
+
+        return $this;
+    }
+
+    /**
+     * Add detailed information on the payment method
      *
      * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string        $issuerassignedid
-     * Delivery receipt number
-     * @param  DateTime|null $issueddate
-     * Delivery receipt date
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentDeliveryNoteReferencedDocument(string $issuerassignedid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $deliverynoterefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, null, null, null, null, $issueddate, null);
-        $this->getObjectHelper()->tryCall($this->headerTradeDelivery, "setDeliveryNoteReferencedDocument", $deliverynoterefdoc);
-        return $this;
-    }
-
-    /**
-     * Add detailed information on the payment method
-     *
-     * __Notes__
-     *  - The SpecifiedTradeSettlementPaymentMeans element can only be repeated for each bank account if
-     *    several bank accounts are to be transferred for transfers. The code for the payment method in the Typecode
-     *    element must therefore not differ in the repetitions. The elements ApplicableTradeSettlementFinancialCard
-     *    and PayerPartyDebtorFinancialAccount must not be specified for bank transfers.
-     *
-     * @param  string      $typecode          __BT-81, From BASIC WL__ The expected or used means of payment, expressed as a code. The entries from the UNTDID 4461 code list must be used. A distinction should be made between SEPA and non-SEPA payments as well as between credit payments, direct debits, card payments and other means of payment In particular, the following codes can be used:
-     *  - 10: cash
-     *  - 20: check
-     *  - 30: transfer
-     *  - 42: Payment to bank account
-     *  - 48: Card payment
-     *  - 49: direct debit
-     *  - 57: Standing order
-     *  - 58: SEPA Credit Transfer
-     *  - 59: SEPA Direct Debit
-     *  - 97: Report
+     *
+     * The SpecifiedTradeSettlementPaymentMeans element can only be repeated for each bank account if
+     * several bank accounts are to be transferred for transfers. The code for the payment method in the Typecode
+     * element must therefore not differ in the repetitions. The elements ApplicableTradeSettlementFinancialCard
+     * and PayerPartyDebtorFinancialAccount must not be specified for bank transfers.
+     *
+     * @param  string      $typeCode         __BT-81, From BASIC WL__ The expected or used means of payment, expressed as a code. The entries from the UNTDID 4461 code list must be used. A distinction should be made between SEPA and non-SEPA payments as well as between credit payments, direct debits, card payments and other means of payment In particular, the following codes can be used:
+     *                                       - 10: cash
+     *                                       - 20: check
+     *                                       - 30: transfer
+     *                                       - 42: Payment to bank account
+     *                                       - 48: Card payment
+     *                                       - 49: direct debit
+     *                                       - 57: Standing order
+     *                                       - 58: SEPA Credit Transfer
+     *                                       - 59: SEPA Direct Debit
+     *                                       - 97: Report
      * @param  string|null $information      __BT-82, From EN 16931__ The expected or used means of payment expressed in text form, e.g. cash, bank transfer, direct debit, credit card, etc.
      * @param  string|null $cardType         __BT-, From __ The type of the card
-     * @param  string|null $cardId           __BT-84, From BASIC WL__ The primary account number (PAN) to which the card used for payment belongs. In accordance with card payment security standards, an invoice should never contain a full payment card master account number. The following specification of the PCI Security Standards Council currently applies: The first 6 and last 4 digits at most are to be displayed
-     * @param  string|null $cardHolderName   __BT-, From __ Name of the payment card holder
-     * @param  string|null $buyerIban        __BT-91, From BASIC WL__ Direct debit: ID of the account to be debited
-     * @param  string|null $payeeIban        __BT-, From __ Transfer: A unique identifier for the financial account held with a payment service provider to which the payment should be made, e.g. Use an IBAN (in the case of a SEPA payment) for a national ProprietaryID account number
-     * @param  string|null $payeeAccountName __BT-, From __ The name of the payment account held with a payment service provider to which the payment should be made. Information only required if different from the name of the payee / seller
-     * @param  string|null $payeePropId      __BT-, From __ National account number (not for SEPA)
-     * @param  string|null $payeeBic         __BT-, From __ Seller's banking institution, An identifier for the payment service provider with whom the payment account is managed, such as the BIC or a national bank code, if required. No identification scheme is to be used.
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPaymentMean(string $typecode, ?string $information = null, ?string $cardType = null, ?string $cardId = null, ?string $cardHolderName = null, ?string $buyerIban = null, ?string $payeeIban = null, ?string $payeeAccountName = null, ?string $payeePropId = null, ?string $payeeBic = null): ZugferdDocumentBuilder
-    {
-        $cardId = substr($cardId ?? "", -4);
-
-        $paymentMeans = $this->getObjectHelper()->getTradeSettlementPaymentMeansType($typecode, $information);
+     * @param  string|null $cardId           __BT-87, From EN 16931__ The primary account number (PAN) to which the card used for payment belongs. In accordance with card payment security standards, an invoice should never contain a full payment card master account number. The following specification of the PCI Security Standards Council currently applies: The first 6 and last 4 digits at most are to be displayed
+     * @param  string|null $cardHolderName   __BT-88, From EN 16931__ Name of the payment card holder
+     * @param  string|null $buyerIban        __BT-91, From BASIC WL__ The account to be debited by the direct debit
+     * @param  string|null $payeeIban        __BT-84, From BASIC WL__ A unique identifier for the financial account held with a payment service provider to which the payment should be made
+     * @param  string|null $payeeAccountName __BT-85, From BASIC WL__ The name of the payment account held with a payment service provider to which the payment should be made
+     * @param  string|null $payeePropId      __BT-84-0, From BASIC WL__ National account number (not for SEPA)
+     * @param  string|null $payeeBic         __BT-86, From EN 16931__ An identifier for the payment service provider with which the payment account is held
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPaymentMean(string $typeCode, ?string $information = null, ?string $cardType = null, ?string $cardId = null, ?string $cardHolderName = null, ?string $buyerIban = null, ?string $payeeIban = null, ?string $payeeAccountName = null, ?string $payeePropId = null, ?string $payeeBic = null): ZugferdDocumentBuilder
+    {
+        $paymentMeans = $this->getObjectHelper()->getTradeSettlementPaymentMeansType($typeCode, $information);
         $financialCard = $this->getObjectHelper()->getTradeSettlementFinancialCardType($cardType, $cardId, $cardHolderName);
         $buyerfinancialaccount = $this->getObjectHelper()->getDebtorFinancialAccountType($buyerIban);
@@ -2325,5 +2243,5 @@
         $this->getObjectHelper()->tryCall($paymentMeans, "setPayeeSpecifiedCreditorFinancialInstitution", $payeefinancialInstitution);
 
-        $this->getObjectHelper()->tryCallAll($this->headerTradeSettlement, ["addToSpecifiedTradeSettlementPaymentMeans", "setSpecifiedTradeSettlementPaymentMeans"], $paymentMeans);
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToSpecifiedTradeSettlementPaymentMeans", $paymentMeans);
 
         return $this;
@@ -2332,20 +2250,10 @@
     /**
      * Sets the document payment means to _SEPA Credit Transfer_
-     * German translation: _Ãberweisung_
-     *
-     * @param  string      $payeeIban
-     * Transfer: A unique identifier for the financial account held with a payment service provider to which
-     * the payment should be made, e.g. Use an IBAN (in the case of a SEPA payment) for a national ProprietaryID
-     * account number
-     * @param  string|null $payeeAccountName
-     * The name of the payment account held with a payment service provider to which the payment should be made.
-     * Information only required if different from the name of the payee / seller
-     * @param  string|null $payeePropId
-     * National account number (not for SEPA)
-     * @param  string|null $payeeBic
-     * Seller's banking institution, An identifier for the payment service provider with whom the payment account
-     * is managed, such as the BIC or a national bank code, if required. No identification scheme is to be used.
-     * @param string|null $paymentReference
-     * Intended use for payment. It can also be set using `setDocumentGeneralPaymentInformation()`.
+     *
+     * @param  string      $payeeIban        __BT-84, From BASIC WL__ A unique identifier for the financial account held with a payment service provider to which the payment should be made
+     * @param  string|null $payeeAccountName __BT-85, From BASIC WL__ The name of the payment account held with a payment service provider to which the payment should be made
+     * @param  string|null $payeePropId      __BT-BT-84-0, From BASIC WL__ National account number (not for SEPA)
+     * @param  string|null $payeeBic         __BT-86, From EN 16931__ An identifier for the payment service provider with which the payment account is held
+     * @param  string|null $paymentReference __BT-83, From BASIC WL__ A text value used to link the payment to the invoice issued by the seller
      * @return ZugferdDocumentBuilder
      */
@@ -2359,5 +2267,5 @@
         $this->getObjectHelper()->tryCall($paymentMeans, "setPayeeSpecifiedCreditorFinancialInstitution", $payeefinancialInstitution);
 
-        $this->getObjectHelper()->tryCallAll($this->headerTradeSettlement, ["addToSpecifiedTradeSettlementPaymentMeans", "setSpecifiedTradeSettlementPaymentMeans"], $paymentMeans);
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToSpecifiedTradeSettlementPaymentMeans", $paymentMeans);
 
         if (!is_null($paymentReference)) {
@@ -2369,11 +2277,36 @@
 
     /**
+     * Sets the document payment means to _Non-SEPA Credit Transfer_
+     *
+     * @param  string      $payeeIban        __BT-84, From BASIC WL__ A unique identifier for the financial account held with a payment service provider to which the payment should be made
+     * @param  string|null $payeeAccountName __BT-85, From BASIC WL__ The name of the payment account held with a payment service provider to which the payment should be made
+     * @param  string|null $payeePropId      __BT-BT-84-0, From BASIC WL__ National account number (not for SEPA)
+     * @param  string|null $payeeBic         __BT-86, From EN 16931__ An identifier for the payment service provider with which the payment account is held
+     * @param  string|null $paymentReference __BT-83, From BASIC WL__ A text value used to link the payment to the invoice issued by the seller
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPaymentMeanToCreditTransferNonSepa(string $payeeIban, ?string $payeeAccountName = null, ?string $payeePropId = null, ?string $payeeBic = null, ?string $paymentReference = null): ZugferdDocumentBuilder
+    {
+        $paymentMeans = $this->getObjectHelper()->getTradeSettlementPaymentMeansType(ZugferdPaymentMeans::UNTDID_4461_30);
+        $payeefinancialaccount = $this->getObjectHelper()->getCreditorFinancialAccountType($payeeIban, $payeeAccountName, $payeePropId);
+        $payeefinancialInstitution = $this->getObjectHelper()->getCreditorFinancialInstitutionType($payeeBic);
+
+        $this->getObjectHelper()->tryCall($paymentMeans, "setPayeePartyCreditorFinancialAccount", $payeefinancialaccount);
+        $this->getObjectHelper()->tryCall($paymentMeans, "setPayeeSpecifiedCreditorFinancialInstitution", $payeefinancialInstitution);
+
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToSpecifiedTradeSettlementPaymentMeans", $paymentMeans);
+
+        if (!is_null($paymentReference)) {
+            $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setPaymentReference", $this->getObjectHelper()->getIdType($paymentReference));
+        }
+
+        return $this;
+    }
+
+    /**
      * Sets the document payment means to _SEPA Direct Debit_
      *
-     * @param  string $buyerIban
-     * Direct debit: ID of the account to be debited
-     * @param  string|null $creditorReferenceID
-     * Identifier of the creditor (German: "GlÃ€ubiger ID").
-     * It can also be set using `setDocumentGeneralPaymentInformation()`.
+     * @param  string      $buyerIban           __BT-91, From BASIC WL__ The account to be debited by the direct debit
+     * @param  string|null $creditorReferenceID __BT-90, From BASIC WL__ Unique bank identifier of the payee or the seller assigned by the bank of the payee or the seller
      * @return ZugferdDocumentBuilder
      */
@@ -2385,5 +2318,5 @@
         $this->getObjectHelper()->tryCall($paymentMeans, "setPayerPartyDebtorFinancialAccount", $buyerfinancialaccount);
 
-        $this->getObjectHelper()->tryCallAll($this->headerTradeSettlement, ["addToSpecifiedTradeSettlementPaymentMeans", "setSpecifiedTradeSettlementPaymentMeans"], $paymentMeans);
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToSpecifiedTradeSettlementPaymentMeans", $paymentMeans);
 
         if (!is_null($creditorReferenceID)) {
@@ -2395,15 +2328,32 @@
 
     /**
+     * Sets the document payment means to _Non-SEPA Direct Debit_
+     *
+     * @param  string      $buyerIban           __BT-91, From BASIC WL__ The account to be debited by the direct debit
+     * @param  string|null $creditorReferenceID __BT-90, From BASIC WL__ Unique bank identifier of the payee or the seller assigned by the bank of the payee or the seller
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPaymentMeanToDirectDebitNonSepa(string $buyerIban, ?string $creditorReferenceID = null): ZugferdDocumentBuilder
+    {
+        $paymentMeans = $this->getObjectHelper()->getTradeSettlementPaymentMeansType(ZugferdPaymentMeans::UNTDID_4461_49);
+        $buyerfinancialaccount = $this->getObjectHelper()->getDebtorFinancialAccountType($buyerIban);
+
+        $this->getObjectHelper()->tryCall($paymentMeans, "setPayerPartyDebtorFinancialAccount", $buyerfinancialaccount);
+
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToSpecifiedTradeSettlementPaymentMeans", $paymentMeans);
+
+        if (!is_null($creditorReferenceID)) {
+            $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setCreditorReferenceID", $this->getObjectHelper()->getIdType($creditorReferenceID));
+        }
+
+        return $this;
+    }
+
+    /**
      * Sets the document payment means to _Payment card_
      *
-     * @param  string      $cardType
-     * The type of the card, such as VISA, American Express, Master Card.
-     * @param  string      $cardId
-     * The primary account number (PAN) to which the card used for payment belongs. In accordance with card
-     * payment security standards, an invoice should never contain a full payment card master account number.
-     * The following specification of the PCI Security Standards Council currently applies: The first 6 and
-     * last 4 digits at most are to be displayed
-     * @param  string|null $cardHolderName
-     * Name of the payment card holder
+     * @param  string      $cardType       __BT-, From __ The type of the card
+     * @param  string      $cardId         __BT-87, From EN 16931__ The primary account number (PAN) to which the card used for payment belongs. In accordance with card payment security standards, an invoice should never contain a full payment card master account number. The following specification of the PCI Security Standards Council currently applies: The first 6 and last 4 digits at most are to be displayed
+     * @param  string|null $cardHolderName __BT-88, From EN 16931__ Name of the payment card holder
      * @return ZugferdDocumentBuilder
      */
@@ -2414,6 +2364,5 @@
 
         $this->getObjectHelper()->tryCall($paymentMeans, "setApplicableTradeSettlementFinancialCard", $financialCard);
-
-        $this->getObjectHelper()->tryCallAll($this->headerTradeSettlement, ["addToSpecifiedTradeSettlementPaymentMeans", "setSpecifiedTradeSettlementPaymentMeans"], $paymentMeans);
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToSpecifiedTradeSettlementPaymentMeans", $paymentMeans);
 
         return $this;
@@ -2424,25 +2373,26 @@
      *
      * @param  string        $categoryCode               __BT-118, From BASIC WL__ Coded description of a sales tax category
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
+     *
+     *                                                   The following entries from UNTDID 5305 are used (details in brackets):
+     *                                                   - Standard rate (sales tax is due according to the normal procedure)
+     *                                                   - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
+     *                                                   - Tax exempt (USt./IGIC/IPSI)
+     *                                                   - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
+     *                                                   - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
+     *                                                   - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
+     *                                                   - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
+     *                                                   - Canary Islands general indirect tax (IGIC tax applies)
+     *                                                   - IPSI (tax for Ceuta / Melilla) applies.
+     *
+     *                                                   The codes for the VAT category are as follows:
+     *                                                   - S = sales tax is due at the normal rate
+     *                                                   - Z = goods to be taxed according to the zero rate
+     *                                                   - E = tax exempt
+     *                                                   - AE = reversal of tax liability
+     *                                                   - K = VAT is not shown for intra-community deliveries
+     *                                                   - G = tax not levied due to export outside the EU
+     *                                                   - O = Outside the tax scope
+     *                                                   - L = IGIC (Canary Islands)
+     *                                                   - M = IPSI (Ceuta / Melilla)
      * @param  string        $typeCode                   __BT-118-0, From BASIC WL__ Coded description of a sales tax category. Note: Fixed value = "VAT"
      * @param  float         $basisAmount                __BT-116, From BASIC WL__ Tax base amount, Each sales tax breakdown must show a category-specific tax base amount.
@@ -2451,22 +2401,8 @@
      * @param  string|null   $exemptionReason            __BT-120, From BASIC WL__ Reason for tax exemption (free text)
      * @param  string|null   $exemptionReasonCode        __BT-121, From BASIC WL__ Reason given in code form for the exemption of the amount from VAT. Note: Code list issued and maintained by the Connecting Europe Facility.
-     * @param  float|null    $lineTotalBasisAmount       __BT-, From __ Tax rate goods amount
-     * @param  float|null    $allowanceChargeBasisAmount __BT-, From __ Total amount of surcharges and deductions of the tax rate at document level
-     * @param  DateTime|null $taxPointDate               __BT-, From __ Specification of a date, in accordance with the sales tax guideline, on which the sales tax for the seller and for the buyer becomes relevant for accounting, insofar as this date can be determined and differs from the invoice date
-     * Note: The tax collection date for VAT purposes is usually the date the goods were delivered or the service was completed (the base tax date). There are a few variations. For further information, please refer to Article 226 (7) of Council Directive 2006/112 / EC. This element is required if the date set for the sales tax return differs from the invoice date. Both the buyer and the seller should use the delivery date for VAT returns, if provided by the seller. This is not used in Germany. Instead, the delivery and service date must be specified.
-     * @param  string|null   $dueDateTypeCode            __BT-8, From BASIC WL__ The code for the date on which sales tax becomes relevant for the seller and the buyer.
-     * The code must distinguish between the following entries from UNTDID 2005:
-     *  - date of issue of the invoice document
-     *  - actual delivery date
-     *  - Date of payment.
-     * The VAT Collection Date Code is used when the VAT Collection Date is not known for VAT purposes
-     * when the invoice is issued.
-     * The semantic values cited in the standard, which are represented by the values 3, 35, 432 in
-     * UNTDID2005, are mapped to the following values of UNTDID2475, which is the relevant code list
-     * supported by CII 16B:
-     *  - 5: date of issue of the invoice
-     *  - 29: Delivery date, current status
-     *  - 72: Paid to date
-     * In Germany, the date of delivery and service is decisive.
+     * @param  float|null    $lineTotalBasisAmount       __BT-X-262, From EXTENDED__ An amount used as the basis for calculating sales tax, duty or customs duty
+     * @param  float|null    $allowanceChargeBasisAmount __BT-X-263, From EXTENDED__ Total amount Additions and deductions to the tax rate at document level
+     * @param  DateTime|null $taxPointDate               __BT-7-00, From EN 16931__ Date on which tax is due. This is not used in Germany. Instead, the delivery and service date must be specified.
+     * @param  string|null   $dueDateTypeCode            __BT-8, From BASIC WL__ The code for the date on which the VAT becomes relevant for settlement for the seller and for the buyer
      * @return ZugferdDocumentBuilder
      */
@@ -2474,5 +2410,7 @@
     {
         $tax = $this->getObjectHelper()->getTradeTaxType($categoryCode, $typeCode, $basisAmount, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, $lineTotalBasisAmount, $allowanceChargeBasisAmount, $taxPointDate, $dueDateTypeCode);
+
         $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToApplicableTradeTax", $tax);
+
         return $this;
     }
@@ -2481,41 +2419,27 @@
      * Add a VAT breakdown (at document level) in a more simple way
      *
-     * @param  string     $categoryCode
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  string     $typeCode
-     * Coded description of a sales tax category. Note: Fixed value = "VAT"
-     * @param  float      $basisAmount
-     * Tax base amount, Each sales tax breakdown must show a category-specific tax base amount.
-     * @param  float      $calculatedAmount
-     * The total amount to be paid for the relevant VAT category. Note: Calculated by multiplying
-     * the amount to be taxed according to the sales tax category by the sales tax rate applicable
-     * for the sales tax category concerned
-     * @param  float|null $rateApplicablePercent
-     * The sales tax rate, expressed as the percentage applicable to the sales tax category in
-     * question. Note: The code of the sales tax category and the category-specific sales tax rate
-     * must correspond to one another. The value to be given is the percentage. For example, the
-     * value 20 is given for 20% (and not 0.2)
+     * @param  string     $categoryCode          __BT-118, From BASIC WL__ Coded description of a sales tax category
+     *                                           The following entries from UNTDID 5305 are used (details in
+     *                                           brackets): - Standard rate (sales tax is due according to the
+     *                                           normal procedure) - Goods to be taxed according to the zero rate
+     *                                           (sales tax is charged with a percentage of zero) - Tax exempt
+     *                                           (USt./IGIC/IPSI) - Reversal of the tax liability (the rules for
+     *                                           reversing the tax liability at USt./IGIC/IPSI apply) - VAT exempt
+     *                                           for intra-community deliveries of goods (USt./IGIC/IPSI not levied
+     *                                           due to rules on intra-community deliveries) - Free export item, tax
+     *                                           not levied (VAT / IGIC/IPSI not levied due to export outside the
+     *                                           EU) - Services outside the tax scope (sales are not subject to VAT
+     *                                           / IGIC/IPSI) - Canary Islands general indirect tax (IGIC tax
+     *                                           applies) - IPSI (tax for Ceuta / Melilla) applies. The codes for
+     *                                           the VAT category are as follows: - S = sales tax is due at the
+     *                                           normal rate - Z = goods to be taxed according to the zero rate - E
+     *                                           = tax exempt - AE = reversal of tax liability - K = VAT is not
+     *                                           shown for intra-community deliveries - G = tax not levied due to
+     *                                           export outside the EU - O = Outside the tax scope - L = IGIC
+     *                                           (Canary Islands) - M = IPSI (Ceuta / Melilla)
+     * @param  string     $typeCode              __BT-118-0, From BASIC WL__ Coded description of a sales tax category. Note: Fixed value = "VAT"
+     * @param  float      $basisAmount           __BT-116, From BASIC WL__ Tax base amount, Each sales tax breakdown must show a category-specific tax base amount.
+     * @param  float      $calculatedAmount      __BT-117, From BASIC WL__ The total amount to be paid for the relevant VAT category. Note: Calculated by multiplying the amount to be taxed according to the sales tax category by the sales tax rate applicable for the sales tax category concerned
+     * @param  float|null $rateApplicablePercent __BT-119, From BASIC WL__ The sales tax rate, expressed as the percentage applicable to the sales tax category in question. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
      * @return ZugferdDocumentBuilder
      */
@@ -2528,13 +2452,15 @@
      * Get detailed information on the billing period
      *
-     * @param  DateTime|null $startdate   __BT-73, From BASIC WL__ Start of the billing period
+     * @param  DateTime|null $startDate   __BT-73, From BASIC WL__ Start of the billing period
      * @param  DateTime|null $endDate     __BT-74, From BASIC WL__ End of the billing period
-     * @param  string|null   $description __BT-, From __ Further information of the billing period
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentBillingPeriod(?DateTime $startdate, ?DateTime $endDate, ?string $description): ZugferdDocumentBuilder
-    {
-        $period = $this->getObjectHelper()->getSpecifiedPeriodType($startdate, $endDate, null, $description);
+     * @param  string|null   $description __BT-X-264, From EXTENDED__ Further information of the billing period (Obsolete)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentBillingPeriod(?DateTime $startDate, ?DateTime $endDate, ?string $description): ZugferdDocumentBuilder
+    {
+        $period = $this->getObjectHelper()->getSpecifiedPeriodType($startDate, $endDate, null, $description);
+
         $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setBillingSpecifiedPeriod", $period);
+
         return $this;
     }
@@ -2544,60 +2470,61 @@
      * such as for withheld taxes may also be specified in this group
      *
-     * @param  float       $actualAmount          __BT-92/BT-99, From BASIC WL__ Amount of the surcharge or discount at document level
-     * @param  boolean     $isCharge              __BT-20-1/BT-21-1, From BASIC WL__ Switch that indicates whether the following data refer to an surcharge or a discount, true means that this an charge
-     * @param  string      $taxCategoryCode       __BT-95/BT-102, From BASIC WL__ A coded indication of which sales tax category applies to the surcharge or deduction at document level
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta/Melilla)
-     * @param  string      $taxTypeCode           __BT-95-0/BT-102-0, From BASIC WL__ Code for the VAT category of the surcharge or charge at document level. Note: Fixed value = "VAT"
-     * @param  float       $rateApplicablePercent __BT-96/BT-103, From BASIC WL__ VAT rate for the surcharge or discount on document level. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
-     * @param  float|null  $sequence              __BT-, From __ Calculation order
-     * @param  float|null  $calculationPercent    __BT-94/BT-101, From BASIC WL__ Percentage surcharge or discount at document level
-     * @param  float|null  $basisAmount           __BT-93/BT-100, From BASIC WL__ The base amount that may be used in conjunction with the percentage of the surcharge or discount at document level to calculate the amount of the discount at document level
-     * @param  float|null  $basisQuantity         __BT-, From __ Basismenge des Rabatts
-     * @param  string|null $basisQuantityUnitCode __BT-, From __ Einheit der Preisbasismenge
-     *  - Codeliste: Rec. NÂ°20 VollstÃ€ndige Liste, In Recommendation NÂ°20 Intro 2.a ist beschrieben, dass
-     *    beide Listen kombiniert anzuwenden sind.
-     *  - Codeliste: Rec. NÂ°21 VollstÃ€ndige Liste, In Recommendation NÂ°20 Intro 2.a ist beschrieben, dass
-     *    beide Listen kombiniert anzuwenden sind.
-     * @param  string|null $reasonCode            __BT-98/BT-105, From BASIC WL__ The reason given as a code for the surcharge or discount at document level. Note: Use entries from the UNTDID 5189 code list. The code of the reason for the surcharge or discount at document level and the reason for the surcharge or discount at document level must correspond to each other
-     * Code list: UNTDID 7161 Complete list, code list: UNTDID 5189 Restricted
-     * Include PEPPOL subset:
-     *  - 41 - Bonus for works ahead of schedule
-     *  - 42 - Other bonus
-     *  - 60 - Manufacturerâs consumer discount
-     *  - 62 - Due to military status
-     *  - 63 - Due to work accident
-     *  - 64 - Special agreement
-     *  - 65 - Production error discount
-     *  - 66 - New outlet discount
-     *  - 67 - Sample discount
-     *  - 68 - End-of-range discount
-     *  - 70 - Incoterm discount
-     *  - 71 - Point of sales threshold allowance
-     *  - 88 - Material surcharge/deduction
-     *  - 95 - Discount
-     *  - 100 - Special rebate
-     *  - 102 - Fixed long term
-     *  - 103 - Temporary
-     *  - 104 - Standard
-     *  - 105 - Yearly turnover
+     * @param float       $actualAmount          __BT-92/BT-99, From BASIC WL__ Amount of the surcharge or discount at document level
+     * @param boolean     $isCharge              __BT-20-1/BT-21-1, From BASIC WL__ Switch that indicates whether the following data refer to an surcharge or a discount, true means that this an charge
+     * @param string      $taxCategoryCode       __BT-95/BT-102, From BASIC WL__ A coded indication of which sales tax category applies to the surcharge or deduction at document level
+     *
+     *                                           The following entries from UNTDID 5305 are used (details in brackets):
+     *                                           - Standard rate (sales tax is due according to the normal procedure)
+     *                                           - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
+     *                                           - Tax exempt (USt./IGIC/IPSI)
+     *                                           - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
+     *                                           - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
+     *                                           - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
+     *                                           - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
+     *                                           - Canary Islands general indirect tax (IGIC tax applies)
+     *                                           - IPSI (tax for Ceuta / Melilla) applies.
+     *
+     *                                           The codes for the VAT category are as follows:
+     *                                           - S = sales tax is due at the normal rate
+     *                                           - Z = goods to be taxed according to the zero rate
+     *                                           - E = tax exempt
+     *                                           - AE = reversal of tax liability
+     *                                           - K = VAT is not shown for intra-community deliveries
+     *                                           - G = tax not levied due to export outside the EU
+     *                                           - O = Outside the tax scope
+     *                                           - L = IGIC (Canary Islands)
+     *                                           - M = IPSI (Ceuta/Melilla)
+     *
+     * @param string      $taxTypeCode           __BT-95-0/BT-102-0, From BASIC WL__ Code for the VAT category of the surcharge or charge at document level. Note: Fixed value = "VAT"
+     * @param float       $rateApplicablePercent __BT-96/BT-103, From BASIC WL__ VAT rate for the surcharge or discount on document level. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
+     * @param float|null  $sequence              __BT-X-265, From EXTENDED__ Calculation order
+     * @param float|null  $calculationPercent    __BT-94/BT-101, From BASIC WL__ Percentage surcharge or discount at document level
+     * @param float|null  $basisAmount           __BT-93/BT-100, From BASIC WL__ The base amount that may be used in conjunction with the percentage of the surcharge or discount at document level to calculate the amount of the discount at document level
+     * @param float|null  $basisQuantity         __BT-X-266, From EXTENDED__ Base quantity of the discount
+     * @param string|null $basisQuantityUnitCode __BT-X-267, From EXTENDED__ Unit of the price base quantity
+     * @param string|null $reasonCode            __BT-98/BT-105, From BASIC WL__ The reason given as a code for the surcharge or discount at document level. Note: Use entries from the UNTDID 5189 code list. The code of the reason for the surcharge or discount at document level and the reason for the surcharge or discount at document level must correspond to each other
+     *
+     *                                           Code list: UNTDID 7161 Complete list, code list: UNTDID 5189 Restricted
+     *                                           Include PEPPOL subset:
+     *                                           - 41 - Bonus for works ahead of schedule
+     *                                           - 42 - Other bonus
+     *                                           - 60 - Manufacturerâs consumer discount
+     *                                           - 62 - Due to military status
+     *                                           - 63 - Due to work accident
+     *                                           - 64 - Special agreement
+     *                                           - 65 - Production error discount
+     *                                           - 66 - New outlet discount
+     *                                           - 67 - Sample discount
+     *                                           - 68 - End-of-range discount
+     *                                           - 70 - Incoterm discount
+     *                                           - 71 - Point of sales threshold allowance
+     *                                           - 88 - Material surcharge/deduction
+     *                                           - 95 - Discount
+     *                                           - 100 - Special rebate
+     *                                           - 102 - Fixed long term
+     *                                           - 103 - Temporary
+     *                                           - 104 - Standard
+     *                                           - 105 - Yearly turnover
+     *
      * @param  string|null $reason                __BT-97/BT-104, From BASIC WL__ The reason given in text form for the surcharge or discount at document level
      * @return ZugferdDocumentBuilder
@@ -2606,46 +2533,18 @@
     {
         $allowanceCharge = $this->getObjectHelper()->getTradeAllowanceChargeType($actualAmount, $isCharge, $taxTypeCode, $taxCategoryCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
+
         $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToSpecifiedTradeAllowanceCharge", $allowanceCharge);
-        return $this;
-    }
-
-    /**
-     * Add a logistical service fees (On document level)
-     *
-     * @param  string     $description
-     * Identification of the service fee
-     * @param  float      $appliedAmount
-     * Amount of the service fee
-     * @param  array|null $taxTypeCodes
-     * Coded description of a sales tax category. Note: Fixed value = "VAT"
-     * @param  array|null $taxCategoryCodes
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  array|null $rateApplicablePercents
-     * The sales tax rate, expressed as the percentage applicable to the sales tax category in
-     * question. Note: The code of the sales tax category and the category-specific sales tax rate
-     * must correspond to one another. The value to be given is the percentage. For example, the
-     * value 20 is given for 20% (and not 0.2)
+
+        return $this;
+    }
+
+    /**
+     * Add detailed information on logistics service fees
+     *
+     * @param  string     $description            __BT-X-271, From EXTENDED__ Identification of the service fee
+     * @param  float      $appliedAmount          __BT-X-272, From EXTENDED__ Amount of the service fee
+     * @param  array|null $taxTypeCodes           __BT-X-273-0, From EXTENDED__ Code of the Tax type. Note: Fixed value = "VAT"
+     * @param  array|null $taxCategoryCodes       __BT-X-273, From EXTENDED__ Code of the VAT category
+     * @param  array|null $rateApplicablePercents __BT-X-274, From EXTENDED__ The sales tax rate, expressed as the percentage applicable to the sales tax category in question. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
      * @return ZugferdDocumentBuilder
      */
@@ -2653,5 +2552,7 @@
     {
         $logcharge = $this->getObjectHelper()->getLogisticsServiceChargeType($description, $appliedAmount, $taxTypeCodes, $taxCategoryCodes, $rateApplicablePercents);
+
         $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToSpecifiedLogisticsServiceCharge", $logcharge);
+
         return $this;
     }
@@ -2661,14 +2562,17 @@
      *
      * @param  string|null   $description          __BT-20, From _BASIC WL__ A text description of the payment terms that apply to the payment amount due (including a description of possible penalties). Note: This element can contain multiple lines and multiple conditions.
-     * @param  DateTime|null $dueDate              __BT-9, From BASIC WL__ The date by which payment is due Note: The payment due date reflects the net payment due date. In the case of partial payments, this indicates the first due date of a net payment. The corresponding description of more complex payment terms can be given in BT--20.
+     * @param  DateTime|null $dueDate              __BT-9, From BASIC WL__ The date by which payment is due Note: The payment due date reflects the net payment due date. In the case of partial payments, this indicates the first due date of a net payment. The corresponding description of more complex payment terms can be given in BT-20.
      * @param  string|null   $directDebitMandateID __BT-89, From BASIC WL__ Unique identifier assigned by the payee to reference the direct debit authorization.
-     * __Note:__ Used to inform the buyer in advance about a SEPA direct debit. __Synonym:__ mandate reference for SEPA
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPaymentTerm(?string $description = null, ?DateTime $dueDate = null, ?string $directDebitMandateID = null): ZugferdDocumentBuilder
-    {
-        $paymentTerms = $this->getObjectHelper()->getTradePaymentTermsType($description, $dueDate, $directDebitMandateID);
+     * @param  float|null    $partialPaymentAmount __BT-X-275, From EXTENDED__ Amount of the partial payment
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPaymentTerm(?string $description = null, ?DateTime $dueDate = null, ?string $directDebitMandateID = null, ?float $partialPaymentAmount = null): ZugferdDocumentBuilder
+    {
+        $paymentTerms = $this->getObjectHelper()->getTradePaymentTermsType($description, $dueDate, $directDebitMandateID, $partialPaymentAmount);
+
         $this->getObjectHelper()->tryCallAll($this->headerTradeSettlement, ["addToSpecifiedTradePaymentTerms", "setSpecifiedTradePaymentTerms"], $paymentTerms);
+
         $this->currentPaymentTerms = $paymentTerms;
+
         return $this;
     }
@@ -2677,16 +2581,10 @@
      * Add discount Terms to last added payment term
      *
-     * @param  float|null    $calculationPercent
-     * Percentage of the down payment
-     * @param  DateTime|null $basisDateTime
-     * Due date reference date
-     * @param  float|null    $basisPeriodMeasureValue
-     * Due period
-     * @param  string|null   $basisPeriodMeasureUnitCode
-     * Due period, unit
-     * @param  float|null    $basisAmount
-     * Base amount of the down payment
-     * @param  float|null    $actualDiscountAmount
-     * Amount of the down payment
+     * @param  float|null    $calculationPercent         __BT-X-286, From EXTENDED__ Percentage of the down payment
+     * @param  DateTime|null $basisDateTime              __BT-X-282, From EXTENDED__ Due date reference date
+     * @param  float|null    $basisPeriodMeasureValue    __BT-X-283, From EXTENDED__ Maturity period (basis)
+     * @param  string|null   $basisPeriodMeasureUnitCode __BT-X-284, From EXTENDED__ Maturity period (unit)
+     * @param  float|null    $basisAmount                __BT-X-285, From EXTENDED__ Base amount of the payment discount
+     * @param  float|null    $actualDiscountAmount       __BT-X-287, From EXTENDED__ Amount of the payment discount
      * @return ZugferdDocumentBuilder
      */
@@ -2694,20 +2592,135 @@
     {
         $discountTerms = $this->getObjectHelper()->getTradePaymentDiscountTermsType($basisDateTime, $basisPeriodMeasureValue, $basisPeriodMeasureUnitCode, $basisAmount, $calculationPercent, $actualDiscountAmount);
+
         $this->getObjectHelper()->tryCall($this->currentPaymentTerms, "setApplicableTradePaymentDiscountTerms", $discountTerms);
-        return $this;
-    }
-
-    /**
-     * Add an AccountingAccount
-     * Detailinformationen zur Buchungsreferenz
-     *
-     * @param  string      $id       __BT-19, From BASIC WL__
-     * @param  string|null $typeCode __BT-, From __
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentReceivableSpecifiedTradeAccountingAccount(?string $id, ?string $typeCode): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add penalty Terms to last added payment term
+     *
+     * @param  float|null    $calculationPercent         __BT-X-280, From EXTENDED__ Percentage of the payment surcharge
+     * @param  DateTime|null $basisDateTime              __BT-X-276, From EXTENDED__ Due date reference date
+     * @param  float|null    $basisPeriodMeasureValue    __BT-X-277, From EXTENDED__ Maturity period (basis)
+     * @param  string|null   $basisPeriodMeasureUnitCode __BT-X-278, From EXTENDED__ Maturity period (unit)
+     * @param  float|null    $basisAmount                __BT-X-279, From EXTENDED__ Basic amount of the payment surcharge
+     * @param  float|null    $actualPenaltyAmount        __BT-X-281, From EXTENDED__ Amount of the payment surcharge
+     * @return ZugferdDocumentBuilder
+     */
+    public function addPenaltyTermsToPaymentTerms(?float $calculationPercent = null, ?DateTime $basisDateTime = null, ?float $basisPeriodMeasureValue = null, ?string $basisPeriodMeasureUnitCode = null, ?float $basisAmount = null, ?float $actualPenaltyAmount = null): ZugferdDocumentBuilder
+    {
+        $penaltyTerms = $this->getObjectHelper()->getTradePaymentPenaltyTermsType($basisDateTime, $basisPeriodMeasureValue, $basisPeriodMeasureUnitCode, $basisAmount, $calculationPercent, $actualPenaltyAmount);
+
+        $this->getObjectHelper()->tryCall($this->currentPaymentTerms, "setApplicableTradePaymentPenaltyTerms", $penaltyTerms);
+
+        return $this;
+    }
+
+    /**
+     * Add a payment term in XRechnung-Style (in the Form #SKONTO#TAGE=14#PROZENT=1.00#BASISBETRAG=2.53#)
+     *
+     * @param  string        $description                __BT-20, From _EN 16931 XRECHNUNG__ Text to add
+     * @param  int[]         $paymentDiscountDays        __BT-20, BR-DE-18, From _EN 16931 XRECHNUNG__ Array of Payment discount days (array of integer)
+     * @param  float[]       $paymentDiscountPercents    __BT-20, BR-DE-18, From _EN 16931 XRECHNUNG__ Array of Payment discount percents (array of decimal)
+     * @param  float[]       $paymentDiscountBaseAmounts __BT-20, BR-DE-18, From _EN 16931 XRECHNUNG__ Array of Payment discount base amounts (array of decimal)
+     * @param  DateTime|null $dueDate                    __BT-9, From EN 16931 XRECHNUNG__ The date by which payment is due Note: The payment due date reflects the net payment due date. In the case of partial payments, this indicates the first due date of a net payment. The corresponding description of more complex payment terms can be given in BT-20.
+     * @param  string|null   $directDebitMandateID       __BT-89, From EN 16931 XRECHNUNG__ Unique identifier assigned by the payee to reference the direct debit authorization.
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPaymentTermXRechnung(string $description, array $paymentDiscountDays = [], array $paymentDiscountPercents = [], array $paymentDiscountBaseAmounts = [], ?DateTime $dueDate = null, ?string $directDebitMandateID = null): ZugferdDocumentBuilder
+    {
+        $paymentTermsDescription = [];
+
+        if ($this->getObjectHelper()->isNullOrEmpty($description)) {
+            return $this;
+        }
+
+        $paymentDiscountDays = array_filter(
+            $paymentDiscountDays,
+            function ($k) use ($paymentDiscountPercents) {
+                return isset($paymentDiscountPercents[$k]);
+            },
+            ARRAY_FILTER_USE_KEY
+        );
+
+        if ($paymentDiscountDays === []) {
+            return $this->addDocumentPaymentTerm(trim($description), $dueDate, $directDebitMandateID);
+        }
+
+        foreach ($paymentDiscountDays as $paymentDiscountDayIndex => $paymentDiscountDay) {
+            $paymentTermsDescription[] =
+                sprintf(
+                    isset($paymentDiscountBaseAmounts[$paymentDiscountDayIndex])
+                        ? "#SKONTO#TAGE=%s#PROZENT=%s#BASISBETRAG=%s#"
+                        : "#SKONTO#TAGE=%s#PROZENT=%s#",
+                    number_format($paymentDiscountDay, 0, ".", ""),
+                    number_format($paymentDiscountPercents[$paymentDiscountDayIndex] ?? 0.0, 2, ".", ""),
+                    number_format($paymentDiscountBaseAmounts[$paymentDiscountDayIndex] ?? 0.0, 2, ".", "")
+                );
+        }
+
+        return $this->addDocumentPaymentTerm(
+            trim(sprintf("%s\n%s", implode("\n", $paymentTermsDescription), $description)),
+            $dueDate,
+            $directDebitMandateID
+        );
+    }
+
+    /**
+     * Add information on the booking reference
+     *
+     * @param  string      $id       __BT-19, From BASIC WL__ Posting reference of the byuer. If required, this reference shall be provided by the Buyer to the Seller prior to the issuing of the Invoice.
+     * @param  string|null $typeCode __BT-X-290, From EXTENDED__ Type of the posting reference. Allowed values: 1 = Financial, 2 = Subsidiary, 3 = Budget, 4 = Cost Accounting, 5 = Payable, 6 = Job Cost Accounting
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentReceivableSpecifiedTradeAccountingAccount(string $id, ?string $typeCode = null): ZugferdDocumentBuilder
     {
         $account = $this->getObjectHelper()->getTradeAccountingAccountType($id, $typeCode);
-        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "addToReceivableSpecifiedTradeAccountingAccount", $account);
+
+        $this->getObjectHelper()->tryCallAll($this->headerTradeSettlement, ["addToReceivableSpecifiedTradeAccountingAccount", "setReceivableSpecifiedTradeAccountingAccount"], $account);
+
+        return $this;
+    }
+
+    /**
+     * Initilize the main document summation
+     *
+     * @return ZugferdDocumentBuilder
+     */
+    public function initDocumentSummation(): ZugferdDocumentBuilder
+    {
+        $this->setDocumentSummation(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
+
+        return $this;
+    }
+
+    /**
+     * Document money summation
+     *
+     * @param  float      $grandTotalAmount     __BT-112, From MINIMUM__ Total invoice amount including sales tax
+     * @param  float      $duePayableAmount     __BT-115, From MINIMUM__ Payment amount due
+     * @param  float|null $lineTotalAmount      __BT-106, From BASIC WL__ Sum of the net amounts of all invoice items
+     * @param  float|null $chargeTotalAmount    __BT-108, From BASIC WL__ Sum of the surcharges at document level
+     * @param  float|null $allowanceTotalAmount __BT-107, From BASIC WL__ Sum of the discounts at document level
+     * @param  float|null $taxBasisTotalAmount  __BT-109, From MINIMUM__ Total invoice amount excluding sales tax
+     * @param  float|null $taxTotalAmount       __BT-110/111, From MINIMUM/BASIC WL__ if BT-6 is not null $taxTotalAmount = BT-111. Total amount of the invoice sales tax, Total tax amount in the booking currency
+     * @param  float|null $roundingAmount       __BT-114, From EN 16931__ Rounding amount
+     * @param  float|null $totalPrepaidAmount   __BT-113, From BASIC WL__ Prepayment amount
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentSummation(float $grandTotalAmount, float $duePayableAmount, ?float $lineTotalAmount = null, ?float $chargeTotalAmount = null, ?float $allowanceTotalAmount = null, ?float $taxBasisTotalAmount = null, ?float $taxTotalAmount = null, ?float $roundingAmount = null, ?float $totalPrepaidAmount = null): ZugferdDocumentBuilder
+    {
+        $summation = $this->getObjectHelper()->getTradeSettlementHeaderMonetarySummationType($grandTotalAmount, $duePayableAmount, $lineTotalAmount, $chargeTotalAmount, $allowanceTotalAmount, $taxBasisTotalAmount, $taxTotalAmount, $roundingAmount, $totalPrepaidAmount);
+
+        $this->getObjectHelper()->tryCall($this->headerTradeSettlement, "setSpecifiedTradeSettlementHeaderMonetarySummation", $summation);
+
+        $taxTotalAmount = $this->getObjectHelper()->ensureArray($this->getObjectHelper()->tryCallAndReturn($summation, "getTaxTotalAmount"));
+
+        if (isset($taxTotalAmount[0])) {
+            $invoiceCurrencyCode = $this->getObjectHelper()->tryCallByPathAndReturn($this->headerTradeSettlement, "getInvoiceCurrencyCode.value");
+            $this->getObjectHelper()->tryCall($taxTotalAmount[0], 'setCurrencyID', $invoiceCurrencyCode);
+        }
+
         return $this;
     }
@@ -2716,15 +2729,12 @@
      * Adds a new position (line) to document
      *
-     * @param  string      $lineid               __BT-126, From BASIC__ A unique identifier for the relevant item within the invoice (item number)
-     * @param  string|null $lineStatusCode       __BT-, From BASIC__ Indicates whether the invoice item contains prices that must be taken into account when calculating the invoice amount, or whether it only contains information. The following code should be used: TYPE_LINE
-     * @param  string|null $lineStatusReasonCode __BT-, From BASIC__ Adds the type to specify whether the invoice line is:
-     *  - detail (normal position)
-     *  - Subtotal
-     *  - Information only
-     *
-     * If the $lineStatusCode field is used, the LineStatusReasonCode field must use the following codes:
-     *  - detail
-     *  - grouping
-     *  - information
+     * @param string      $lineid               __BT-126, From BASIC__ Identification of the invoice item
+     * @param string|null $lineStatusCode       __BT-X-7, From EXTENDED__ Indicates whether the invoice item contains prices that must be taken into account when calculating the invoice amount or whether only information is included.
+     * @param string|null $lineStatusReasonCode __BT-X-8, From EXTENDED__ Adds the type to specify whether the invoice line is:
+     *
+     *                                          - DETAIL: detail (normal position)
+     *                                          - GROUP: Subtotal
+     *                                          - INFORMATION: Information only
+     *
      * @return ZugferdDocumentBuilder
      */
@@ -2732,6 +2742,9 @@
     {
         $position = $this->getObjectHelper()->getSupplyChainTradeLineItemType($lineid, $lineStatusCode, $lineStatusReasonCode);
+
         $this->getObjectHelper()->tryCall($this->headerSupplyChainTradeTransaction, "addToIncludedSupplyChainTradeLineItem", $position);
+
         $this->currentPosition = $position;
+
         return $this;
     }
@@ -2740,36 +2753,27 @@
      * Adds a new text-only position (line) to document
      *
-     * @param  string      $lineid
-     * A unique identifier for the relevant item within the invoice (item number)
-     * @param  string|null $lineStatusCode
-     * Indicates whether the invoice item contains prices that must be taken into account when
-     * calculating the invoice amount, or whether it only contains information.
-     * The following code should be used: TYPE_LINE
-     * @param  string|null $lineStatusReasonCode
-     * Adds the type to specify whether the invoice line is:
-     *  - detail (normal position)
-     *  - Subtotal
-     *  - Information only
-     * If the $lineStatusCode field is used, the LineStatusReasonCode field must use the following codes:
-     *  - detail
-     *  - grouping
-     *  - information
-     * @return ZugferdDocumentBuilder
+     * @param      string      $lineid               __BT-126, From BASIC__ Identification of the invoice item
+     * @param      string|null $lineStatusCode       __BT-X-7, From EXTENDED__ Indicates whether the invoice item contains prices that must be taken into account when calculating the invoice amount or whether only information is included.
+     * @param      string|null $lineStatusReasonCode __BT-X-8, From EXTENDED__ Adds the type to specify whether the invoice line is:
+     * @return     ZugferdDocumentBuilder
+     * @deprecated 1.0.75
      */
     public function addNewTextPosition(string $lineid, ?string $lineStatusCode = null, ?string $lineStatusReasonCode = null): ZugferdDocumentBuilder
     {
         $position = $this->getObjectHelper()->getSupplyChainTradeLineItemType($lineid, $lineStatusCode, $lineStatusReasonCode, true);
+
         $this->getObjectHelper()->tryCall($this->headerSupplyChainTradeTransaction, "addToIncludedSupplyChainTradeLineItem", $position);
+
         $this->currentPosition = $position;
-        return $this;
-    }
-
-    /**
-     * Add detailed information on the free text on the position
+
+        return $this;
+    }
+
+    /**
+     * Add detailed information on the free text on the position.
      *
      * @param  string      $content     __BT-127, From BASIC__ A free text that contains unstructured information that is relevant to the invoice item
-     * @param  string|null $contentCode __BT-, From __ Text modules agreed bilaterally, which are transmitted here as code.
-     * @param  string|null $subjectCode __BT-, From __ Free text for the position (code for the type)
-     * __Codelist:__ UNTDID 4451
+     * @param  string|null $contentCode __BT-X-9, From EXTENDED__ A code to classify the content of the free text of the invoice. The code is agreed bilaterally and must have the same meaning as BT-127.
+     * @param  string|null $subjectCode __BT-X-10, From EXTENDED__ Code for qualifying the free text for the invoice item (Codelist UNTDID 4451)
      * @return ZugferdDocumentBuilder
      */
@@ -2778,23 +2782,32 @@
         $linedoc = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getAssociatedDocumentLineDocument");
         $note = $this->getObjectHelper()->getNoteType($content, $contentCode, $subjectCode);
+
         $this->getObjectHelper()->tryCallAll($linedoc, ["addToIncludedNote", "setIncludedNote"], $note);
-        return $this;
-    }
-
-    /**
-     * Adds product details to the last created position (line) in the document
-     *
-     * @param  string      $name             __BT-153, From BASIC__ A name of the item (item name)
-     * @param  string|null $description      __BT-154, From EN 16931__ A description of the item, the item description makes it possible to describe the item and its properties in more detail than is possible with the item name.
-     * @param  string|null $sellerAssignedID __BT-155, From EN 16931__ An identifier assigned to the item by the seller
-     * @param  string|null $buyerAssignedID  __BT-156, From EN 16931__ An identifier assigned to the item by the buyer. The article number of the buyer is a clear, bilaterally agreed identification of the product. It can, for example, be the customer article number or the article number assigned by the manufacturer.
-     * @param  string|null $globalIDType     __BT-157-1, From BASIC__ The scheme for $globalID
-     * @param  string|null $globalID         __BT-157, From BASIC__ Identification of an article according to the registered scheme (Global identifier of the product, GTIN, ...)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionProductDetails(string $name, ?string $description = null, ?string $sellerAssignedID = null, ?string $buyerAssignedID = null, ?string $globalIDType = null, ?string $globalID = null): ZugferdDocumentBuilder
-    {
-        $product = $this->getObjectHelper()->getTradeProductType($name, $description, $sellerAssignedID, $buyerAssignedID, $globalIDType, $globalID);
+
+        return $this;
+    }
+
+    /**
+     * Adds product details to the last created position (line) in the document.
+     *
+     * @param  string      $name               __BT-153, From BASIC__ A name of the item (item name)
+     * @param  string|null $description        __BT-154, From EN 16931__ A description of the item, the item description makes it possible to describe the item and its properties in more detail than is possible with the item name.
+     * @param  string|null $sellerAssignedID   __BT-155, From EN 16931__ An identifier assigned to the item by the seller
+     * @param  string|null $buyerAssignedID    __BT-156, From EN 16931__ An identifier assigned to the item by the buyer. The article number of the buyer is a clear, bilaterally agreed identification of the product. It can, for example, be the customer article number or the article number assigned by the manufacturer.
+     * @param  string|null $globalIDType       __BT-157-1, From BASIC__ The scheme for $globalID
+     * @param  string|null $globalID           __BT-157, From BASIC__ Identification of an article according to the registered scheme (Global identifier of the product, GTIN, ...)
+     * @param  string|null $industryAssignedID __BT-X-309, From EXTENDED__ ID assigned by the industry to the contained referenced product
+     * @param  string|null $modelID            __BT-X-533, From EXTENDED__ A unique model identifier for this product
+     * @param  string|null $batchID            __BT-X-534. From EXTENDED__ Identification of the batch (lot) of the product
+     * @param  string|null $brandName          __BT-X-535. From EXTENDED__ The brand name, expressed as text, for this product
+     * @param  string|null $modelName          __BT-X-536. From EXTENDED__ Model designation of the product
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionProductDetails(string $name, ?string $description = null, ?string $sellerAssignedID = null, ?string $buyerAssignedID = null, ?string $globalIDType = null, ?string $globalID = null, ?string $industryAssignedID = null, ?string $modelID = null, ?string $batchID = null, ?string $brandName = null, ?string $modelName = null): ZugferdDocumentBuilder
+    {
+        $product = $this->getObjectHelper()->getTradeProductType($name, $description, $sellerAssignedID, $buyerAssignedID, $globalIDType, $globalID, $industryAssignedID, $modelID, $batchID, $brandName, $modelName);
+
         $this->getObjectHelper()->tryCall($this->currentPosition, "setSpecifiedTradeProduct", $product);
+
         return $this;
     }
@@ -2802,60 +2815,70 @@
     /**
      * Add extra characteristics to the formerly added product.
-     * Contains information about the characteristics of the goods and services invoiced
-     *
-     * @param  string      $description
-     * The name of the attribute or property of the product such as "Colour"
-     * @param  string      $value
-     * The value of the attribute or property of the product such as "Red"
-     * @param  string|null $typecode
-     * Type of product property (code). The codes must be taken from the
-     * UNTDID 6313 codelist. Available only in the Extended-Profile
-     * @param  float|null  $valueMeasure
-     * Value of the product property (numerical measurand)
-     * @param  string|null $valueMeasureUnitCode
-     * Unit of measurement of the measurand
-     *  - Codeliste: Rec. NÂ°20 VollstÃ€ndige Liste, In Recommendation NÂ°20 Intro 2.a ist beschrieben, dass
-     *    beide Listen kombiniert anzuwenden sind.
-     *  - Codeliste: Rec. NÂ°21 VollstÃ€ndige Liste, In Recommendation NÂ°20 Intro 2.a ist beschrieben, dass
-     *    beide Listen kombiniert anzuwenden sind.
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPositionProductCharacteristic(string $description, string $value, ?string $typecode = null, ?float $valueMeasure = null, ?string $valueMeasureUnitCode = null): ZugferdDocumentBuilder
+     * Contains information about the characteristics of the goods and services invoiced.
+     *
+     * @param  string      $description          __BT-160, From EN 16931__ The name of the attribute or property of the product such as "Colour"
+     * @param  string      $value                __BT-161, From EN 16931__ The value of the attribute or property of the product such as "Red"
+     * @param  string|null $typeCode             __BT-X-11, From EXTENDED__ Type of product characteristic (code). The codes must be taken from the UNTDID 6313 codelist.
+     * @param  float|null  $valueMeasure         __BT-X-12, From EXTENDED__ Value of the product property (numerical measured variable)
+     * @param  string|null $valueMeasureUnitCode __BT-X-12-0, From EXTENDED__ Unit of measurement code
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionProductCharacteristic(string $description, string $value, ?string $typeCode = null, ?float $valueMeasure = null, ?string $valueMeasureUnitCode = null): ZugferdDocumentBuilder
     {
         $product = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedTradeProduct");
-        $productCharacteristic = $this->getObjectHelper()->getProductCharacteristicType($typecode, $description, $valueMeasure, $valueMeasureUnitCode, $value);
+        $productCharacteristic = $this->getObjectHelper()->getProductCharacteristicType($typeCode, $description, $valueMeasure, $valueMeasureUnitCode, $value);
+
         $this->getObjectHelper()->tryCall($product, "addToApplicableProductCharacteristic", $productCharacteristic);
-        return $this;
-    }
-
-    /**
-     * Add detailed information on product classification
-     *
-     * @param  string      $classCode
-     * A code for classifying the item by type or nature or essence or condition.
-     * __Note__: Classification codes are used to group similar items for different purposes, such as public
-     * procurement (using the Common Procurement Vocabulary [CPV]), e-commerce (UNSPSC), etc.
-     * @param  string|null $className
-     * Classification name
-     * @param  string|null $listID
-     * The identifier for the identification scheme of the identifier of the article classification
-     * __Note__: The identification scheme must be selected from the entries from UNTDID 7143.
-     * @param  string|null $listVersionID
-     * The version of the identification scheme
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPositionProductClassification(string $classCode, ?string $className = null, ?string $listID = null, ?string $listVersionID = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add detailed information on product classification.
+     *
+     * @param  string      $classCode     __BT-158, From EN 16931__ Item classification identifier. Classification codes are used for grouping similar items that can serve different purposes, such as public procurement (according to the Common Procurement Vocabulary ([CPV]), e-commerce (UNSPSC), etc.
+     * @param  string|null $className     __BT-X-138, From EXTENDED__ Name with which an article can be classified according to type or quality.
+     * @param  string|null $listId        __BT-158-1, From EN 16931__ The identifier for the identification scheme of the item classification identifier. The identification scheme must be selected from the entries in UNTDID 7143 [6].
+     * @param  string|null $listVersionId __BT-158-2, From EN 16931__ The version of the identification scheme
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionProductClassification(string $classCode, ?string $className = null, ?string $listId = null, ?string $listVersionId = null): ZugferdDocumentBuilder
     {
         $product = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedTradeProduct");
-        $productClassification = $this->getObjectHelper()->getProductClassificationType($classCode, $className, $listID, $listVersionID);
+        $productClassification = $this->getObjectHelper()->getProductClassificationType($classCode, $className, $listId, $listVersionId);
+
         $this->getObjectHelper()->tryCall($product, "addToDesignatedProductClassification", $productClassification);
-        return $this;
-    }
-
-    /**
-     * Sets the detailed information on the product origin
-     *
-     * @param  string $country __BT-159, From EN 16931__ The code indicating the country the goods came from
-     * __Note__: The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ.
+
+        return $this;
+    }
+
+    /**
+     * Add detailed information on included products. This information relates to the product that has just been added.
+     *
+     * @param  string      $name               __BT-X-18, From EXTENDED__ Name of the referenced product contained
+     * @param  string|null $description        __BT-X-19, From EXTENDED__ Description of the included referenced product
+     * @param  string|null $sellerAssignedID   __BT-X-16, From EXTENDED__ ID assigned by the seller of the contained referenced product
+     * @param  string|null $buyerAssignedID    __BT-X-17, From EXTENDED__ ID of the referenced product assigned by the buyer
+     * @param  string|null $globalID           __BT-X-15, From EXTENDED__ Global ID of the referenced product contained
+     * @param  string|null $globalIDType       __BT-X-15-1, From EXTENDED__ Identification of the scheme
+     * @param  float|null  $unitQuantity       __BT-X-20, From EXTENDED__ Quantity of the referenced product contained
+     * @param  string|null $unitCode           __BT-X-20-1, From EXTENDED__ Unit code of Quantity of the referenced product contained
+     * @param  string|null $industryAssignedID __BT-X-309, From EXTENDED__ ID of the referenced product contained assigned by the industry
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionReferencedProduct(string $name, ?string $description = null, ?string $sellerAssignedID = null, ?string $buyerAssignedID = null, ?string $globalID = null, ?string $globalIDType = null, ?float $unitQuantity = null, ?string $unitCode = null, ?string $industryAssignedID = null): ZugferdDocumentBuilder
+    {
+        $product = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedTradeProduct");
+        $referencedProduct = $this->getObjectHelper()->getReferencedProductType($globalID, $globalIDType, $sellerAssignedID, $buyerAssignedID, $industryAssignedID, $name, $description, $unitQuantity, $unitCode);
+
+        $this->getObjectHelper()->tryCall($product, "addToIncludedReferencedProduct", $referencedProduct);
+
+        return $this;
+    }
+
+    /**
+     * Sets the detailed information on the product origin.
+     *
+     * @param  string $country __BT-159, From EN 16931__ The code indicating the country the goods came from. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ.
      * @return ZugferdDocumentBuilder
      */
@@ -2864,145 +2887,126 @@
         $product = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedTradeProduct");
         $productTradeCounty = $this->getObjectHelper()->getTradeCountryType($country);
+
         $this->getObjectHelper()->tryCall($product, "setOriginTradeCountry", $productTradeCounty);
-        return $this;
-    }
-
-    /**
-     * Add detailed information on included products. This information relates to the
-     * product that has just been added
-     *
-     * @param  string      $name
-     * Item name
-     * @param  string|null $description
-     * Item description
-     * @param  string|null $sellerAssignedID
-     * Item number of the seller
-     * @param  string|null $buyerAssignedID
-     * Item number of the buyer
-     * __Note__: The identifier of the product is a unique, bilaterally agreed identification of the
-     * product. It can, for example, be the customer article number or the article number assigned by
-     * the manufacturer.
-     * @param  string|null $globalID
-     * Global identifier of the product
-     * __Note__: The global identifier of the product is a label uniquely assigned by the manufacturer,
-     * which is based on the rules of a global registration organization.
-     * @param  string|null $globalIDType
-     * Type of global item number
-     * In particular, the following codes can be used:
-     *  * 0021: SWIFT
-     *  * 0088: EAN
-     *  * 0060: DUNS
-     *  * 0177: ODETTE
-     * @param  float|null  $unitQuantity
-     * Included quantity
-     * @param  string|null $unitCode
-     * Unit of measurement of the included quantity
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPositionReferencedProduct(string $name, ?string $description = null, ?string $sellerAssignedID = null, ?string $buyerAssignedID = null, ?string $globalID = null, ?string $globalIDType = null, ?float $unitQuantity = null, ?string $unitCode = null): ZugferdDocumentBuilder
-    {
-        $product = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedTradeProduct");
-        $referencedProduct = $this->getObjectHelper()->getReferencedProductType($globalID, $globalIDType, $sellerAssignedID, $buyerAssignedID, $name, $description, $unitQuantity, $unitCode);
-        $this->getObjectHelper()->tryCall($product, "addToIncludedReferencedProduct", $referencedProduct);
-        return $this;
-    }
-
-    /**
-     * Set details of the related buyer order position
-     *
-     * @param  string        $issuerassignedid __BT-13, From MINIMUM__ An identifier issued by the buyer for a referenced order (order number)
-     * @param  string        $lineid           __BT-132, From EN 16931__ An identifier for a position within an order placed by the buyer. Note: Reference is made to the order reference at the document level.
-     * @param  DateTime|null $issueddate       __BT-, From __ Date of order
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionBuyerOrderReferencedDocument(string $issuerassignedid, string $lineid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $buyerorderrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, $lineid, null, null, null, $issueddate, null);
+
+        return $this;
+    }
+
+    /**
+     * Set details of a sales order reference.
+     *
+     * @param  string        $issuerAssignedId __BT-X-537, From EXTENDED__ Document number of a sales order reference
+     * @param  string        $lineId           __BT-X-538, From EXTENDED__ An identifier for a position within a sales order.
+     * @param  DateTime|null $issueDate        __BT-X-539, From EXTENDED__ Date of sales order
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionSellerOrderReferencedDocument(string $issuerAssignedId, string $lineId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $sellerorderrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, $lineId, null, null, null, $issueDate, null);
         $positionagreement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeAgreement");
+
+        $this->getObjectHelper()->tryCall($positionagreement, "setSellerOrderReferencedDocument", $sellerorderrefdoc);
+
+        return $this;
+    }
+
+    /**
+     * Set details of the related buyer order position.
+     *
+     * @param  string        $issuerAssignedId __BT-X-21, From EXTENDED__ An identifier issued by the buyer for a referenced order (order number)
+     * @param  string        $lineId           __BT-132, From EN 16931__ An identifier for a position within an order placed by the buyer. Note: Reference is made to the order reference at the document level.
+     * @param  DateTime|null $issueDate        __BT-X-22, From EXTENDED__ Date of order
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionBuyerOrderReferencedDocument(string $issuerAssignedId, string $lineId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $buyerorderrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, $lineId, null, null, null, $issueDate, null);
+        $positionagreement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeAgreement");
+
         $this->getObjectHelper()->tryCall($positionagreement, "setBuyerOrderReferencedDocument", $buyerorderrefdoc);
-        return $this;
-    }
-
-    /**
-     * Set details of the related contract position
-     *
-     * @param  string        $issuerassignedid
-     * The contract reference should be assigned once in the context of the specific trade relationship and for a
-     * defined period of time (contract number)
-     * @param  string        $lineid
-     * Identifier of the according contract position
-     * @param  DateTime|null $issueddate
-     * Contract date
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionContractReferencedDocument(string $issuerassignedid, string $lineid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $contractrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, $lineid, null, null, null, $issueddate, null);
+
+        return $this;
+    }
+
+    /**
+     * Set details of the associated offer position.
+     *
+     * @param  string        $issuerAssignedId __BT-X-310, From EXTENDED__ Offer number
+     * @param  string        $lineId           __BT-X-311, From EXTENDED__ Position identifier within the offer
+     * @param  DateTime|null $issueDate        __BT-X-312, From EXTENDED__ Date of offder
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionQuotationReferencedDocument(string $issuerAssignedId, string $lineId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $quotationrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, $lineId, null, null, null, $issueDate, null);
         $positionagreement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeAgreement");
+
+        $this->getObjectHelper()->tryCall($positionagreement, "setQuotationReferencedDocument", $quotationrefdoc);
+
+        return $this;
+    }
+
+    /**
+     * Set details of the related contract position.
+     *
+     * @param  string        $issuerAssignedId __BT-X-24, From EXTENDED__ The contract reference should be assigned once in the context of the specific trade relationship and for a defined period of time (contract number)
+     * @param  string        $lineId           __BT-X-25, From EXTENDED__ Identifier of the according contract position
+     * @param  DateTime|null $issueDate        __BT-X-26, From EXTENDED__ Contract date
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionContractReferencedDocument(string $issuerAssignedId, string $lineId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $contractrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, $lineId, null, null, null, $issueDate, null);
+        $positionagreement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeAgreement");
+
         $this->getObjectHelper()->tryCall($positionagreement, "setContractReferencedDocument", $contractrefdoc);
-        return $this;
-    }
-
-    /**
-     * Add an additional Document reference on a position
-     *
-     * __Notes__
-     *  - The documents justifying the invoice can be used to reference a document number, which should be
-     *    known to the recipient, as well as an external document (referenced by a URL) or an embedded document (such
-     *    as a timesheet as a PDF file). The option of linking to an external document is e.g. required when it comes
-     *    to large attachments and / or sensitive information, e.g. for personal services, which must be separated
-     *    from the bill
-     *  - Use ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument and
-     *    ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument to seek between multiple additional referenced
-     *    documents
-     *
-     * @param  string        $issuerassignedid
-     * The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for
-     * an object on which the invoice is based, or an identifier of the document on which the invoice is based.
-     * @param  string        $typecode
-     * Type of referenced document (See codelist UNTDID 1001)
-     *  - Code 916 "reference paper" is used to reference the identification of the document on which the invoice is based
-     *  - Code 50 "Price / sales catalog response" is used to reference the tender or the lot
-     *  - Code 130 "invoice data sheet" is used to reference an identifier for an object specified by the seller.
-     * @param  string|null   $uriid
-     * The Uniform Resource Locator (URL) at which the external document is available. A means of finding the resource
-     * including the primary access method intended for it, e.g. http: // or ftp: //. The location of the external document
-     * must be used if the buyer needs additional information to support the amounts billed. External documents are not part
-     * of the invoice. Access to external documents can involve certain risks.
-     * @param  string|null   $lineid
-     * The referenced position identifier in the additional document
-     * @param  string|null   $name
-     * A description of the document, e.g. Hourly billing, usage or consumption report, etc.
-     * @param  string|null   $reftypecode
-     * The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the
-     * recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected
-     * from UNTDID 1153 in accordance with the code list entries.
-     * @param  DateTime|null $issueddate
-     * Document date
-     * @param  string|null   $binarydatafilename
-     * Contains a file name of an attachment document embedded as a binary object
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPositionAdditionalReferencedDocument(string $issuerassignedid, string $typecode, ?string $uriid = null, ?string $lineid = null, ?string $name = null, ?string $reftypecode = null, ?DateTime $issueddate = null, ?string $binarydatafilename = null): ZugferdDocumentBuilder
-    {
-        $contractrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, $uriid, $lineid, $typecode, $name, $reftypecode, $issueddate, $binarydatafilename);
+
+        return $this;
+    }
+
+    /**
+     * Add an additional Document reference on a position.
+     *
+     * The documents justifying the invoice can be used to reference a document number, which should be
+     * known to the recipient, as well as an external document (referenced by a URL) or an embedded document (such
+     * as a timesheet as a PDF file). The option of linking to an external document is e.g. required when it comes
+     * to large attachments and / or sensitive information, e.g. for personal services, which must be separated
+     * from the bill
+     *
+     * @param  string        $issuerAssignedId   __BT-X-27, From EXTENDED__ The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for an object on which the invoice is based, or an identifier of the document on which the invoice is based.
+     * @param  string        $typeCode           __BT-X-30, From EXTENDED__ Type of referenced document (See codelist UNTDID 1001)
+     * @param  string|null   $uriId              __BT-X-28, From EXTENDED__ The Uniform Resource Locator (URL) at which the external document is available. A means of finding the resource including the primary access method intended for it, e.g. http: // or ftp: //. The location of the external document must be used if the buyer needs additional information to support the amounts billed. External documents are not part of the invoice. Access to external documents can involve certain risks.
+     * @param  string|null   $lineId             __BT-X-29, From EXTENDED__ The referenced position identifier in the additional document
+     * @param  string|null   $name               __BT-X-299, From EXTENDED__ A description of the document, e.g. Hourly billing, usage or consumption report, etc.
+     * @param  string|null   $refTypeCode        __BT-X-32, From EXTENDED__ The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected from UNTDID 1153 in accordance with the code list entries.
+     * @param  DateTime|null $issueDate          __BT-X-33, From EXTENDED__ Document date
+     * @param  string|null   $binaryDataFilename __BT-X-31, From EXTENDED__ Contains a file name of an attachment document embedded as a binary object
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionAdditionalReferencedDocument(string $issuerAssignedId, string $typeCode, ?string $uriId = null, ?string $lineId = null, ?string $name = null, ?string $refTypeCode = null, ?DateTime $issueDate = null, ?string $binaryDataFilename = null): ZugferdDocumentBuilder
+    {
+        $addrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, $uriId, $lineId, $typeCode, $name, $refTypeCode, $issueDate, $binaryDataFilename);
         $positionagreement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeAgreement");
-        $this->getObjectHelper()->tryCall($positionagreement, "addToAdditionalReferencedDocument", $contractrefdoc);
-        return $this;
-    }
-
-    /**
-     * Add a referennce to a ultimate customer order referenced document
-     *
-     * @param  string        $issuerassignedid
-     * @param  string        $lineid
-     * @param  DateTime|null $issueddate
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPositionUltimateCustomerOrderReferencedDocument(string $issuerassignedid, string $lineid, ?DateTime $issueddate = null): ZugferdDocumentBuilder
-    {
-        $ultimaterefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, $lineid, null, null, null, $issueddate, null);
+
+        $this->getObjectHelper()->tryCall($positionagreement, "addToAdditionalReferencedDocument", $addrefdoc);
+
+        return $this;
+    }
+
+    /**
+     * Add a referennce of a associated end customer order.
+     *
+     * @param  string        $issuerAssignedId __BT-X-43, From EXTENDED__ Order number of the end customer
+     * @param  string        $lineId           __BT-X-44, From EXTENDED__ Order item (end customer)
+     * @param  DateTime|null $issueDate        __BT-X-45, From EXTENDED__ Document date of end customer order
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionUltimateCustomerOrderReferencedDocument(string $issuerAssignedId, string $lineId, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $ultimaterefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, $lineId, null, null, null, $issueDate, null);
         $positionagreement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeAgreement");
+
         $this->getObjectHelper()->tryCall($positionagreement, "addToUltimateCustomerOrderReferencedDocument", $ultimaterefdoc);
+
         return $this;
     }
@@ -3011,6 +3015,5 @@
      * Set the unit price excluding sales tax before deduction of the discount on the item price.
      *
-     * @param  float       $amount                __BT-148, From BASIC__ The unit price excluding sales tax before deduction of the discount on the item price.
-     * Note: If the price is shown according to the net calculation, the price must also be shown according to the gross calculation.
+     * @param  float       $amount                __BT-148, From BASIC__ The unit price excluding sales tax before deduction of the discount on the item price. If the price is shown according to the net calculation, the price must also be shown according to the gross calculation.
      * @param  float|null  $basisQuantity         __BT-149-1, From BASIC__ The number of item units for which the price applies (price base quantity)
      * @param  string|null $basisQuantityUnitCode __BT-150-1, From BASIC__ The unit code of the number of item units for which the price applies (price base quantity)
@@ -3021,16 +3024,18 @@
         $grossPrice = $this->getObjectHelper()->getTradePriceType($amount, $basisQuantity, $basisQuantityUnitCode);
         $positionagreement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeAgreement");
+
         $this->getObjectHelper()->tryCall($positionagreement, "setGrossPriceProductTradePrice", $grossPrice);
-        return $this;
-    }
-
-    /**
-     * Detailed information on surcharges and discounts on item gross price
+
+        return $this;
+    }
+
+    /**
+     * Detailed information on surcharges and discounts on item gross price.
      *
      * @param  float       $actualAmount          __BT-147, From BASIC__ Discount on the item price. The total discount subtracted from the gross price to calculate the net price. Note: Only applies if the discount is given per unit and is not included in the gross price.
      * @param  boolean     $isCharge              __BT-147-02, From BASIC__ Switch for surcharge/discount, if true then its an charge
-     * @param  float|null  $calculationPercent    __BT-, From BASIC__Discount/surcharge in percent. Up to level EN16931, only the final result of the discount (ActualAmount) is transferred
-     * @param  float|null  $basisAmount           __BT-, From BASIC__ Base amount of the discount/surcharge
-     * @param  string|null $reason                __BT-, From BASIC__ Reason for surcharge/discount (free text)
+     * @param  float|null  $calculationPercent    __BT-X-34, From EXTENDED__Discount/surcharge in percent. Up to level EN16931, only the final result of the discount (ActualAmount) is transferred
+     * @param  float|null  $basisAmount           __BT-X-35, From EXTENDED__ Base amount of the discount/surcharge
+     * @param  string|null $reason                __BT-X-36, From EXTENDED__ Reason for surcharge/discount (free text)
      * @param  string|null $taxTypeCode           __BT-, From BASIC__
      * @param  string|null $taxCategoryCode       __BT-, From BASIC__
@@ -3039,5 +3044,5 @@
      * @param  float|null  $basisQuantity         __BT-, From BASIC__
      * @param  string|null $basisQuantityUnitCode __BT-, From BASIC__
-     * @param  string|null $reasonCode            __BT-, From BASIC__
+     * @param  string|null $reasonCode            __BT-X-313, From EXTENDED__ Reason code for surcharge/discount
      * @return ZugferdDocumentBuilder
      */
@@ -3047,10 +3052,12 @@
         $grossPrice = $this->getObjectHelper()->tryCallAndReturn($positionagreement, "getGrossPriceProductTradePrice");
         $allowanceCharge = $this->getObjectHelper()->getTradeAllowanceChargeType($actualAmount, $isCharge, $taxTypeCode, $taxCategoryCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
+
         $this->getObjectHelper()->tryCallAll($grossPrice, ["addToAppliedTradeAllowanceCharge", "setAppliedTradeAllowanceCharge"], $allowanceCharge);
-        return $this;
-    }
-
-    /**
-     * Set detailed information on the net price of the item
+
+        return $this;
+    }
+
+    /**
+     * Set detailed information on the net price of the item.
      *
      * @param  float       $amount                __BT-146, From BASIC__ Net price of the item
@@ -3063,34 +3070,14 @@
         $netPrice = $this->getObjectHelper()->getTradePriceType($amount, $basisQuantity, $basisQuantityUnitCode);
         $positionagreement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeAgreement");
+
         $this->getObjectHelper()->tryCall($positionagreement, "setNetPriceProductTradePrice", $netPrice);
-        return $this;
-    }
-
-    /**
-     * Tax included for B2C on position level
+
+        return $this;
+    }
+
+    /**
+     * Tax included for B2C on position level.
      *
      * @param  string      $categoryCode          __BT-, From __ Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
      * @param  string      $typeCode              __BT-, From __ Coded description of a sales tax category. Note: Fixed value = "VAT"
      * @param  float       $rateApplicablePercent __BT-, From __ The sales tax rate, expressed as the percentage applicable to the sales tax category in question. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
@@ -3105,18 +3092,19 @@
         $netPrice = $this->getObjectHelper()->tryCallAndReturn($positionagreement, "getNetPriceProductTradePrice");
         $tax = $this->getObjectHelper()->getTradeTaxType($categoryCode, $typeCode, null, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, null, null, null, null);
+
         $this->getObjectHelper()->tryCall($netPrice, "setIncludedTradeTax", $tax);
-        return $this;
-    }
-
-    /**
-     * Set the position Quantity
+
+        return $this;
+    }
+
+    /**
+     * Set the position Quantity.
      *
      * @param  float       $billedQuantity             __BT-129, From BASIC__ The quantity of individual items (goods or services) billed in the relevant line
-     * @param  string      $billedQuantityUnitCode     __BT-130, From BASIC__ The unit of measure applicable to the amount billed. Note: The unit of measurement must be taken from the lists from UN / ECE Recommendation No. 20 "Codes for Units of Measure Used in International Trade" and UN / ECE Recommendation No. 21 "Codes for Passengers, Types of Cargo, Packages and Packaging Materials (with Complementary Codes for Package Names)" using the UN / ECE Rec No. 20 Intro 2.a) can be selected.
-     * It should be noted that in most cases it is not necessary for buyers and sellers to fully implement these lists in their software. Sellers only need to support the entities necessary for their goods and services; Buyers only need to verify that the units used in the invoice match those in other documents (such as in Contracts, catalogs, orders and shipping notifications) match the units used.
-     * @param  float|null  $chargeFreeQuantity         __BT-, From __ Quantity, free of charge
-     * @param  string|null $chargeFreeQuantityUnitCpde __BT-, From __ Unit of measure code for the quantity free of charge
-     * @param  float|null  $packageQuantity            __BT-, From __ Number of packages
-     * @param  string|null $packageQuantityUnitCode    __BT-, From __ Unit of measure code for number of packages
+     * @param  string      $billedQuantityUnitCode     __BT-130, From BASIC__ The unit of measure applicable to the amount billed
+     * @param  float|null  $chargeFreeQuantity         __BT-X-46, From EXTENDED__ Quantity, free of charge
+     * @param  string|null $chargeFreeQuantityUnitCpde __BT-X-46-0, From EXTENDED__ Unit of measure code for the quantity free of charge
+     * @param  float|null  $packageQuantity            __BT-X-47, From EXTENDED__ Number of packages
+     * @param  string|null $packageQuantityUnitCode    __BT-X-47-0, From EXTENDED__ Unit of measure code for number of packages
      * @return ZugferdDocumentBuilder
      */
@@ -3124,41 +3112,35 @@
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
+
         $this->getObjectHelper()->tryCall($positiondelivery, "setBilledQuantity", $this->getObjectHelper()->getQuantityType($billedQuantity, $billedQuantityUnitCode));
         $this->getObjectHelper()->tryCall($positiondelivery, "setChargeFreeQuantity", $this->getObjectHelper()->getQuantityType($chargeFreeQuantity, $chargeFreeQuantityUnitCpde));
         $this->getObjectHelper()->tryCall($positiondelivery, "setPackageQuantity", $this->getObjectHelper()->getQuantityType($packageQuantity, $packageQuantityUnitCode));
-        return $this;
-    }
-
-    /**
-     * Set detailed information on the different ship-to party at item level
-     *
-     * @param  string      $name
-     * The name of the party to whom the goods are being delivered or for whom the services are being
-     * performed. Must be used if the recipient of the goods or services is not the same as the buyer.
-     * @param  string|null $id
-     * An identifier for the place where the goods are delivered or where the services are provided.
-     * Multiple IDs can be assigned or specified. They can be differentiated by using different
-     * identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
-     * @param  string|null $description
-     * Further legal information that is relevant for the party
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionShipTo(string $name, ?string $id = null, ?string $description = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Set detailed information on the different ship-to party at position level.
+     *
+     * @param  string|null $name        __BT-X-50, From EXTENDED__ The name of the party to whom the goods are being delivered or for whom the services are being performed. Must be used if the recipient of the goods or services is not the same as the buyer.
+     * @param  string|null $id          __BT-X-48, From EXTENDED__ An identifier for the place where the goods are delivered or where the services are provided. Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party (Obsolete)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionShipTo(?string $name = null, ?string $id = null, ?string $description = null): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
-        $shipToTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+        $shipToTradeParty = $this->getObjectHelper()->getTradePartyAllowEmpty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($positiondelivery, "setShipToTradeParty", $shipToTradeParty);
-        return $this;
-    }
-
-    /**
-     * Add a global id for the Ship-to Trade Party
-     *
-     * @param  string|null $globalID
-     * The identifier is uniquely assigned to a party by a global registration organization.
-     * @param  string|null $globalIDType
-     * If the identifier is used for the identification scheme, it must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+
+        return $this;
+    }
+
+    /**
+     * Add a global id for the Ship-to Trade Party at position level.
+     *
+     * @param  string|null $globalID     __BT-X-49, From EXTENDED__ The identifier is uniquely assigned to a party by a global registration organization.
+     * @param  string|null $globalIDType __BT-X-49-0, From EXTENDED__ If the identifier is used for the identification scheme, it must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -3167,167 +3149,135 @@
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getShipToTradeParty");
+
         $this->getObjectHelper()->tryCall($shipToTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
-        return $this;
-    }
-
-    /**
-     * Add Tax registration to Ship-To Trade party
-     *
-     * The local identification (defined by the party's address) of the party for tax purposes or a reference that enables the party
-     * to indicate his reporting status for tax purposes The sales tax identification number of the party
-     * Note: This information may affect how the buyer the invoice settled (such as in relation to social security contributions). So
-     * e.g. In some countries, if the party is not reported for tax, the buyer will withhold the tax amount and pay it on behalf of the
-     * party. Sales tax number with a prefixed country code. A supplier registered as subject to VAT must provide his sales tax
-     * identification number, unless he uses a tax agent.
-     *
-     * @param  string|null $taxregtype
-     * Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid
-     * Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPositionShipToTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add Tax registration to Ship-To Trade party at position level.
+     *
+     * @param  string|null $taxRegType __BT-X-66-0, From EXTENDED__ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-X-66, From EXTENDED__ Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionShipToTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getShipToTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($shipToTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
-        return $this;
-    }
-
-    /**
-     * Sets the postal address of the Ship-To party
-     *
-     * @param  string|null $lineone
-     * The main line in the product end users address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the product end users address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the product end users address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the product end users address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision
-     * The product end users state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionShipToAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($shipToTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
+        return $this;
+    }
+
+    /**
+     * Sets the postal address of the Ship-To party at position level.
+     *
+     * @param  string|null $lineOne     __BG-X-59, From EXTENDED__ The main line in the product end users address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BG-X-60, From EXTENDED__ Line 2 of the product end users address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BG-X-61, From EXTENDED__ Line 3 of the product end users address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BG-X-58, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BG-X-62, From EXTENDED__ Usual name of the city or municipality in which the product end users address is located
+     * @param  string|null $country     __BG-X-63, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  string|null $subDivision __BG-X-64, From EXTENDED__ The product end users state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionShipToAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getShipToTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($shipToTradeParty, "setPostalTradeAddress", $address);
-        return $this;
-    }
-
-    /**
-     * Set legal organisation of the Ship-To party on item level
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype
-     * registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN,
-     * 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname A name by which the party is known, if different from the party's name
-     *                                   (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionShipToLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Set legal organisation of the Ship-To party on position level.
+     *
+     * @param  string|null $legalOrgId   __BT-X-51, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-51-0, From EXTENDED__ Registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-52, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionShipToLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getShipToTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($shipToTradeParty, "setSpecifiedLegalOrganization", $legalorg);
-        return $this;
-    }
-
-    /**
-     * Set contact of the Ship-To party
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionShipToContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($shipToTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
+        return $this;
+    }
+
+    /**
+     * Set contact of the Ship-To party on position level.
+     *
+     * @param  string|null $contactPersonName     __BT-X-54, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-54-1, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-55, From EXTENDED__ Detailed information on the party's phone number
+     * @param  string|null $contactFaxNo          __BT-X-56, From EXTENDED__ Detailed information on the party's fax number
+     * @param  string|null $contactEmailAddress   __BT-X-57, From EXTENDED__ Detailed information on the party's email address
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionShipToContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getShipToTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($shipToTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add an additional contact to the Ship-To party
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPositionShipToContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an additional contact to the Ship-To party on position level.
+     *
+     * @param  string|null $contactPersonName     __BT-X-54, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-54-1, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-55, From EXTENDED__ Detailed information on the party's phone number
+     * @param  string|null $contactFaxNo          __BT-X-56, From EXTENDED__ Detailed information on the party's fax number
+     * @param  string|null $contactEmailAddress   __BT-X-57, From EXTENDED__ Detailed information on the party's email address
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionShipToContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $shipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getShipToTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($shipToTradeParty, "addToDefinedTradeContact", $contact);
-        return $this;
-    }
-
-    /**
-     * Detailed information on the different end recipient
-     *
-     * @param  string      $name
-     * The name of the party to whom the goods are being delivered or for whom the services are being
-     * performed. Must be used if the recipient of the goods or services is not the same as the buyer.
-     * @param  string|null $id
-     * An identifier for the party Multiple IDs can be assigned or specified. They can be differentiated
-     * by using different identification schemes. If no scheme is given, it should be known to the buyer
-     * and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
-     * @param  string|null $description
-     * Further legal information that is relevant for the party
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionUltimateShipTo(string $name, ?string $id = null, ?string $description = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Detailed information on the different end recipient on position level.
+     *
+     * @param  string|null $name        __BT-X-69, From EXTENDED__ The name of the party to whom the goods are being delivered or for whom the services are being performed. Must be used if the recipient of the goods or services is not the same as the buyer.
+     * @param  string|null $id          __BT-X-67, From EXTENDED__ An identifier for the party Multiple IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g. a previously exchanged identifier assigned by the buyer or seller.
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party (Obsolete)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionUltimateShipTo(?string $name = null, ?string $id = null, ?string $description = null): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
-        $shipToTradeParty = $this->getObjectHelper()->getTradeParty($name, $id, $description);
+        $shipToTradeParty = $this->getObjectHelper()->getTradePartyAllowEmpty($name, $id, $description);
+
         $this->getObjectHelper()->tryCall($positiondelivery, "setUltimateShipToTradeParty", $shipToTradeParty);
-        return $this;
-    }
-
-    /**
-     * Add a global id for the Ship-to Trade Party
-     *
-     * @param  string|null $globalID
-     * Global identifier of the parfty
-     * @param  string|null $globalIDType
-     * Type of global identification number, must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+
+        return $this;
+    }
+
+    /**
+     * Add a global id for the Ship-to Trade Party on position level.
+     *
+     * @param  string|null $globalID     __BT-X-68, From EXTENDED__ Global identifier of the parfty
+     * @param  string|null $globalIDType __BT-X-68-0, From EXTENDED__ Type of global identification number, must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdDocumentBuilder
      */
@@ -3336,135 +3286,116 @@
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $ultimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getUltimateShipToTradeParty");
+
         $this->getObjectHelper()->tryCall($ultimateShipToTradeParty, "addToGlobalID", $this->getObjectHelper()->getIdType($globalID, $globalIDType));
-        return $this;
-    }
-
-    /**
-     * Add Tax registration to Ship-To Trade party
-     *
-     * @param  string|null $taxregtype
-     * Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
-     * @param  string|null $taxregid
-     * Tax number of the seller or sales tax identification number of the seller
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPositionUltimateShipToTaxRegistration(?string $taxregtype = null, ?string $taxregid = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add Tax registration to Ship-To Trade party on position level.
+     *
+     * @param  string|null $taxRegType __BT-X-84-0, From EXTENDED__ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string|null $taxRegId   __BT-X-84, From EXTENDED__ Tax number or sales tax identification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionUltimateShipToTaxRegistration(?string $taxRegType = null, ?string $taxRegId = null): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $ultimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getUltimateShipToTradeParty");
-        $taxreg = $this->getObjectHelper()->getTaxRegistrationType($taxregtype, $taxregid);
-        $this->getObjectHelper()->tryCall($ultimateShipToTradeParty, "addToSpecifiedTaxRegistration", $taxreg);
-        return $this;
-    }
-
-    /**
-     * Sets the postal address of the Ship-To party
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  string|null $subdivision
-     * The party's state
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionUltimateShipToAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ZugferdDocumentBuilder
+        $taxReg = $this->getObjectHelper()->getTaxRegistrationType($taxRegType, $taxRegId);
+
+        $this->getObjectHelper()->tryCall($ultimateShipToTradeParty, "addToSpecifiedTaxRegistration", $taxReg);
+
+        return $this;
+    }
+
+    /**
+     * Sets the postal address of the Ship-To party on position level.
+     *
+     * @param  string|null $lineOne     __BT_X-77, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT_X-78, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT_X-79, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT_X-76, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT_X-80, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT_X-81, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  string|null $subDivision __BT_X-82, From EXTENDED__ The party's state
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionUltimateShipToAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $ultimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getUltimateShipToTradeParty");
-        $address = $this->getObjectHelper()->getTradeAddress($lineone, $linetwo, $linethree, $postcode, $city, $country, $subdivision);
+        $address = $this->getObjectHelper()->getTradeAddress($lineOne, $lineTwo, $lineThree, $postCode, $city, $country, $subDivision);
+
         $this->getObjectHelper()->tryCall($ultimateShipToTradeParty, "setPostalTradeAddress", $address);
-        return $this;
-    }
-
-    /**
-     * Set legal organisation of the Ship-To party
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype The identifier for the identification scheme of the legal
-     *                                   registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN,
-     *                                   0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname A name by which the party is known, if different from the party's name
-     *                                   (also known as the company name)
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionUltimateShipToLegalOrganisation(?string $legalorgid, ?string $legalorgtype, ?string $legalorgname): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Set legal organisation of the Ship-To party on position level.
+     *
+     * @param  string|null $legalOrgId   __BT_X-70, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT_X-70-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT_X-71, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionUltimateShipToLegalOrganisation(?string $legalOrgId, ?string $legalOrgType, ?string $legalOrgName): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $ultimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getUltimateShipToTradeParty");
-        $legalorg = $this->getObjectHelper()->getLegalOrganization($legalorgid, $legalorgtype, $legalorgname);
-        $this->getObjectHelper()->tryCall($ultimateShipToTradeParty, "setSpecifiedLegalOrganization", $legalorg);
-        return $this;
-    }
-
-    /**
-     * Set contact of the Ship-To party
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionUltimateShipToContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+        $legalOrg = $this->getObjectHelper()->getLegalOrganization($legalOrgId, $legalOrgType, $legalOrgName);
+
+        $this->getObjectHelper()->tryCall($ultimateShipToTradeParty, "setSpecifiedLegalOrganization", $legalOrg);
+
+        return $this;
+    }
+
+    /**
+     * Set contact of the Ship-To party on position level.
+     *
+     * @param  string|null $contactPersonName     __BT_X-72, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT_X-72-1, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT_X-73, From EXTENDED__ Detailed information on the party's phone number
+     * @param  string|null $contactFaxNo          __BT_X-74, From EXTENDED__ Detailed information on the party's fax number
+     * @param  string|null $contactEmailAddress   __BT_X-75, From EXTENDED__ Detailed information on the party's email address
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionUltimateShipToContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $ultimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getUltimateShipToTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCallIfMethodExists($ultimateShipToTradeParty, "addToDefinedTradeContact", "setDefinedTradeContact", [$contact], $contact);
-        return $this;
-    }
-
-    /**
-     * Add an additional contact of the Ship-To party. This is only supported in the
-     * EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPositionUltimateShipToContact(?string $contactpersonname, ?string $contactdepartmentname, ?string $contactphoneno, ?string $contactfaxno, ?string $contactemailadd): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Add an additional contact of the Ship-To party on position level.
+     *
+     * @param  string|null $contactPersonName     __BT_X-72, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT_X-72-1, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT_X-73, From EXTENDED__ Detailed information on the party's phone number
+     * @param  string|null $contactFaxNo          __BT_X-74, From EXTENDED__ Detailed information on the party's fax number
+     * @param  string|null $contactEmailAddress   __BT_X-75, From EXTENDED__ Detailed information on the party's email address
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionUltimateShipToContact(?string $contactPersonName, ?string $contactDepartmentName, ?string $contactPhoneNo, ?string $contactFaxNo, ?string $contactEmailAddress): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $ultimateShipToTradeParty = $this->getObjectHelper()->tryCallAndReturn($positiondelivery, "getUltimateShipToTradeParty");
-        $contact = $this->getObjectHelper()->getTradeContact($contactpersonname, $contactdepartmentname, $contactphoneno, $contactfaxno, $contactemailadd);
+        $contact = $this->getObjectHelper()->getTradeContact($contactPersonName, $contactDepartmentName, $contactPhoneNo, $contactFaxNo, $contactEmailAddress);
+
         $this->getObjectHelper()->tryCall($ultimateShipToTradeParty, "addToDefinedTradeContact", $contact);
-        return $this;
-    }
-
-    /**
-     * Detailed information on the actual delivery on item level
-     *
-     * @param  DateTime|null $date
+
+        return $this;
+    }
+
+    /**
+     * Detailed information on the actual delivery on position level.
+     *
+     * @param  DateTime|null $date __BT-X-85, From EXTENDED__ Actual delivery date
      * @return ZugferdDocumentBuilder
      */
@@ -3473,87 +3404,73 @@
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
         $supplyChainevent = $this->getObjectHelper()->getSupplyChainEventType($date);
+
         $this->getObjectHelper()->tryCall($positiondelivery, "setActualDeliverySupplyChainEvent", $supplyChainevent);
-        return $this;
-    }
-
-    /**
-     * Detailed information on the associated shipping notification on item level
-     *
-     * @param  string        $issuerassignedid
-     * @param  string|null   $lineid
-     * @param  DateTime|null $issueddate
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionDespatchAdviceReferencedDocument(string $issuerassignedid, ?string $lineid = null, ?DateTime $issueddate = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Detailed information on the associated shipping notification on position level.
+     *
+     * @param  string        $issuerAssignedId __BT-X-86, From EXTENDED__ Shipping notification number
+     * @param  string|null   $lineId           __BT-X-87, From EXTENDED__ Shipping notification position
+     * @param  DateTime|null $issueDate        __BT-X-88, From EXTENDED__ Date of Shipping notification number
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionDespatchAdviceReferencedDocument(string $issuerAssignedId, ?string $lineId = null, ?DateTime $issueDate = null): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
-        $despatchddvicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, $lineid, null, null, null, $issueddate, null);
+        $despatchddvicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, $lineId, null, null, null, $issueDate, null);
+
         $this->getObjectHelper()->tryCall($positiondelivery, "setDespatchAdviceReferencedDocument", $despatchddvicerefdoc);
-        return $this;
-    }
-
-    /**
-     * Detailed information on the associated shipping notification on item level
-     *
-     * @param  string        $issuerassignedid
-     * @param  string|null   $lineid
-     * @param  DateTime|null $issueddate
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionReceivingAdviceReferencedDocument(string $issuerassignedid, ?string $lineid = null, ?DateTime $issueddate = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Detailed information on the associated goods receipt notification.
+     *
+     * @param  string        $issuerAssignedId __BT-X-89, From EXTENDED__ Goods receipt number
+     * @param  string|null   $lineId           __BT-X-90, From EXTENDED__ Goods receipt position
+     * @param  DateTime|null $issueDate        __BT-X-91, From EXTENDED__ Date of Goods receipt
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionReceivingAdviceReferencedDocument(string $issuerAssignedId, ?string $lineId = null, ?DateTime $issueDate = null): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
-        $receivingadvicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, $lineid, null, null, null, $issueddate, null);
+        $receivingadvicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, $lineId, null, null, null, $issueDate, null);
+
         $this->getObjectHelper()->tryCall($positiondelivery, "setReceivingAdviceReferencedDocument", $receivingadvicerefdoc);
-        return $this;
-    }
-
-    /**
-     * Detailed information on the associated delivery note on item level
-     *
-     * @param  string        $issuerassignedid
-     * @param  string|null   $lineid
-     * @param  DateTime|null $issueddate
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionDeliveryNoteReferencedDocument(string $issuerassignedid, ?string $lineid = null, ?DateTime $issueddate = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Detailed information on the associated delivery bill on position level.
+     *
+     * @param  string        $issuerAssignedId __BT-X-92, From EXTENDED__ Delivery note number
+     * @param  string|null   $lineId           __BT-X-93, From EXTENDED__ Delivery note position
+     * @param  DateTime|null $issueDate        __BT-X-94, From EXTENDED__ Date of Delivery note
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionDeliveryNoteReferencedDocument(string $issuerAssignedId, ?string $lineId = null, ?DateTime $issueDate = null): ZugferdDocumentBuilder
     {
         $positiondelivery = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeDelivery");
-        $deliverynoterefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerassignedid, null, $lineid, null, null, null, $issueddate, null);
+        $deliverynoterefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, $lineId, null, null, null, $issueDate, null);
+
         $this->getObjectHelper()->tryCall($positiondelivery, "setDeliveryNoteReferencedDocument", $deliverynoterefdoc);
-        return $this;
-    }
-
-    /**
-     * Add information about the sales tax that applies to the goods and services invoiced
-     * in the relevant invoice line
+
+        return $this;
+    }
+
+    /**
+     * Add information about the sales tax that applies to the goods and services invoiced in the relevant invoice line.
      *
      * @param  string      $categoryCode          __BT-151, From BASIC__ Coded description of a sales tax category
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
      * @param  string      $typeCode              __BT-151-0, From BASIC__ In EN 16931 only the tax type âsales taxâ with the code âVATâ is supported. Should other types of tax be specified, such as an insurance tax or a mineral oil tax the EXTENDED profile must be used. The code for the tax type must then be taken from the code list UNTDID 5153.
      * @param  float       $rateApplicablePercent __BT-152, From BASIC__ The VAT rate applicable to the item invoiced and expressed as a percentage. Note: The code of the sales tax category and the category-specific sales tax rate  must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
-     * @param  float|null  $calculatedAmount      __BT-, From __ Tax amount. Information only for taxes that are not VAT.
-     * @param  string|null $exemptionReason       __BT-, From __ Reason for tax exemption (free text)
-     * @param  string|null $exemptionReasonCode   __BT-, From __ Reason given in code form for the exemption of the amount from VAT. Note: Code list issued and maintained by the Connecting Europe Facility.
+     * @param  float|null  $calculatedAmount      __BT-, From __ Tax amount. Information only for taxes that are not VAT (Obsolete)
+     * @param  string|null $exemptionReason       __BT-, From __ Reason for tax exemption (free text) (Obsolete)
+     * @param  string|null $exemptionReasonCode   __BT-, From __ Reason given in code form for the exemption of the amount from VAT. Note: Code list issued and maintained by the Connecting Europe Facility. (Obsolete)
      * @return ZugferdDocumentBuilder
      */
@@ -3562,79 +3479,36 @@
         $positionsettlement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeSettlement");
         $tax = $this->getObjectHelper()->getTradeTaxType($categoryCode, $typeCode, null, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, null, null, null, null);
+
         $this->getObjectHelper()->tryCallAll($positionsettlement, ["addToApplicableTradeTax", "setApplicableTradeTax"], $tax);
-        return $this;
-    }
-
-    /**
-     * Set information about the period relevant for the invoice item.
-     * Note: Also known as the invoice line delivery period.
-     *
-     * @param  DateTime|null $startdate __BT-134, From BASIC__ Start of the billing period
+
+        return $this;
+    }
+
+    /**
+     * Set information about the period relevant for the invoice item. Also known as the invoice line delivery period.
+     *
+     * @param  DateTime|null $startDate __BT-134, From BASIC__ Start of the billing period
      * @param  DateTime|null $endDate   __BT-135, From BASIC__ End of the billing period
      * @return ZugferdDocumentBuilder
      */
-    public function setDocumentPositionBillingPeriod(?DateTime $startdate, ?DateTime $endDate): ZugferdDocumentBuilder
+    public function setDocumentPositionBillingPeriod(?DateTime $startDate, ?DateTime $endDate): ZugferdDocumentBuilder
     {
         $positionsettlement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeSettlement");
-        $period = $this->getObjectHelper()->getSpecifiedPeriodType($startdate, $endDate, null, null);
+        $period = $this->getObjectHelper()->getSpecifiedPeriodType($startDate, $endDate, null, null);
+
         $this->getObjectHelper()->tryCall($positionsettlement, "setBillingSpecifiedPeriod", $period);
-        return $this;
-    }
-
-    /**
-     * Add surcharges and discounts on position level
+
+        return $this;
+    }
+
+    /**
+     * Add surcharges and discounts on position level.
      *
      * @param  float       $actualAmount       __BT-136/BT-141, From BASIC__ The surcharge/discount amount excluding sales tax
-     * @param  boolean     $isCharge           __BT-27-1/BT-28-1, From BASIC__ (true for BT-/ and false for /BT-) Switch that indicates whether the following data refer to an allowance or a discount,
-     * true means that
-     * @param  float|null  $calculationPercent __BT-, From BASIC__ The percentage that may be used in conjunction with the base invoice line discount amount to calculate the invoice line discount amount
-     * @param  float|null  $basisAmount        __BT-, From BASIC__ The base amount that may be used in conjunction with the invoice line discount percentage to calculate the invoice line discount amount
+     * @param  boolean     $isCharge           __BT-27-1/BT-28-1, From BASIC__ (true for BT-/ and false for /BT-) Switch that indicates whether the following data refer to an allowance or a discount, true means that it is a surcharge
+     * @param  float|null  $calculationPercent __BT-138, From BASIC__ The percentage that may be used in conjunction with the base invoice line discount amount to calculate the invoice line discount amount
+     * @param  float|null  $basisAmount        __BT-137, From EN 16931__ The base amount that may be used in conjunction with the invoice line discount percentage to calculate the invoice line discount amount
      * @param  string|null $reasonCode         __BT-140/BT-145, From BASIC__ The reason given as a code for the invoice line discount
-     * __Notes__
-     *  - Use entries from the UNTDID 5189 code list (discounts) or the UNTDID 7161 code list
-     *    (surcharges). The invoice line discount reason code and the invoice line discount reason must
-     *    match.
-     *  - In the case of a discount, the code list UNTDID 5189 must be used.
-     *  - In the event of a surcharge, the code list UNTDID 7161 must be used.
-     *
-     * In particular, the following codes can be used:
-     *  - AA = Advertising
-     *  - ABL = Additional packaging
-     *  - ADR = Other services
-     *  - ADT = Pick-up
-     *  - FC = Freight service
-     *  - FI = Financing
-     *  - LA = Labelling
-     *
-     * Include PEPPOL subset:
-     *  - 41 - Bonus for works ahead of schedule
-     *  - 42 - Other bonus
-     *  - 60 - Manufacturerâs consumer discount
-     *  - 62 - Due to military status
-     *  - 63 - Due to work accident
-     *  - 64 - Special agreement
-     *  - 65 - Production error discount
-     *  - 66 - New outlet discount
-     *  - 67 - Sample discount
-     *  - 68 - End-of-range discount
-     *  - 70 - Incoterm discount
-     *  - 71 - Point of sales threshold allowance
-     *  - 88 - Material surcharge/deduction
-     *  - 95 - Discount
-     *  - 100 - Special rebate
-     *  - 102 - Fixed long term
-     *  - 103 - Temporary
-     *  - 104 - Standard
-     *  - 105 - Yearly turnover
-     *
-     * Codelists: UNTDID 7161 (Complete list), UNTDID 5189 (Restricted)
      * @param  string|null $reason             __BT-139/BT-144, From BASIC__ The reason given in text form for the invoice item discount/surcharge
-     * __Notes__
-     *  - The invoice line discount reason code (BT--140) and the invoice line discount reason
-     *    (BT--139) must show the same allowance type.
-     *  - Each line item discount (BG-27) must include a corresponding line discount reason
-     *    (BT--139) or an appropriate line discount reason code (BT--140), or both.
-     *  - The code for the reason for the charge at the invoice line level (BT--145) and the
-     *    reason for the invoice line discount (BT--144) must show the same discount type
      * @return ZugferdDocumentBuilder
      */
@@ -3643,37 +3517,117 @@
         $positionsettlement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeSettlement");
         $allowanceCharge = $this->getObjectHelper()->getTradeAllowanceChargeType($actualAmount, $isCharge, null, null, null, null, $calculationPercent, $basisAmount, null, null, $reasonCode, $reason);
+
         $this->getObjectHelper()->tryCall($positionsettlement, "addToSpecifiedTradeAllowanceCharge", $allowanceCharge);
-        return $this;
-    }
-
-    /**
-     * Set information on item totals
-     *
-     * @param  float      $lineTotalAmount            __BT-131, From BASIC__ The total amount of the invoice item.
-     * __Note:__ This is the "net" amount, that is, excluding sales tax, but including all surcharges and discounts applicable to the item level, as well as other taxes.
-     * @param  float|null $totalAllowanceChargeAmount __BT-, From __ Total amount of item surcharges and discounts
-     * @return ZugferdDocumentBuilder
-     */
-    public function setDocumentPositionLineSummation(float $lineTotalAmount, ?float $totalAllowanceChargeAmount = null): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Set information on item totals.
+     *
+     * @param  float $lineTotalAmount __BT-131, From BASIC__ The total amount of the invoice item.
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionLineSummation(float $lineTotalAmount): ZugferdDocumentBuilder
     {
         $positionsettlement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeSettlement");
-        $summation = $this->getObjectHelper()->getTradeSettlementLineMonetarySummationType($lineTotalAmount, $totalAllowanceChargeAmount);
+        $summation = $this->getObjectHelper()->getTradeSettlementLineMonetarySummationType($lineTotalAmount);
+
         $this->getObjectHelper()->tryCall($positionsettlement, "setSpecifiedTradeSettlementLineMonetarySummation", $summation);
-        return $this;
-    }
-
-    /**
-     * Add an AccountingAccount on item level
-     * Detailinformationen zur Buchungsreferenz
-     *
-     * @param  string      $id
-     * @param  string|null $typeCode
-     * @return ZugferdDocumentBuilder
-     */
-    public function addDocumentPositionReceivableSpecifiedTradeAccountingAccount(string $id, ?string $typeCode): ZugferdDocumentBuilder
+
+        return $this;
+    }
+
+    /**
+     * Set information on item totals (with support for EXTENDED profile).
+     *
+     * @param  float $lineTotalAmount            __BT-131, From BASIC__ The total amount of the invoice item
+     * @param  float $chargeTotalAmount          __BT-X-327, From EXTENDED__ Total amount of item surcharges
+     * @param  float $allowanceTotalAmount       __BT-X-328, From EXTENDED__ Total amount of item discounts
+     * @param  float $taxTotalAmount             __BT-X-329, From EXTENDED__ Total amount of item taxes
+     * @param  float $grandTotalAmount           __BT-X-330, From EXTENDED__ Total gross amount of the item
+     * @param  float $totalAllowanceChargeAmount __BT-X-98, From EXTENDED__ Total amount of item surcharges and discounts
+     * @return ZugferdDocumentBuilder
+     */
+    public function setDocumentPositionLineSummationExt(float $lineTotalAmount, ?float $chargeTotalAmount = null, ?float $allowanceTotalAmount = null, ?float $taxTotalAmount = null, ?float $grandTotalAmount = null, ?float $totalAllowanceChargeAmount = null): ZugferdDocumentBuilder
+    {
+        $positionsettlement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeSettlement");
+        $summation = $this->getObjectHelper()->getTradeSettlementLineMonetarySummationType($lineTotalAmount, $chargeTotalAmount, $allowanceTotalAmount, $taxTotalAmount, $grandTotalAmount, $totalAllowanceChargeAmount);
+
+        $this->getObjectHelper()->tryCall($positionsettlement, "setSpecifiedTradeSettlementLineMonetarySummation", $summation);
+
+        return $this;
+    }
+
+    /**
+     * Add a Reference to the previous invoice (on position level).
+     *
+     * To be used if:
+     *  - a previous invoice is corrected
+     *  - reference is made from a final invoice to previous partial invoices
+     *  - reference is made from a final invoice to previous invoices for advance payments.     *
+     *
+     * @param  string        $issuerAssignedId __BT-X-331, From EXTENDED__ The identification of an invoice previously sent by the seller
+     * @param  string        $lineid           __BT-X-540, From EXTENDED__ Identification of the invoice item
+     * @param  string|null   $typeCode         __BT-X-332, From EXTENDED__ Type of previous invoice (code)
+     * @param  DateTime|null $issueDate        __BT-X-333, From EXTENDED__ Date of the previous invoice
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionInvoiceReferencedDocument(string $issuerAssignedId, string $lineid, ?string $typeCode = null, ?DateTime $issueDate = null): ZugferdDocumentBuilder
+    {
+        $positionsettlement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeSettlement");
+        $invoicerefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, $lineid, $typeCode, null, null, $issueDate, null);
+
+        $this->getObjectHelper()->tryCall($positionsettlement, "setInvoiceReferencedDocument", $invoicerefdoc);
+
+        return $this;
+    }
+
+    /**
+     * Add an additional Document reference on a position (Object detection).
+     *
+     * @param      string      $issuerAssignedId __BT-128, From EN 16931__ The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for an object on which the invoice is based, or an identifier of the document on which the invoice is based.
+     * @param      string      $typeCode         __BT-128-0, From EN 16931__ Type of referenced document (See codelist UNTDID 1001)
+     * @param      string|null $refTypeCode      __BT-128-1, From EN 16931__ The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected from UNTDID 1153 in accordance with the code list entries.
+     * @return     ZugferdDocumentBuilder
+     * @deprecated v1.0.110 Please use addDocumentPositionAdditionalReferencedObjDocument instead
+     */
+    public function addDocumentPositionAdditionalReferencedDocumentObj(string $issuerAssignedId, string $typeCode, ?string $refTypeCode = null): ZugferdDocumentBuilder
+    {
+        return $this->addDocumentPositionAdditionalReferencedObjDocument($issuerAssignedId, $typeCode, $refTypeCode);
+    }
+
+    /**
+     * Add an additional Document reference on a position (Object detection).
+     *
+     * @param  string      $issuerAssignedId __BT-128, From EN 16931__ The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for an object on which the invoice is based, or an identifier of the document on which the invoice is based.
+     * @param  string      $typeCode         __BT-128-0, From EN 16931__ Type of referenced document (See codelist UNTDID 1001)
+     * @param  string|null $refTypeCode      __BT-128-1, From EN 16931__ The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected from UNTDID 1153 in accordance with the code list entries.
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionAdditionalReferencedObjDocument(string $issuerAssignedId, string $typeCode, ?string $refTypeCode = null): ZugferdDocumentBuilder
+    {
+        $positionsettlement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeSettlement");
+        $addrefdoc = $this->getObjectHelper()->getReferencedDocumentType($issuerAssignedId, null, null, $typeCode, null, $refTypeCode, null, null);
+
+        $this->getObjectHelper()->tryCallAll($positionsettlement, ["addToAdditionalReferencedDocument", "setAdditionalReferencedDocument"], $addrefdoc);
+
+        return $this;
+    }
+
+    /**
+     * Add an AccountingAccount on position level.
+     *
+     * @param  string      $id       __BT-133, From EN 16931__ Posting reference of the byuer. If required, this reference shall be provided by the Buyer to the Seller prior to the issuing of the Invoice.
+     * @param  string|null $typeCode __BT-X-99, From EXTENDED__ Type of the posting reference. Allowed values: 1 = Financial, 2 = Subsidiary, 3 = Budget, 4 = Cost Accounting, 5 = Payable, 6 = Job Cost Accounting
+     * @return ZugferdDocumentBuilder
+     */
+    public function addDocumentPositionReceivableSpecifiedTradeAccountingAccount(string $id, ?string $typeCode = null): ZugferdDocumentBuilder
     {
         $positionsettlement = $this->getObjectHelper()->tryCallAndReturn($this->currentPosition, "getSpecifiedLineTradeSettlement");
         $account = $this->getObjectHelper()->getTradeAccountingAccountType($id, $typeCode);
+
         $this->getObjectHelper()->tryCallAll($positionsettlement, ["addToReceivableSpecifiedTradeAccountingAccount", "setReceivableSpecifiedTradeAccountingAccount"], $account);
+
         return $this;
     }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentJsonExporter.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentJsonExporter.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentJsonExporter.php	(revision 8504)
@@ -29,5 +29,5 @@
      * @var ZugferdDocument
      */
-    private $document = null;
+    private $document;
 
     /**
@@ -35,6 +35,4 @@
      *
      * @param ZugferdDocument $document
-     *
-     * @codeCoverageIgnore
      */
     public function __construct(ZugferdDocument $document)
@@ -60,7 +58,5 @@
     public function toJsonObject(): ?\stdClass
     {
-        $jsonObject = json_decode($this->toJsonString());
-
-        return $jsonObject;
+        return json_decode($this->toJsonString());
     }
 
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfBuilder.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfBuilder.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfBuilder.php	(revision 8504)
@@ -10,6 +10,7 @@
 namespace horstoeko\zugferd;
 
+use horstoeko\zugferd\ZugferdDocumentBuilder;
 use horstoeko\zugferd\ZugferdDocumentPdfBuilderAbstract;
-use horstoeko\zugferd\ZugferdDocumentBuilder;
+use horstoeko\zugferd\exception\ZugferdFileNotFoundException;
 
 /**
@@ -30,5 +31,5 @@
      * @var ZugferdDocumentBuilder
      */
-    private $documentBuilder = null;
+    private $documentBuilder;
 
     /**
@@ -45,5 +46,5 @@
     {
         if (!is_file($pdfFileName)) {
-            throw new \InvalidArgumentException("The given PDF file does not exist.");
+            throw new ZugferdFileNotFoundException($pdfFileName);
         }
 
@@ -62,9 +63,6 @@
      * Constructor
      *
-     * @param ZugferdDocumentBuilder $documentBuilder
-     * The instance of the document builder. Needed to get the XML data
-     * @param string                 $pdfData
-     * The full filename or a string containing the binary pdf data. This
-     * is the original PDF (e.g. created by a ERP system)
+     * @param ZugferdDocumentBuilder $documentBuilder The instance of the document builder. Needed to get the XML data
+     * @param string                 $pdfData         The full filename or a string containing the binary pdf data. This is the original PDF (e.g. created by a ERP system)
      */
     public function __construct(ZugferdDocumentBuilder $documentBuilder, string $pdfData)
@@ -84,5 +82,5 @@
         }
 
-        $this->xmlDataCache = $this->documentBuilder->getContentAsDomDocument()->saveXML();
+        $this->xmlDataCache = $this->documentBuilder->getContent();
 
         return $this->xmlDataCache;
@@ -104,3 +102,11 @@
         return $this->documentBuilder->getProfileDefinitionParameter("xmpname");
     }
+
+    /**
+     * @inheritDoc
+     */
+    protected function getXmlAttachmentXmpVersion(): string
+    {
+        return $this->documentBuilder->getProfileDefinitionParameter("xmpversion");
+    }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfBuilderAbstract.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfBuilderAbstract.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfBuilderAbstract.php	(revision 8504)
@@ -10,8 +10,16 @@
 namespace horstoeko\zugferd;
 
+use DateTime;
 use DOMDocument;
 use DOMXpath;
-use horstoeko\stringmanagement\PathUtils;
+use Throwable;
+use horstoeko\mimedb\MimeDb;
+use horstoeko\stringmanagement\FileUtils;
+use horstoeko\stringmanagement\StringUtils;
 use horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\exception\ZugferdFileNotFoundException;
+use horstoeko\zugferd\exception\ZugferdFileNotReadableException;
+use horstoeko\zugferd\exception\ZugferdUnknownMimetype;
+use horstoeko\zugferd\exception\ZugferdInvalidArgumentException;
 use horstoeko\zugferd\ZugferdPackageVersion;
 use horstoeko\zugferd\ZugferdPdfWriter;
@@ -32,4 +40,18 @@
 {
     /**
+     * Constants for Relationship types
+     * 'Data', 'Alternative', 'Source', 'Supplement', 'Unspecified'
+     */
+    public const AF_RELATIONSHIP_DATA = "Data";
+
+    public const AF_RELATIONSHIP_ALTERNATIVE = "Alternative";
+
+    public const AF_RELATIONSHIP_SOURCE = "Source";
+
+    public const AF_RELATIONSHIP_SUPPLEMENT = "Supplement";
+
+    public const AF_RELATIONSHIP_UNSPECIFIED = "Unspecified";
+
+    /**
      * Additional creator tool (e.g. the ERP software that called the PHP library)
      *
@@ -39,9 +61,16 @@
 
     /**
+     * The relationship type to use for the XML attachment. Detault is Data
+     *
+     * @var string
+     */
+    private $attachmentRelationshipType = 'Data';
+
+    /**
      * Instance of the pdfwriter
      *
      * @var ZugferdPdfWriter
      */
-    private $pdfWriter = null;
+    private $pdfWriter;
 
     /**
@@ -51,4 +80,53 @@
      */
     private $pdfData = "";
+
+    /**
+     * List of files which should be additionally attached to PDF
+     *
+     * @var array
+     */
+    private $additionalFilesToAttach = [];
+
+    /**
+     * User-defined template for the author-metainformation
+     *
+     * @var string
+     */
+    private $authorTemplate = "";
+
+    /**
+     * User-defined template for the keyword-metainformation
+     *
+     * @var string
+     */
+    private $keywordTemplate = "";
+
+    /**
+     * User-defined template for the title-metainformation
+     *
+     * @var string
+     */
+    private $titleTemplate = "";
+
+    /**
+     * User-defined template for the subject-metainformation
+     *
+     * @var string
+     */
+    private $subjectTemplate = "";
+
+    /**
+     * User-defined callback function for all metainformation
+     *
+     * @var callable|null
+     */
+    private $metaInformationCallback;
+
+    /**
+     * Internal flag which indicate, that attachment pane should be opened
+     *
+     * @var boolean
+     */
+    private $attachmentPaneVisibility = true;
 
     /**
@@ -68,5 +146,5 @@
      * Generates the final document
      *
-     * @return self
+     * @return static
      */
     public function generateDocument()
@@ -78,38 +156,35 @@
 
     /**
-     * Saves the document generated with generateDocument to a file
+     * Saves the generated PDF document to a file
+     *
+     * @param  string $toFilename The full qualified filename to which the generated PDF (with attachment)is stored
+     * @return static
+     */
+    public function saveDocument(string $toFilename)
+    {
+        $this->pdfWriter->Output('F', $toFilename);
+
+        return $this;
+    }
+
+    /**
+     * Starts a HTTP download of the generated PDF document
      *
      * @param  string $toFilename
-     * The full qualified filename to which the generated PDF (with attachment)
-     * is stored
-     * @return self
-     */
-    public function saveDocument(string $toFilename)
-    {
-        $this->pdfWriter->Output($toFilename, 'F');
-
-        return $this;
-    }
-
-    /**
-     * Returns the PDF as an inline file
-     *
-     * @param  string $toFilename
      * @return string
      */
     public function saveDocumentInline(string $toFilename): string
     {
-        return $this->pdfWriter->Output($toFilename, 'I');
-    }
-
-    /**
-     * Returns the PDF as a string
-     *
-     * @param  string $toFilename
-     * @return string
-     */
-    public function downloadString(string $toFilename): string
-    {
-        return $this->pdfWriter->Output($toFilename, 'S');
+        return $this->pdfWriter->Output('I', $toFilename);
+    }
+
+    /**
+     * Returns the content of the generared PDF as a string
+     *
+     * @return string
+     */
+    public function downloadString(): string
+    {
+        return $this->pdfWriter->Output('S');
     }
 
@@ -117,7 +192,6 @@
      * Sets an additional creator tool (e.g. the ERP software that called the PHP library)
      *
-     * @param  string $additionalCreatorTool
-     * The name of the creator
-     * @return self
+     * @param  string $additionalCreatorTool The name of the creator
+     * @return static
      */
     public function setAdditionalCreatorTool(string $additionalCreatorTool)
@@ -136,11 +210,306 @@
     {
         $toolName = sprintf('Factur-X PHP library v%s by HorstOeko', ZugferdPackageVersion::getInstalledVersion());
+
         if ($this->additionalCreatorTool) {
             return $this->additionalCreatorTool . ' / ' . $toolName;
         }
+
         return $toolName;
     }
 
     /**
+     * Set the type of relationship for the XML attachment. Allowed
+     * types are 'Data', 'Alternative' and 'Source'
+     *
+     * @param  string $relationshipType Type of relationship
+     * @return static
+     */
+    public function setAttachmentRelationshipType(string $relationshipType)
+    {
+        if (!in_array($relationshipType, [static::AF_RELATIONSHIP_DATA, static::AF_RELATIONSHIP_ALTERNATIVE, static::AF_RELATIONSHIP_SOURCE])) {
+            $relationshipType = static::AF_RELATIONSHIP_DATA;
+        }
+
+        $this->attachmentRelationshipType = $relationshipType;
+
+        return $this;
+    }
+
+    /**
+     * Returns the relationship type for the XML attachment. This
+     * can return 'Data', 'Alternative'
+     *
+     * @return string
+     */
+    public function getAttachmentRelationshipType(): string
+    {
+        return $this->attachmentRelationshipType;
+    }
+
+    /**
+     * Set the type of relationship for the XML attachment to "Data"
+     *
+     * @return static
+     */
+    public function setAttachmentRelationshipTypeToData()
+    {
+        return $this->setAttachmentRelationshipType(static::AF_RELATIONSHIP_DATA);
+    }
+
+    /**
+     * Set the type of relationship for the XML attachment to "Alternative"
+     *
+     * @return static
+     */
+    public function setAttachmentRelationshipTypeToAlternative()
+    {
+        return $this->setAttachmentRelationshipType(static::AF_RELATIONSHIP_ALTERNATIVE);
+    }
+
+    /**
+     * Set the type of relationship for the XML attachment to "Source"
+     *
+     * @return static
+     */
+    public function setAttachmentRelationshipTypeToSource()
+    {
+        return $this->setAttachmentRelationshipType(static::AF_RELATIONSHIP_SOURCE);
+    }
+
+    /**
+     * Attach an additional file to PDF. The file that is specified in $fullFilename
+     * must exists
+     *
+     * @param  string $fullFilename
+     * @param  string $displayName
+     * @param  string $relationshipType
+     * @return static
+     * @throws ZugferdInvalidArgumentException
+     * @throws ZugferdFileNotFoundException
+     * @throws ZugferdFileNotReadableException
+     * @throws ZugferdUnknownMimetype
+     */
+    public function attachAdditionalFileByRealFile(string $fullFilename, string $displayName = "", string $relationshipType = "")
+    {
+        // Checks that the file really exists
+
+        if ($fullFilename === '') {
+            throw new ZugferdInvalidArgumentException("You must specify a filename for the content to attach");
+        }
+
+        if (!file_exists($fullFilename)) {
+            throw new ZugferdFileNotFoundException($fullFilename);
+        }
+
+        // Load content
+
+        $content = file_get_contents($fullFilename);
+
+        if ($content === false) {
+            throw new ZugferdFileNotReadableException($fullFilename);
+        }
+
+        // Add attachment
+
+        $this->attachAdditionalFileByContent(
+            $content,
+            $fullFilename,
+            $displayName,
+            $relationshipType,
+        );
+
+        return $this;
+    }
+
+    /**
+     * Attach an additional file to PDF by a content string
+     *
+     * @param  string $content
+     * @param  string $filename
+     * @param  string $displayName
+     * @param  string $relationshipType
+     * @return static
+     * @throws ZugferdInvalidArgumentException
+     * @throws ZugferdUnknownMimetype
+     */
+    public function attachAdditionalFileByContent(string $content, string $filename, string $displayName = "", string $relationshipType = "")
+    {
+        // Check content. The content must not be empty
+
+        if ($content === '') {
+            throw new ZugferdInvalidArgumentException("You must specify a content to attach");
+        }
+
+        // Check filename. The filename must not be empty
+
+        if ($filename === '') {
+            throw new ZugferdInvalidArgumentException("You must specify a filename for the content to attach");
+        }
+
+        // Mimetype for the file must exist
+
+        $mimeType = (new MimeDb())->findFirstMimeTypeByExtension(FileUtils::getFileExtension($filename));
+
+        if (is_null($mimeType)) {
+            throw new ZugferdUnknownMimetype();
+        }
+
+        // Sanatize relationship type
+
+        if ($relationshipType === '') {
+            $relationshipType = static::AF_RELATIONSHIP_SUPPLEMENT;
+        }
+
+        if (!in_array($relationshipType, [static::AF_RELATIONSHIP_DATA, static::AF_RELATIONSHIP_ALTERNATIVE, static::AF_RELATIONSHIP_SOURCE, static::AF_RELATIONSHIP_SUPPLEMENT, static::AF_RELATIONSHIP_UNSPECIFIED])) {
+            $relationshipType = static::AF_RELATIONSHIP_SUPPLEMENT;
+        }
+
+        // Sanatize displayname
+
+        if ($displayName === '') {
+            $displayName = FileUtils::getFilenameWithExtension($filename);
+        }
+
+        // Add to attachment list
+
+        $this->additionalFilesToAttach[] = [
+            PdfStreamReader::createByString($content),
+            FileUtils::getFilenameWithExtension($filename),
+            $displayName,
+            $relationshipType,
+            str_replace('/', '#2F', $mimeType)
+        ];
+
+        return $this;
+    }
+
+    /**
+     * Set the the deterministic mode. This mode should only be used
+     * for testing purposes
+     *
+     * @param  bool $deterministicModeEnabled
+     * @return static
+     */
+    public function setDeterministicModeEnabled(bool $deterministicModeEnabled)
+    {
+        $this->pdfWriter->setDeterministicModeEnabled($deterministicModeEnabled);
+
+        return $this;
+    }
+
+    /**
+     * Set the template for the author meta information
+     *
+     * @param  string $authorTemplate
+     * @return static
+     */
+    public function setAuthorTemplate(string $authorTemplate)
+    {
+        $this->authorTemplate = $authorTemplate;
+
+        return $this;
+    }
+
+    /**
+     * Set the template for the keyword meta information
+     *
+     * @param  string $keywordTemplate
+     * @return static
+     */
+    public function setKeywordTemplate(string $keywordTemplate)
+    {
+        $this->keywordTemplate = $keywordTemplate;
+
+        return $this;
+    }
+
+    /**
+     * Set the template for the title meta information
+     *
+     * @param  string $titleTemplate
+     * @return static
+     */
+    public function setTitleTemplate(string $titleTemplate)
+    {
+        $this->titleTemplate = $titleTemplate;
+
+        return $this;
+    }
+
+    /**
+     * Set the template for the subject meta information
+     *
+     * @param  string $subjectTemplate
+     * @return static
+     */
+    public function setSubjectTemplate(string $subjectTemplate)
+    {
+        $this->subjectTemplate = $subjectTemplate;
+
+        return $this;
+    }
+
+    /**
+     * Set the user defined callback for generating custom meta information
+     *
+     * @param  callable|null $callback
+     * @return static
+     */
+    public function setMetaInformationCallback(?callable $callback = null)
+    {
+        $this->metaInformationCallback = is_callable($callback) ? $callback : null;
+
+        return $this;
+    }
+
+    /**
+     * Sets the flag that indicates, that the attachment pane should be visible on start (True)
+     * or hidden (False)
+     *
+     * @param boolean $attachmentPaneVisibility Flag that indicates, that the attachment pane should be visible or hidden
+     * @return static
+     */
+    public function setAttachmentPaneVisibility(bool $attachmentPaneVisibility)
+    {
+        $this->attachmentPaneVisibility = $attachmentPaneVisibility;
+
+        return $this;
+    }
+
+    /**
+     * Returns true if the attachment pane is visible, otherwise false
+     *
+     * @return boolean
+     */
+    public function getAttachmentPaneIsVisible(): bool
+    {
+        return $this->attachmentPaneVisibility;
+    }
+
+    /**
+     * Show attachment pane on startup
+     *
+     * @return static
+     */
+    public function showAttachmentPane()
+    {
+        $this->setAttachmentPaneVisibility(true);
+
+        return $this;
+    }
+
+    /**
+     * Hide attachment pane on startup
+     *
+     * @return static
+     */
+    public function hideAttachmentPane()
+    {
+        $this->setAttachmentPaneVisibility(false);
+
+        return $this;
+    }
+
+    /**
      * Get the content of XML to attach
      *
@@ -164,4 +533,11 @@
 
     /**
+     * Get the XMP version for the XML to attach
+     *
+     * @return string
+     */
+    abstract protected function getXmlAttachmentXmpVersion(): string;
+
+    /**
      * Internal function which sets up the PDF
      *
@@ -174,5 +550,5 @@
         $pdfDataRef = null;
 
-        if ($this->pdfDataIsFile($this->pdfData)) {
+        if ($this->isFile($this->pdfData)) {
             $pdfDataRef = $this->pdfData;
         } elseif (is_string($this->pdfData)) {
@@ -190,9 +566,25 @@
             $this->getXmlAttachmentFilename(),
             'Factur-X Invoice',
-            'Data',
+            $this->getAttachmentRelationshipType(),
             'text#2Fxml'
         );
 
-        $this->pdfWriter->openAttachmentPane();
+        // Add additional attachments
+
+        foreach ($this->additionalFilesToAttach as $fileToAttach) {
+            $this->pdfWriter->attach(
+                $fileToAttach[0],
+                $fileToAttach[1],
+                $fileToAttach[2],
+                $fileToAttach[3],
+                $fileToAttach[4],
+            );
+        }
+
+        // Set flag to always show the attachment pane
+
+        if ($this->getAttachmentPaneIsVisible() === true) {
+            $this->pdfWriter->openAttachmentPane();
+        }
 
         // Copy pages from the original PDF
@@ -201,5 +593,5 @@
 
         for ($pageNumber = 1; $pageNumber <= $pageCount; ++$pageNumber) {
-            $pageContent = $this->pdfWriter->importPage($pageNumber, '/MediaBox');
+            $pageContent = $this->pdfWriter->importPage($pageNumber, '/MediaBox', true, true);
             $this->pdfWriter->AddPage();
             $this->pdfWriter->useTemplate($pageContent, 0, 0, null, null, true);
@@ -222,4 +614,6 @@
     private function updatePdfMetadata(): void
     {
+        $pdfCreatorToolInfos = $this->getCreatorToolName();
+
         $pdfMetadataInfos = $this->preparePdfMetadata();
         $this->pdfWriter->setPdfMetadataInfos($pdfMetadataInfos);
@@ -230,4 +624,5 @@
         $descFx = $descriptionNodes[0];
         $descFx->children('fx', true)->{'ConformanceLevel'} = strtoupper($this->getXmlAttachmentXmpName());
+        $descFx->children('fx', true)->{'Version'} = strtoupper($this->getXmlAttachmentXmpVersion());
         $descFx->children('fx', true)->{'DocumentFileName'} = $this->getXmlAttachmentFilename();
         $this->pdfWriter->addMetadataDescriptionNode($descFx->asXML());
@@ -243,4 +638,5 @@
         $descNodes->creator->children('rdf', true)->Seq->li = $pdfMetadataInfos['author'];
         $descNodes->description->children('rdf', true)->Alt->li = $pdfMetadataInfos['subject'];
+
         $this->pdfWriter->addMetadataDescriptionNode($descDc->asXML());
 
@@ -251,8 +647,15 @@
         $descXmp = $descriptionNodes[5];
         $xmpNodes = $descXmp->children('xmp', true);
-        $xmpNodes->{'CreatorTool'} = $this->getCreatorToolName();
+        $xmpNodes->{'CreatorTool'} = $pdfCreatorToolInfos;
         $xmpNodes->{'CreateDate'} = $pdfMetadataInfos['createdDate'];
         $xmpNodes->{'ModifyDate'} = $pdfMetadataInfos['modifiedDate'];
+
         $this->pdfWriter->addMetadataDescriptionNode($descXmp->asXML());
+
+        $this->pdfWriter->SetAuthor($pdfMetadataInfos['author'], true);
+        $this->pdfWriter->SetKeywords($pdfMetadataInfos['keywords'], true);
+        $this->pdfWriter->SetTitle($pdfMetadataInfos['title'], true);
+        $this->pdfWriter->SetSubject($pdfMetadataInfos['subject'], true);
+        $this->pdfWriter->SetCreator($pdfCreatorToolInfos, true);
     }
 
@@ -267,17 +670,18 @@
 
         $dateString = date('Y-m-d', strtotime($invoiceInformations['date']));
+
+        $author = $invoiceInformations['seller'];
+        $keywords = sprintf('%s, FacturX/ZUGFeRD', $invoiceInformations['docTypeName']);
         $title = sprintf('%s : %s %s', $invoiceInformations['seller'], $invoiceInformations['docTypeName'], $invoiceInformations['invoiceId']);
         $subject = sprintf('FacturX/ZUGFeRD %s %s dated %s issued by %s', $invoiceInformations['docTypeName'], $invoiceInformations['invoiceId'], $dateString, $invoiceInformations['seller']);
 
-        $pdfMetadata = array(
-            'author' => $invoiceInformations['seller'],
-            'keywords' => sprintf('%s, FacturX/ZUGFeRD', $invoiceInformations['docTypeName']),
-            'title' => $title,
-            'subject' => $subject,
+        return [
+            'author' => $this->buildMetadataField('author', $author, $invoiceInformations),
+            'keywords' => $this->buildMetadataField('keywords', $keywords, $invoiceInformations),
+            'title' => $this->buildMetadataField('title', $title, $invoiceInformations),
+            'subject' => $this->buildMetadataField('subject', $subject, $invoiceInformations),
             'createdDate' => $invoiceInformations['date'],
-            'modifiedDate' => date('Y-m-d\TH:i:s') . '+00:00',
-        );
-
-        return $pdfMetadata;
+            'modifiedDate' => (new DateTime())->format('Y-m-d\TH:i:sP'),
+        ];
     }
 
@@ -296,5 +700,5 @@
         $dateXpath = $xpath->query('//rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString');
         $date = $dateXpath->item(0)->nodeValue;
-        $dateReformatted = date('Y-m-d\TH:i:s', strtotime($date)) . '+00:00';
+        $dateReformatted = (new DateTime())->setTimestamp(strtotime($date))->format('Y-m-d\TH:i:sP');
 
         $invoiceIdXpath = $xpath->query('//rsm:ExchangedDocument/ram:ID');
@@ -302,16 +706,4 @@
 
         $sellerXpath = $xpath->query('//ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name');
-		
-		/*
-		if ($sellerXpath->item(0) === null) {
-			
-			echo '<pre>';
-			
-			debug_print_backtrace();
-			
-			die();
-			
-		}*/
-		
         $sellerName = $sellerXpath->item(0)->nodeValue;
 
@@ -328,12 +720,10 @@
         }
 
-        $invoiceInformation = array(
+        return [
             'invoiceId' => $invoiceId,
             'docTypeName' => $docTypeName,
             'seller' => $sellerName,
             'date' => $dateReformatted,
-        );
-
-        return $invoiceInformation;
+        ];
     }
 
@@ -345,11 +735,54 @@
      * @return boolean
      */
-    private function pdfDataIsFile($pdfData): bool
+    protected function isFile($pdfData): bool
     {
         try {
             return @is_file($pdfData);
-        } catch (\TypeError $ex) {
+        } catch (Throwable $throwable) {
             return false;
         }
     }
+
+    /**
+     * Returns the parsed meta-field content
+     *
+     * @param  string $which
+     * @param  string $default
+     * @param  array  $invoiceInformation
+     * @return string
+     */
+    private function buildMetadataField(string $which, string $default, array $invoiceInformation): string
+    {
+        $xmlContent = $this->getXmlContent();
+
+        if (is_callable($this->metaInformationCallback)) {
+            $callbackResult = call_user_func($this->metaInformationCallback, $which, $xmlContent, $invoiceInformation, $default);
+            if (!StringUtils::stringIsNullOrEmpty($callbackResult)) {
+                return $callbackResult;
+            }
+        }
+
+        $templates = [
+            'author' => $this->authorTemplate,
+            'keywords' => $this->keywordTemplate,
+            'title' => $this->titleTemplate,
+            'subject' => $this->subjectTemplate,
+        ];
+
+        if (!isset($templates[$which])) {
+            return $default;
+        }
+
+        if (StringUtils::stringIsNullOrEmpty($templates[$which])) {
+            return $default;
+        }
+
+        return sprintf(
+            $templates[$which],
+            $invoiceInformation['invoiceId'],
+            $invoiceInformation['docTypeName'],
+            $invoiceInformation['seller'],
+            $invoiceInformation['date']
+        );
+    }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfMerger.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfMerger.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfMerger.php	(revision 8504)
@@ -10,8 +10,11 @@
 namespace horstoeko\zugferd;
 
+use Throwable;
+use horstoeko\zugferd\ZugferdProfileResolver;
+use horstoeko\zugferd\ZugferdDocumentPdfBuilderAbstract;
+use horstoeko\zugferd\exception\ZugferdUnknownProfileException;
 use horstoeko\zugferd\exception\ZugferdFileNotReadableException;
+use horstoeko\zugferd\exception\ZugferdUnknownXmlContentException;
 use horstoeko\zugferd\exception\ZugferdUnknownProfileParameterException;
-use horstoeko\zugferd\ZugferdDocumentPdfBuilderAbstract;
-use horstoeko\zugferd\ZugferdProfileResolver;
 
 /**
@@ -70,5 +73,5 @@
             $xmlContent = file_get_contents($this->xmlDataOrFilename);
             if ($xmlContent === false) {
-                throw new ZugferdFileNotReadableException('Could not read XML file');
+                throw new ZugferdFileNotReadableException($this->xmlDataOrFilename);
             }
         } else {
@@ -98,4 +101,12 @@
 
     /**
+     * @inheritDoc
+     */
+    protected function getXmlAttachmentXmpVersion(): string
+    {
+        return $this->getProfileDefinitionParameter("xmpversion");
+    }
+
+    /**
      * Returns true if the submitted $xmlDataOrFilename is a valid file.
      * Otherwise it will return false
@@ -103,9 +114,9 @@
      * @return boolean
      */
-    private function xmlDataIsFile(): bool
+    protected function xmlDataIsFile(): bool
     {
         try {
             return @is_file($this->xmlDataOrFilename);
-        } catch (\TypeError $ex) {
+        } catch (Throwable $throwable) {
             return false;
         }
@@ -115,7 +126,8 @@
      * Guess the profile type of the readden xml document
      *
-     * @codeCoverageIgnore
-     *
      * @return array
+     * @throws ZugferdFileNotReadableException
+     * @throws ZugferdUnknownXmlContentException
+     * @throws ZugferdUnknownProfileException
      */
     private function getProfileDefinition(): array
@@ -127,12 +139,16 @@
      * Get a parameter from profile definition
      *
-     * @param string $parameterName
+     * @param  string $parameterName
      * @return mixed
+     * @throws ZugferdFileNotReadableException
+     * @throws ZugferdUnknownXmlContentException
+     * @throws ZugferdUnknownProfileException
+     * @throws ZugferdUnknownProfileParameterException
      */
-    public function getProfileDefinitionParameter(string $parameterName)
+    private function getProfileDefinitionParameter(string $parameterName)
     {
         $profileDefinition = $this->getProfileDefinition();
 
-        if (is_array($profileDefinition) && isset($profileDefinition[$parameterName])) {
+        if (isset($profileDefinition[$parameterName])) {
             return $profileDefinition[$parameterName];
         }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfReader.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfReader.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentPdfReader.php	(revision 8504)
@@ -10,6 +10,12 @@
 namespace horstoeko\zugferd;
 
-use Smalot\PdfParser\Parser as PdfParser;
+use Exception;
 use horstoeko\zugferd\exception\ZugferdFileNotFoundException;
+use horstoeko\zugferd\exception\ZugferdFileNotReadableException;
+use horstoeko\zugferd\exception\ZugferdNoPdfAttachmentFoundException;
+use horstoeko\zugferd\exception\ZugferdUnknownProfileException;
+use horstoeko\zugferd\exception\ZugferdUnknownProfileParameterException;
+use horstoeko\zugferd\exception\ZugferdUnknownXmlContentException;
+use JMS\Serializer\Exception\RuntimeException;
 
 /**
@@ -26,58 +32,65 @@
 {
     /**
-     * List of filenames which are possible in PDF
+     * Tries to load a PDF file (ZUGFeRD/Factur-X) and return a ZugferdDocumentReader
+     *
+     * @param  string $pdfFilename
+     * @return ZugferdDocumentReader
+     * @throws Exception
+     * @throws RuntimeException
+     * @throws ZugferdFileNotFoundException
+     * @throws ZugferdFileNotReadableException
+     * @throws ZugferdNoPdfAttachmentFoundException
+     * @throws ZugferdUnknownProfileException
+     * @throws ZugferdUnknownProfileParameterException
+     * @throws ZugferdUnknownXmlContentException
      */
-    const ATTACHMENT_FILENAMES = ['ZUGFeRD-invoice.xml'/*1.0*/, 'zugferd-invoice.xml'/*2.0*/, 'factur-x.xml'/*2.1*/, 'xrechnung.xml'];
+    public static function readAndGuessFromFile(string $pdfFilename): ZugferdDocumentReader
+    {
+        return ZugferdDocumentPdfReaderExt::readAndGuessFromFile($pdfFilename);
+    }
 
     /**
-     * Load a PDF file (ZUGFeRD/Factur-X)
+     * Tries to load an attachment content from PDF and return a ZugferdDocumentReader
+     *
+     * @param  string $pdfContent
+     * @return ZugferdDocumentReader
+     * @throws Exception
+     * @throws RuntimeException
+     * @throws ZugferdNoPdfAttachmentFoundException
+     * @throws ZugferdUnknownProfileException
+     * @throws ZugferdUnknownProfileParameterException
+     * @throws ZugferdUnknownXmlContentException
+     */
+    public static function readAndGuessFromContent(string $pdfContent): ZugferdDocumentReader
+    {
+        return ZugferdDocumentPdfReaderExt::readAndGuessFromContent($pdfContent);
+    }
+
+    /**
+     * Returns a XML content from a PDF file
      *
      * @param  string $pdfFilename
-     * Contains a full-qualified filename which must exist and must be readable
-     * @return ZugferdDocumentReader|null
+     * @return string
+     * @throws Exception
+     * @throws ZugferdFileNotFoundException
+     * @throws ZugferdFileNotReadableException
+     * @throws ZugferdNoPdfAttachmentFoundException
      */
-    public static function readAndGuessFromFile(string $pdfFilename): ?ZugferdDocumentReader
+    public static function getXmlFromFile(string $pdfFilename): string
     {
-        if (!file_exists($pdfFilename)) {
-            throw new ZugferdFileNotFoundException($pdfFilename);
-        }
+        return ZugferdDocumentPdfReaderExt::getInvoiceDocumentContentFromFile($pdfFilename);
+    }
 
-        $pdfParser = new PdfParser();
-        $pdfParsed = $pdfParser->parseFile($pdfFilename);
-        $filespecs = $pdfParsed->getObjectsByType('Filespec');
-
-        $attachmentFound = false;
-        $attachmentIndex = 0;
-        $embeddedFileIndex = 0;
-        $returnValue = null;
-
-        try {
-            foreach ($filespecs as $filespec) {
-                $filespecDetails = $filespec->getDetails();
-                if (in_array($filespecDetails['F'], static::ATTACHMENT_FILENAMES)) {
-                    $attachmentFound = true;
-                    break;
-                }
-                $attachmentIndex++;
-            }
-
-            if (true == $attachmentFound) {
-                /**
-                 * @var array<\Smalot\PdfParser\PDFObject>
-                 */
-                $embeddedFiles = $pdfParsed->getObjectsByType('EmbeddedFile');
-                foreach ($embeddedFiles as $embeddedFile) {
-                    if ($attachmentIndex == $embeddedFileIndex) {
-                        $returnValue = ZugferdDocumentReader::readAndGuessFromContent($embeddedFile->getContent());
-                        break;
-                    }
-                    $embeddedFileIndex++;
-                }
-            }
-        } catch (\Exception $e) {
-            $returnValue = null;
-        }
-
-        return $returnValue;
+    /**
+     * Returns a XML content from a PDF binary stream (string)
+     *
+     * @param  string $pdfContent
+     * @return string
+     * @throws Exception
+     * @throws ZugferdNoPdfAttachmentFoundException
+     */
+    public static function getXmlFromContent(string $pdfContent): string
+    {
+        return ZugferdDocumentPdfReaderExt::getInvoiceDocumentContentFromContent($pdfContent);
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentReader.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentReader.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentReader.php	(revision 8504)
@@ -16,5 +16,11 @@
 use horstoeko\stringmanagement\StringUtils;
 use horstoeko\zugferd\exception\ZugferdFileNotFoundException;
+use horstoeko\zugferd\exception\ZugferdFileNotReadableException;
+use horstoeko\zugferd\exception\ZugferdUnknownDateFormatException;
+use horstoeko\zugferd\exception\ZugferdUnknownXmlContentException;
+use horstoeko\zugferd\exception\ZugferdUnknownProfileException;
+use horstoeko\zugferd\exception\ZugferdUnknownProfileParameterException;
 use horstoeko\zugferd\ZugferdProfileResolver;
+use JMS\Serializer\Exception\RuntimeException;
 
 /**
@@ -31,121 +37,135 @@
 {
     /**
+     * Internal pointer for documents additional documents
+     *
+     * @var integer
+     */
+    private $documentAddRefDocPointer = 0;
+
+    /**
      * Undocumented variable
      *
      * @var integer
      */
-    private $documentAddRefDocPointer = 0;
-
-    /**
-     * Undocumented variable
+    private $documentUltimateCustomerOrderReferencedDocumentPointer = 0;
+
+    /**
+     * Internal pointer for documents allowance charges
      *
      * @var integer
      */
-    private $documentUltimateCustomerOrderReferencedDocumentPointer = 0;
-
-    /**
-     * Internal pointer for documents allowance charges
+    private $documentAllowanceChargePointer = 0;
+
+    /**
+     * Internal pointer for documents logistic service charges
      *
      * @var integer
      */
-    private $documentAllowanceChargePointer = 0;
-
-    /**
-     * Internal pointer for documents logistic service charges
+    private $documentLogisticServiceChargePointer = 0;
+
+    /**
+     * Internal pointer for documents payment terms
      *
      * @var integer
      */
-    private $documentLogisticServiceChargePointer = 0;
-
-    /**
-     * Internal pointer for documents payment terms
+    private $documentPaymentTermsPointer = 0;
+
+    /**
+     * Internal pointer for document payment means
      *
      * @var integer
      */
-    private $documentPaymentTermsPointer = 0;
-
-    /**
-     * Internal pointer for document payment means
+    private $documentPaymentMeansPointer = 0;
+
+    /**
+     * Internal pointer for the document taxes
      *
      * @var integer
      */
-    private $documentPaymentMeansPointer = 0;
-
-    /**
-     * Internal pointer for the document taxes
+    private $documentTaxPointer = 0;
+
+    /**
+     * Internal pointer for seller contacts
      *
      * @var integer
      */
-    private $documentTaxPointer = 0;
-
-    /**
-     * Internal pointer for seller contacts
+    private $documentSellerContactPointer = 0;
+
+    /**
+     * Internal pointer for byuer contacts
      *
      * @var integer
      */
-    private $documentSellerContactPointer = 0;
-
-    /**
-     * Internal pointer for byuer contacts
+    private $documentBuyerContactPointer = 0;
+
+    /**
+     * Internal pointer for seller tax representativ party contacts
      *
      * @var integer
      */
-    private $documentBuyerContactPointer = 0;
-
-    /**
-     * Internal pointer for seller tax representativ party contacts
+    private $documentSellerTaxRepresentativeContactPointer = 0;
+
+    /**
+     * Internal pointer for product enduser contacts
      *
      * @var integer
      */
-    private $documentSellerTaxRepresentativeContactPointer = 0;
-
-    /**
-     * Internal pointer for product enduser contacts
+    private $documentProductEndUserContactPointer = 0;
+
+    /**
+     * Internal pointer for Ship-To contacts
      *
      * @var integer
      */
-    private $documentProductEndUserContactPointer = 0;
-
-    /**
-     * Internal pointer for Ship-To contacts
+    private $documentShipToContactPointer = 0;
+
+    /**
+     * Internal pointer for Ultimate-Ship-To contacts
      *
      * @var integer
      */
-    private $documentShipToContactPointer = 0;
-
-    /**
-     * Internal pointer for Ultimate-Ship-To contacts
+    private $documentUltimateShipToContactPointer = 0;
+
+    /**
+     * Internal pointer for Ship-From contacts
      *
      * @var integer
      */
-    private $documentUltimateShipToContactPointer = 0;
-
-    /**
-     * Internal pointer for Ship-From contacts
+    private $documentShipFromContactPointer = 0;
+
+    /**
+     * Internal pointer for invoicer contacts
      *
      * @var integer
      */
-    private $documentShipFromContactPointer = 0;
-
-    /**
-     * Internal pointer for invoicer contacts
+    private $documentInvoicerContactPointer = 0;
+
+    /**
+     * Internal pointer for invoicee contacts
      *
      * @var integer
      */
-    private $documentInvoicerContactPointer = 0;
-
-    /**
-     * Internal pointer for invoicee contacts
+    private $documentInvoiceeContactPointer = 0;
+
+    /**
+     * Internal pointer for payee contacts
      *
      * @var integer
      */
-    private $documentInvoiceeContactPointer = 0;
-
-    /**
-     * Internal pointer for payee contacts
+    private $documentPayeeContactPointer = 0;
+
+    /**
+     * Internal pointer for documents invoice reference documents
      *
      * @var integer
      */
-    private $documentPayeeContactPointer = 0;
+    private $documentInvRefDocPointer = 0;
+
+    /**
+     * Internal pointer for documents trade accounting accounts
+     *
+     * @var integer
+     */
+    private $documentTradeAccountingAccountPointer = 0;
 
     /**
@@ -192,4 +212,11 @@
 
     /**
+     * Internal pointer for the position's additional referenced document (Object reference)
+     *
+     * @var integer
+     */
+    private $positionAddRefObjDocPointer = 0;
+
+    /**
      * Internal pointer for the positions product characteristics
      *
@@ -218,86 +245,96 @@
 
     /**
-     * Guess the profile type of a xml file
-     *
-     * @codeCoverageIgnore
-     *
-     * @param  string $xmlfilename The filename to read invoice data from
-     * @return ZugferdDocumentReader
-     */
-    public static function readAndGuessFromFile(string $xmlfilename): ZugferdDocumentReader
-    {
-        if (!file_exists($xmlfilename)) {
-            throw new ZugferdFileNotFoundException($xmlfilename);
+     * Guess the profile type of a xml file.
+     *
+     * @param  string $xmlFilename
+     * @return ZugferdDocumentReader
+     * @throws ZugferdFileNotFoundException
+     * @throws ZugferdFileNotReadableException
+     * @throws ZugferdUnknownXmlContentException
+     * @throws ZugferdUnknownProfileException
+     * @throws ZugferdUnknownProfileParameterException
+     * @throws RuntimeException
+     */
+    public static function readAndGuessFromFile(string $xmlFilename): ZugferdDocumentReader
+    {
+        if (!file_exists($xmlFilename)) {
+            throw new ZugferdFileNotFoundException($xmlFilename);
         }
 
-        return self::readAndGuessFromContent(file_get_contents($xmlfilename));
-    }
-
-    /**
-     * Guess the profile type of the readden xml document
-     *
-     * @codeCoverageIgnore
-     *
-     * @param  string $xmlcontent The XML content as a string to read the invoice data from
-     * @return ZugferdDocumentReader
-     */
-    public static function readAndGuessFromContent(string $xmlcontent): ZugferdDocumentReader
-    {
-        $profileId = ZugferdProfileResolver::resolveProfileId($xmlcontent);
-
-        return (new static($profileId))->readContent($xmlcontent);
-    }
-
-    /**
-     * Set the directory where the attached binary data from
-     * additional referenced documents are temporary stored
-     *
-     * @param  string $binarydatadirectory
-     * @return ZugferdDocumentReader
-     */
-    public function setBinaryDataDirectory(string $binarydatadirectory): ZugferdDocumentReader
-    {
-        if ($binarydatadirectory) {
-            if (is_dir($binarydatadirectory)) {
-                $this->binarydatadirectory = $binarydatadirectory;
-            }
+        $xmlContent = file_get_contents($xmlFilename);
+
+        if ($xmlContent === false) {
+            throw new ZugferdFileNotReadableException($xmlFilename);
         }
 
-        return $this;
-    }
-
-    /**
-     * Read content of a zuferd/xrechnung xml from a string
-     *
-     * @codeCoverageIgnore
-     *
-     * @param  string $xmlcontent The XML content as a string to read the invoice data from
-     * @return ZugferdDocumentReader
-     */
-    private function readContent(string $xmlcontent): ZugferdDocumentReader
-    {
-        $this->deserialize($xmlcontent);
-
-        return $this;
-    }
-
-    /**
-     * Read general information about the document
-     *
-     * @param  string|null   $documentno               Returns the document no issued by the seller
-     * @param  string|null   $documenttypecode         Returns the type of the document, See \horstoeko\codelists\ZugferdInvoiceType for details
-     * @param  DateTime|null $documentdate             Returns the date when the document was issued by the seller
-     * @param  string|null   $invoiceCurrency          Returns the code for the invoice currency
-     * @param  string|null   $taxCurrency              Returns the code for the currency of the VAT posting
-     * @param  string|null   $documentname             Returns the document type (free text)
-     * @param  string|null   $documentlanguage         Returns the language code in which the document was written
-     * @param  DateTime|null $effectiveSpecifiedPeriod Returns the contractual due date of the invoice
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentInformation(?string &$documentno, ?string &$documenttypecode, ?DateTime &$documentdate, ?string &$invoiceCurrency, ?string &$taxCurrency, ?string &$documentname, ?string &$documentlanguage, ?DateTime &$effectiveSpecifiedPeriod): ZugferdDocumentReader
-    {
-        $documentno = $this->getInvoiceValueByPath("getExchangedDocument.getID", "");
-        $documenttypecode = $this->getInvoiceValueByPath("getExchangedDocument.getTypeCode.value", "");
-        $documentdate = $this->getObjectHelper()->toDateTime(
+        return self::readAndGuessFromContent($xmlContent);
+    }
+
+    /**
+     * Guess the profile type of the readden xml document.
+     *
+     * @param  string $xmlContent The XML content as a string to read the invoice data from
+     * @return ZugferdDocumentReader
+     * @throws ZugferdUnknownXmlContentException
+     * @throws ZugferdUnknownProfileException
+     * @throws ZugferdUnknownProfileParameterException
+     * @throws RuntimeException
+     */
+    public static function readAndGuessFromContent(string $xmlContent): ZugferdDocumentReader
+    {
+        $profileId = ZugferdProfileResolver::resolveProfileId($xmlContent);
+
+        return (new static($profileId))->readContent($xmlContent);
+    }
+
+    /**
+     * Set the directory where the attached binary data from additional referenced documents are temporary stored.
+     *
+     * @param  string $binaryDataDirectory
+     * @return ZugferdDocumentReader
+     */
+    public function setBinaryDataDirectory(string $binaryDataDirectory): ZugferdDocumentReader
+    {
+        if ($binaryDataDirectory !== '' && $binaryDataDirectory !== '0' && is_dir($binaryDataDirectory)) {
+            $this->binarydatadirectory = $binaryDataDirectory;
+        }
+
+        return $this;
+    }
+
+    /**
+     * Read content of a zuferd/xrechnung xml from a string.
+     *
+     * @param  string $xmlContent The XML content as a string to read the invoice data from
+     * @return ZugferdDocumentReader
+     * @throws ZugferdUnknownProfileParameterException
+     * @throws RuntimeException
+     */
+    protected function readContent(string $xmlContent): ZugferdDocumentReader
+    {
+        $this->deserialize($xmlContent);
+
+        return $this;
+    }
+
+    /**
+     * Read general information about the document.
+     *
+     * @param  string|null   $documentNo               __BT-1, From MINIMUM__ The document no issued by the seller
+     * @param  string|null   $documentTypeCode         __BT-3, From MINIMUM__ The type of the document, See \horstoeko\codelists\ZugferdInvoiceType for details
+     * @param  DateTime|null $documentDate             __BT-2, From MINIMUM__ Date of invoice. The date when the document was issued by the seller
+     * @param  string|null   $invoiceCurrency          __BT-5, From MINIMUM__ Code for the invoice currency
+     * @param  string|null   $taxCurrency              __BT-6, From BASIC WL__ Code for the currency of the VAT entry
+     * @param  string|null   $documentName             __BT-X-2, From EXTENDED__ Document Type. The documenttype (free text)
+     * @param  string|null   $documentLanguage         __BT-X-4, From EXTENDED__ Language indicator. The language code in which the document was written
+     * @param  DateTime|null $effectiveSpecifiedPeriod __BT-X-6-000, From EXTENDED__ The contractual due date of the invoice
+     * @return ZugferdDocumentReader
+     * @throws ZugferdUnknownDateFormatException
+     */
+    public function getDocumentInformation(?string &$documentNo, ?string &$documentTypeCode, ?DateTime &$documentDate, ?string &$invoiceCurrency, ?string &$taxCurrency, ?string &$documentName, ?string &$documentLanguage, ?DateTime &$effectiveSpecifiedPeriod): ZugferdDocumentReader
+    {
+        $documentNo = $this->getInvoiceValueByPath("getExchangedDocument.getID.value", "");
+        $documentTypeCode = $this->getInvoiceValueByPath("getExchangedDocument.getTypeCode.value", "");
+        $documentDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getExchangedDocument.getIssueDateTime.getDateTimeString", ""),
             $this->getInvoiceValueByPath("getExchangedDocument.getIssueDateTime.getDateTimeString.getFormat", "")
@@ -305,21 +342,19 @@
         $invoiceCurrency = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceCurrencyCode.value", "");
         $taxCurrency = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getTaxCurrencyCode.value", "");
-        $documentname = $this->getInvoiceValueByPath("getExchangedDocument.getName.value", "");
-        $documentlanguages = $this->getInvoiceValueByPath("getExchangedDocument.getLanguageID", []);
-        $documentlanguage = (isset($documentlanguages[0]) ? $this->getObjectHelper()->tryCallByPathAndReturn($documentlanguages[0], "value") : "");
+        $documentName = $this->getInvoiceValueByPath("getExchangedDocument.getName.value", "");
+        $documentLanguage = $this->getInvoiceValueByPath("getExchangedDocument.getLanguageID.value", "");
         $effectiveSpecifiedPeriod = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getExchangedDocument.getEffectiveSpecifiedPeriod.getDateTimeString", ""),
             $this->getInvoiceValueByPath("getExchangedDocument.getEffectiveSpecifiedPeriod.getDateTimeString.getFormat", "")
         );
-        return $this;
-    }
-
-    /**
-     * Read general payment information
-     *
-     * @param  string|null $creditorReferenceID
-     * Returns the identifier of the creditor (SEPA)
-     * @param  string|null $paymentReference
-     * Returns the Usage (SEPA)
+
+        return $this;
+    }
+
+    /**
+     * Read general payment information.
+     *
+     * @param  string|null $creditorReferenceID __BT-90, From BASIC WL__ Identifier of the creditor
+     * @param  string|null $paymentReference    __BT-83, From BASIC WL__ Intended use for payment
      * @return ZugferdDocumentReader
      */
@@ -328,115 +363,64 @@
         $creditorReferenceID = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getCreditorReferenceID.value", "");
         $paymentReference = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPaymentReference.value", "") ?? "";
-        return $this;
-    }
-
-    /**
-     * Read copy indicator
-     *
-     * @param  boolean|null $copyindicator
-     * Returns true if this document is a copy from the original document
-     * @return ZugferdDocumentReader
-     */
-    public function getIsDocumentCopy(?bool &$copyindicator): ZugferdDocumentReader
-    {
-        $copyindicator = $this->getInvoiceValueByPath("getExchangedDocument.getCopyIndicator.getIndicator", false);
-        return $this;
-    }
-
-    /**
-     * Read a test document indicator
-     *
-     * @param  boolean|null $testdocumentindicator
-     * Returns true if this document is only for test purposes
-     * @return ZugferdDocumentReader
-     */
-    public function getIsTestDocument(?bool &$testdocumentindicator): ZugferdDocumentReader
-    {
-        $testdocumentindicator = $this->getInvoiceValueByPath("getExchangedDocumentContext.getTestIndicator.getIndicator", false);
-        return $this;
-    }
-
-    /**
-     * Read Document money summation
-     *
-     * @param  float|null $grandTotalAmount
-     * Returns the total invoice amount including sales tax
-     * @param  float|null $duePayableAmount
-     * Returns the Payment amount due
-     * @param  float|null $lineTotalAmount
-     * Returns the sum of the net amounts of all invoice lines
-     * @param  float|null $chargeTotalAmount
-     * Returns the sum of the surcharges at document level
-     * @param  float|null $allowanceTotalAmount
-     * Returns the sum of the discounts at document level
-     * @param  float|null $taxBasisTotalAmount
-     * Returns the total invoice amount excluding sales tax
-     * @param  float|null $taxTotalAmount
-     * Returns the total amount of the invoice sales tax, total tax amount in the booking currency
-     * @param  float|null $roundingAmount
-     * Returns the rounding amount
-     * @param  float|null $totalPrepaidAmount
-     * Returns the alreay payed amout
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentSummation(?float &$grandTotalAmount, ?float &$duePayableAmount, ?float &$lineTotalAmount, ?float &$chargeTotalAmount, ?float &$allowanceTotalAmount, ?float &$taxBasisTotalAmount, ?float &$taxTotalAmount, ?float &$roundingAmount, ?float &$totalPrepaidAmount): ZugferdDocumentReader
-    {
-        $invoiceCurrencyCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceCurrencyCode.value", "");
-
-        $grandTotalAmountElement = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getGrandTotalAmount", 0);
-        if (is_array($grandTotalAmountElement)) {
-            foreach ($grandTotalAmountElement as $grandTotalAmountElementItem) {
-                $grandTotalAmountCurrencyCode = $this->getObjectHelper()->tryCallAndReturn($grandTotalAmountElementItem, "getCurrencyID") ?? "";
-                if ($grandTotalAmountCurrencyCode == $invoiceCurrencyCode || $grandTotalAmountCurrencyCode == "") {
-                    $grandTotalAmount = $this->getObjectHelper()->tryCallAndReturn($grandTotalAmountElementItem, "value") ?? 0;
-                    break;
-                }
-            }
-        } else {
-            $grandTotalAmount = $this->getObjectHelper()->tryCallAndReturn($grandTotalAmountElement, "value") ?? 0;
-        }
-
-        $taxBasisTotalAmountElement = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getTaxBasisTotalAmount", 0);
-        if (is_array($taxBasisTotalAmountElement)) {
-            foreach ($taxBasisTotalAmountElement as $taxBasisTotalAmountElementItem) {
-                $taxBasisTotalAmountCurrencyCode = $this->getObjectHelper()->tryCallAndReturn($taxBasisTotalAmountElementItem, "getCurrencyID") ?? "";
-                if ($taxBasisTotalAmountCurrencyCode == $invoiceCurrencyCode || $taxBasisTotalAmountCurrencyCode == "") {
-                    $taxBasisTotalAmount = $this->getObjectHelper()->tryCallAndReturn($taxBasisTotalAmountElementItem, "value") ?? 0;
-                    break;
-                }
-            }
-        } else {
-            $taxBasisTotalAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getTaxBasisTotalAmount.value", 0);
-        }
-
-        $taxTotalAmountElement = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getTaxTotalAmount", 0);
-        if (is_array($taxTotalAmountElement)) {
-            foreach ($taxTotalAmountElement as $taxTotalAmountElementItem) {
-                $taxTotalAmountCurrencyCode = $this->getObjectHelper()->tryCallAndReturn($taxTotalAmountElementItem, "getCurrencyID") ?? "";
-                if ($taxTotalAmountCurrencyCode == $invoiceCurrencyCode || $taxTotalAmountCurrencyCode == "") {
-                    $taxTotalAmount = $this->getObjectHelper()->tryCallAndReturn($taxTotalAmountElementItem, "value") ?? 0;
-                    break;
-                }
-            }
-        } else {
-            $taxTotalAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getTaxTotalAmount.value", 0);
-        }
-
-        $duePayableAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getDuePayableAmount.value", 0);
-        $lineTotalAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getLineTotalAmount.value", 0);
-        $chargeTotalAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getChargeTotalAmount.value", 0);
-        $allowanceTotalAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getAllowanceTotalAmount.value", 0);
-        $roundingAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getRoundingAmount.value", 0);
-        $totalPrepaidAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getTotalPrepaidAmount.value", 0);
-
-        return $this;
-    }
-
-    /**
-     * Retrieve document notes
-     *
-     * @param  array|null $notes Returns an array with all document notes. Each array element
-     *                           contains an assiociative array containing the following keys: _contentcode_, _subjectcode_ and
-     *                           _content_
+
+        return $this;
+    }
+
+    /**
+     * Get the identifier assigned by the buyer and used for internal routing.
+     *
+     * @param  string|null $buyerReference __BT-10, From MINIMUM__ An identifier assigned by the buyer and used for internal routing
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentBuyerReference(?string &$buyerReference): ZugferdDocumentReader
+    {
+        $buyerReference = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerReference.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get the routing-id (needed for German XRechnung).
+     *
+     * This is an alias-method for getDocumentBuyerReference.
+     *
+     * @param  string $routingId __BT-10, From MINIMUM__ An identifier assigned by the buyer and used for internal routing
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentRoutingId(string $routingId): ZugferdDocumentReader
+    {
+        return $this->getDocumentBuyerReference($routingId);
+    }
+
+    /**
+     * Get the copy-identifier.
+     *
+     * @param  boolean|null $copyIndicator __BT-X-3-00, BT-X-3, From EXTENDED__ Returns true if this document is a copy from the original document
+     * @return ZugferdDocumentReader
+     */
+    public function getIsDocumentCopy(?bool &$copyIndicator): ZugferdDocumentReader
+    {
+        $copyIndicator = $this->getInvoiceValueByPath("getExchangedDocument.getCopyIndicator.getIndicator", false);
+
+        return $this;
+    }
+
+    /**
+     * Get the test-docukent-identifier.
+     *
+     * @param  boolean|null $testDocumentIndicator Returns true if this document is only for test purposes
+     * @return ZugferdDocumentReader
+     */
+    public function getIsTestDocument(?bool &$testDocumentIndicator): ZugferdDocumentReader
+    {
+        $testDocumentIndicator = $this->getInvoiceValueByPath("getExchangedDocumentContext.getTestIndicator.getIndicator", false);
+
+        return $this;
+    }
+
+    /**
+     * Retrieve document notes.
+     *
+     * @param  array|null $notes __BT-22, From BASIC WL__, __BT-X-5, From EXTENDED__, __BT-21, From BASIC WL__ Returns an array with all document notes. Each array element contains an assiociative array containing the following keys: _contentcode_, _subjectcode_ and _content_
      * @return ZugferdDocumentReader
      */
@@ -457,32 +441,9 @@
 
     /**
-     * Get the identifier assigned by the buyer and used for internal routing.
-     *
-     * __Note__: The reference is specified by the buyer (e.g. contact details, department, office ID, project code),
-     * but stated by the seller on the invoice.
-     *
-     * @param  string|null $buyerreference
-     * An identifier assigned by the buyer and used for internal routing
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentBuyerReference(?string &$buyerreference): ZugferdDocumentReader
-    {
-        $buyerreference = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerReference.value", "");
-        return $this;
-    }
-
-    /**
-     * Get detailed information about the seller (=service provider)
-     *
-     * @param  string|null $name
-     * The full formal name under which the seller is registered in the
-     * National Register of Legal Entities, Taxable Person or otherwise acting as person(s)
-     * @param  array|null  $id
-     * An identifier of the seller. In many systems, seller identification
-     * is key information. Multiple seller IDs can be assigned or specified. They can be differentiated
-     * by using different identification schemes. If no scheme is given, it should be known to the buyer
-     * and seller, e.g. a previously exchanged, buyer-assigned identifier of the seller
-     * @param  string|null $description
-     * Further legal information that is relevant for the seller
+     * Get detailed information about the seller (=service provider).
+     *
+     * @param  string|null $name        __BT-27, From MINIMUM__ The full formal name under which the seller is registered in the National Register of Legal Entities, Taxable Person or otherwise acting as person(s)
+     * @param  array|null  $id          __BT-29, From BASIC WL__ An array of identifiers of the seller. In many systems, seller identification is key information. Multiple seller IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g. a previously exchanged, buyer-assigned identifier of the seller
+     * @param  string|null $description __BT-33, From EN 16931__ Further legal information that is relevant for the seller
      * @return ZugferdDocumentReader
      */
@@ -499,15 +460,7 @@
 
     /**
-     * Get global identifier of the seller.
-     *
-     * __Notes__
-     *
-     * - The Seller's ID identification scheme is a unique identifier
-     *   assigned to a seller by a global registration organization
-     *
-     * @param  array|null $globalID
-     * Array of the sellers global ids indexed by the identification scheme. The identification scheme results
-     * from the list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme
-     * codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * Get global identifiers of the seller.
+     *
+     * @param  array|null $globalID __BT-29/BT-29-0/BT-29-1, From BASIC WL__ Array of the sellers global ids indexed by the identification scheme.
      * @return ZugferdDocumentReader
      */
@@ -523,88 +476,60 @@
      * Get detailed information on the seller's tax information.
      *
-     * __Notes__
-     *  - The local identification (defined by the seller's address) of the seller for tax purposes or a reference that
-     *    enables the seller to indicate his reporting status for tax purposes. This information may have an impact on how the buyer
-     *    pays the bill (such as regarding social security contributions). So e.g. in some countries, if the seller is not reported
-     *    for tax, the buyer will withhold the tax amount and pay it on behalf of the seller
-     *
-     * @param  array|null $taxreg
-     * Array of tax numbers indexed by __FC__ for _Tax number_ and __VA__ for _Sales tax identification number_
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentSellerTaxRegistration(?array &$taxreg): ZugferdDocumentReader
-    {
-        $taxreg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getSpecifiedTaxRegistration", []);
-        $taxreg = $this->convertToAssociativeArray($taxreg, "getID.getSchemeID", "getID.value");
-
-        return $this;
-    }
-
-    /**
-     * Get the address of seller trade party
-     *
-     * @param  string|null $lineone
-     * The main line in the sellers address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the seller's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the seller's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the seller's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  array|null  $subdivision
-     * The sellers state
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentSellerAddress(?string &$lineone, ?string &$linetwo, ?string &$linethree, ?string &$postcode, ?string &$city, ?string &$country, ?array &$subdivision): ZugferdDocumentReader
-    {
-        $lineone = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getLineOne.value", "");
-        $linetwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getLineTwo.value", "");
-        $linethree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getLineThree.value", "");
-        $postcode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
+     * @param  array|null $taxReg _BT-31/32, From MINIMUM/EN 16931__ Array of tax numbers indexed by the schemeid (VA, FC, etc.)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSellerTaxRegistration(?array &$taxReg): ZugferdDocumentReader
+    {
+        $taxReg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getSpecifiedTaxRegistration", []);
+        $taxReg = $this->convertToAssociativeArray($taxReg, "getID.getSchemeID", "getID.value");
+
+        return $this;
+    }
+
+    /**
+     * Get the address of seller trade party.
+     *
+     * @param  string|null $lineOne     __BT-35, From BASIC WL__ The main line in the sellers address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-36, From BASIC WL__ Line 2 of the seller's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-162, From BASIC WL__ Line 3 of the seller's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-38, From BASIC WL__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-37, From BASIC WL__ Usual name of the city or municipality in which the seller's address is located
+     * @param  string|null $country     __BT-40, From MINIMUM__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  array|null  $subDivision __BT-39, From BASIC WL__ The sellers state
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSellerAddress(?string &$lineOne, ?string &$lineTwo, ?string &$lineThree, ?string &$postCode, ?string &$city, ?string &$country, ?array &$subDivision): ZugferdDocumentReader
+    {
+        $lineOne = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getLineOne.value", "");
+        $lineTwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getLineTwo.value", "");
+        $lineThree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getLineThree.value", "");
+        $postCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
         $city = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getCityName.value", "");
         $country = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getCountryID.value", "");
-        $subdivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
-
-        return $this;
-    }
-
-    /**
-     * Get the legal organisation of seller trade party
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * seller as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer and seller
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal
-     * registration of the seller. If the identification scheme is used, it must be selected from
-     * ISO/IEC 6523 list
-     * @param  string|null $legalorgname
-     * A name by which the seller is known, if different from the seller's name
-     * (also known as the company name)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentSellerLegalOrganisation(?string &$legalorgid, ?string &$legalorgtype, ?string &$legalorgname): ZugferdDocumentReader
-    {
-        $legalorgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getSpecifiedLegalOrganization.getID.value", "");
-        $legalorgtype = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
-        $legalorgname = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first seller contact of the document.
-     * Returns true if a first seller contact is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentSellerContact
+        $subDivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
+
+        return $this;
+    }
+
+    /**
+     * Get the legal organisation of seller trade party.
+     *
+     * @param  string|null $legalOrgId   __BT-30, From MINIMUM__ An identifier issued by an official registrar that identifies the seller as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer and seller
+     * @param  string|null $legalOrgType __BT-30-1, From MINIMUM__ The identifier for the identification scheme of the legal registration of the seller. If the identification scheme is used, it must be selected from ISO/IEC 6523 list
+     * @param  string|null $legalOrgName __BT-28, From BASIC WL__ A name by which the seller is known, if different from the seller's name (also known as the company name). Note: This may be used if different from the seller's name.
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSellerLegalOrganisation(?string &$legalOrgId, ?string &$legalOrgType, ?string &$legalOrgName): ZugferdDocumentReader
+    {
+        $legalOrgId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getSpecifiedLegalOrganization.getID.value", "");
+        $legalOrgType = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
+        $legalOrgName = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first seller contact of the document. Returns true if a first seller contact is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentSellerContact.
      *
      * @return boolean
@@ -613,12 +538,13 @@
     {
         $this->documentSellerContactPointer = 0;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentSellerContactPointer]);
     }
 
     /**
-     * Seek to the next available first seller contact of the document.
-     * Returns true if another seller contact is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentSellerContact
+     * Seek to the next available seller contact of the document. Returns true if another seller contact is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentSellerContact.
      *
      * @return boolean
@@ -627,48 +553,56 @@
     {
         $this->documentSellerContactPointer++;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentSellerContactPointer]);
     }
 
     /**
-     * Get detailed information on the seller's contact person
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity,
-     * such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the seller's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the seller's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the seller's email address
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentSellerContact(?string &$contactpersonname, ?string &$contactdepartmentname, ?string &$contactphoneno, ?string &$contactfaxno, ?string &$contactemailadd): ZugferdDocumentReader
+     * Get detailed information on the seller's contact person.
+     *
+     * @param  string|null $contactPersonname     __BT-41, From EN 16931__ Such as personal name, name of contact person or department or office
+     * @param  string|null $contactDepartmentname __BT-41-0, From EN 16931__ If a contact person is specified, either the name or the department must be transmitted.
+     * @param  string|null $contactPhoneNo        __BT-42, From EN 16931__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-107, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-43, From EN 16931__ An e-mail address of the contact point
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSellerContact(?string &$contactPersonname, ?string &$contactDepartmentname, ?string &$contactPhoneNo, ?string &$contactFaxNo, ?string &$contactEmailAddress): ZugferdDocumentReader
     {
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getDefinedTradeContact", []));
+
         $contact = $contacts[$this->documentSellerContactPointer];
-        $contactpersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
-        $contactdepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
-        $contactphoneno = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
-        $contactfaxno = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
-        $contactemailadd = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information about the buyer (service recipient)
-     *
-     * @param  string|null $name
-     * The full name of the buyer
-     * @param  array|null  $id
-     * An identifier of the buyer. In many systems, buyer identification is key information. Multiple buyer IDs can be
-     * assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given,
-     * it should be known to the buyer and buyer, e.g. a previously exchanged, seller-assigned identifier of the buyer
-     * @param  string|null $description
-     * Further legal information about the buyer
+
+        $contactPersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
+        $contactDepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
+        $contactPhoneNo = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
+        $contactFaxNo = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
+        $contactEmailAddress = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information on the seller's electronic communication information.
+     *
+     * @param  string|null $uriScheme __BT-34-1, From BASIC WL__ The identifier for the identification scheme of the seller's electronic address
+     * @param  string|null $uri       __BT-34, From BASIC WL__ Specifies the electronic address of the seller to which the response to the invoice can be sent at application level
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSellerCommunication(?string &$uriScheme, ?string &$uri): ZugferdDocumentReader
+    {
+        $uri = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getURIUniversalCommunication.getURIID.value", "");
+        $uriScheme = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTradeParty.getURIUniversalCommunication.getURIID.getSchemeID", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information about the buyer (service recipient).
+     *
+     * @param  string|null $name        __BT-44, From MINIMUM__ The full name of the buyer
+     * @param  array|null  $id          __BT-46, From BASIC WL__ An identifier of the buyer. In many systems, buyer identification is key information. Multiple buyer IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and buyer, e.g. a previously exchanged, seller-assigned identifier of the buyer
+     * @param  string|null $description __BT-X-334, From EXTENDED__ Further legal information about the buyer
      * @return ZugferdDocumentReader
      */
@@ -685,14 +619,7 @@
 
     /**
-     * Get global identifier of the buyer.
-     *
-     * __Notes__
-     *  - The buyers's ID identification scheme is a unique identifier
-     *    assigned to a buyer by a global registration organization
-     *
-     * @param  array|null $globalID
-     * Array of the buyers global ids indexed by the identification scheme. The identification scheme results
-     * from the list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme
-     * codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * Get global identifiers of the buyer.
+     *
+     * @param  array|null $globalID __BT-46-0, BT-46-1, From BASIC WL__ Array of the buyers global ids indexed by the identification scheme.
      * @return ZugferdDocumentReader
      */
@@ -708,85 +635,59 @@
      * Get detailed information on the buyer's tax information.
      *
-     * __Notes__
-     *  - The local identification (defined by the buyer's address) of the buyer for tax purposes or a reference that
-     *    enables the buyer to indicate his reporting status for tax purposes.
-     *
-     * @param  array|null $taxreg
-     * Array of tax numbers indexed by __FC__ for _Tax number_ and __VA__ for _Sales tax identification number_
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentBuyerTaxRegistration(?array &$taxreg): ZugferdDocumentReader
-    {
-        $taxreg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getSpecifiedTaxRegistration", []);
-        $taxreg = $this->convertToAssociativeArray($taxreg, "getID.getSchemeID", "getID.value");
-
-        return $this;
-    }
-
-    /**
-     * Get the address of buyer trade party
-     *
-     * @param  string|null $lineone
-     * The main line in the buyers address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the buyers address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the buyers address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the buyers address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  array|null  $subdivision
-     * The buyers state
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentBuyerAddress(?string &$lineone, ?string &$linetwo, ?string &$linethree, ?string &$postcode, ?string &$city, ?string &$country, ?array &$subdivision): ZugferdDocumentReader
-    {
-        $lineone = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getLineOne.value", "");
-        $linetwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getLineTwo.value", "");
-        $linethree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getLineThree.value", "");
-        $postcode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
+     * @param  array|null $taxReg _BT-48, From MINIMUM/EN 16931__ Array of tax numbers indexed by the schemeid (VA, FC, etc.)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentBuyerTaxRegistration(?array &$taxReg): ZugferdDocumentReader
+    {
+        $taxReg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getSpecifiedTaxRegistration", []);
+        $taxReg = $this->convertToAssociativeArray($taxReg, "getID.getSchemeID", "getID.value");
+
+        return $this;
+    }
+
+    /**
+     * Get the address of buyer trade party.
+     *
+     * @param  string|null $lineOne     __BT-50, From BASIC WL__ The main line in the buyers address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-51, From BASIC WL__ Line 2 of the buyers address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-163, From BASIC WL__ Line 3 of the buyers address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-53, From BASIC WL__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-52, From BASIC WL__ Usual name of the city or municipality in which the buyers address is located
+     * @param  string|null $country     __BT-55, From BASIC WL__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  array|null  $subDivision __BT-54, From BASIC WL__ The buyers state
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentBuyerAddress(?string &$lineOne, ?string &$lineTwo, ?string &$lineThree, ?string &$postCode, ?string &$city, ?string &$country, ?array &$subDivision): ZugferdDocumentReader
+    {
+        $lineOne = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getLineOne.value", "");
+        $lineTwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getLineTwo.value", "");
+        $lineThree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getLineThree.value", "");
+        $postCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
         $city = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getCityName.value", "");
         $country = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getCountryID.value", "");
-        $subdivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
-
-        return $this;
-    }
-
-    /**
-     * Get the legal organisation of buyer trade party
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * buyer as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer and buyer
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal
-     * registration of the buyer. If the identification scheme is used, it must be selected from
-     * ISO/IEC 6523 list
-     * @param  string|null $legalorgname
-     * A name by which the buyer is known, if different from the buyers name
-     * (also known as the company name)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentBuyerLegalOrganisation(?string &$legalorgid, ?string &$legalorgtype, ?string &$legalorgname): ZugferdDocumentReader
-    {
-        $legalorgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getSpecifiedLegalOrganization.getID.value", "");
-        $legalorgtype = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
-        $legalorgname = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first buyer contact of the document.
-     * Returns true if a first buyer contact is available, otherwise false
+        $subDivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
+
+        return $this;
+    }
+
+    /**
+     * Get the legal organisation of buyer trade party.
+     *
+     * @param  string|null $legalOrgId   __BT-47, From MINIMUM__ An identifier issued by an official registrar that identifies the buyer as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer and buyer
+     * @param  string|null $legalOrgType __BT-47-1, From MINIMUM__ The identifier for the identification scheme of the legal registration of the buyer. If the identification scheme is used, it must be selected from ISO/IEC 6523 list
+     * @param  string|null $legalOrgName __BT-45, From EN 16931__ A name by which the buyer is known, if different from the buyers name (also known as the company name)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentBuyerLegalOrganisation(?string &$legalOrgId, ?string &$legalOrgType, ?string &$legalOrgName): ZugferdDocumentReader
+    {
+        $legalOrgId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getSpecifiedLegalOrganization.getID.value", "");
+        $legalOrgType = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
+        $legalOrgName = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first buyer contact of the document. Returns true if a first buyer contact is available, otherwise false.
      * You may use this together with ZugferdDocumentReader::getDocumentBuyerContact
      *
@@ -796,12 +697,13 @@
     {
         $this->documentBuyerContactPointer = 0;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentBuyerContactPointer]);
     }
 
     /**
-     * Seek to the next available first Buyer contact of the document.
-     * Returns true if another Buyer contact is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentBuyerContact
+     * Seek to the next available Buyer contact of the document. Returns true if another Buyer contact is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentBuyerContact.
      *
      * @return boolean
@@ -810,45 +712,56 @@
     {
         $this->documentBuyerContactPointer++;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentBuyerContactPointer]);
     }
 
     /**
-     * Get contact information of buyer trade party
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the buyer's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the buyer's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the buyer's email address
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentBuyerContact(?string &$contactpersonname, ?string &$contactdepartmentname, ?string &$contactphoneno, ?string &$contactfaxno, ?string &$contactemailadd): ZugferdDocumentReader
+     * Get contact information of buyer trade party.
+     *
+     * @param  string|null $contactPersonName     __BT-56, From EN 16931__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-56-0, From EN 16931__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-57, From EN 16931__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-115, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-58, From EN 16931__ An e-mail address of the contact point
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentBuyerContact(?string &$contactPersonName, ?string &$contactDepartmentName, ?string &$contactPhoneNo, ?string &$contactFaxNo, ?string &$contactEmailAddress): ZugferdDocumentReader
     {
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getDefinedTradeContact", []));
+
         $contact = $contacts[$this->documentBuyerContactPointer];
-        $contactpersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
-        $contactdepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
-        $contactphoneno = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
-        $contactfaxno = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
-        $contactemailadd = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information about the seller's tax agent
-     *
-     * @param  string|null $name
-     * The full name of the seller's tax agent
-     * @param  array|null  $id
-     * An identifier of the sellers tax agent.
-     * @param  string|null $description
-     * Further legal information that is relevant for the sellers tax agent
+
+        $contactPersonName = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
+        $contactDepartmentName = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
+        $contactPhoneNo = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
+        $contactFaxNo = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
+        $contactEmailAddress = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information on the seller's electronic communication information.
+     *
+     * @param  string|null $uriScheme __BT-49-1, From BASIC WL__ The identifier for the identification scheme of the buyer's electronic address
+     * @param  string|null $uri       __BT-49, From BASIC WL__ Specifies the buyer's electronic address to which the invoice is sent
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentBuyerCommunication(?string &$uriScheme, ?string &$uri): ZugferdDocumentReader
+    {
+        $uri = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getURIUniversalCommunication.getURIID.value", "");
+        $uriScheme = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerTradeParty.getURIUniversalCommunication.getURIID.getSchemeID", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information about the seller's tax agent.
+     *
+     * @param  string|null $name        __BT-62, From BASIC WL__ The full name of the seller's tax agent
+     * @param  array|null  $id          __BT-X-116, From EXTENDED__ An array of identifiers of the sellers tax agent.
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the sellers tax agent
      * @return ZugferdDocumentReader
      */
@@ -865,11 +778,7 @@
 
     /**
-     * Get document seller tax agent global ids
-     *
-     * @param  array|null $globalID
-     * Returns an array of the seller's tax agent identifier. Identification scheme is an identifier uniquely
-     * assigned to a seller's tax agent by a global registration organization. The array key is the scheme id. The scheme results from the
-     * list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme codes are used:
-     * 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * Get document seller tax agent global ids.
+     *
+     * @param  array|null $globalID __BT-X-117/BT-X-117-1, From EXTENDED__ Returns an array of the seller's tax agent identifiers indexed by the identification scheme.
      * @return ZugferdDocumentReader
      */
@@ -885,84 +794,60 @@
      * Get detailed information on the seller's tax agent tax information.
      *
-     * __Notes__
-     *  - The local identification (defined by the sellers tax agent address) of the tax agent for tax purposes
-     *    or a reference that enables the sellers tax agent to indicate his reporting status for tax purposes.
-     *
-     * @param  array|null $taxreg
-     * Array of tax numbers indexed by __FC__ for _Tax number_ and __VA__ for _Sales tax identification number_
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentSellerTaxRepresentativeTaxRegistration(?array &$taxreg): ZugferdDocumentReader
-    {
-        $taxreg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getSpecifiedTaxRegistration", []);
-        $taxreg = $this->convertToAssociativeArray($taxreg, "getID.getSchemeID", "getID.value");
-
-        return $this;
-    }
-
-    /**
-     * Get the address of sellers tax agent
-     *
-     * @param  string|null $lineone
-     * The main line in the sellers tax agent address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the sellers tax agent address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the sellers tax agent address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the sellers tax agent address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  array|null  $subdivision
-     * The sellers tax agent state
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentSellerTaxRepresentativeAddress(?string &$lineone, ?string &$linetwo, ?string &$linethree, ?string &$postcode, ?string &$city, ?string &$country, ?array &$subdivision): ZugferdDocumentReader
-    {
-        $lineone = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getLineOne.value", "");
-        $linetwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getLineTwo.value", "");
-        $linethree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getLineThree.value", "");
-        $postcode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
+     * @param  array|null $taxReg __BT-63/BT-63-0, From BASIC WL__ Array of tax numbers indexed by the schemeid (VA, FC, etc.)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSellerTaxRepresentativeTaxRegistration(?array &$taxReg): ZugferdDocumentReader
+    {
+        $taxReg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getSpecifiedTaxRegistration", []);
+        $taxReg = $this->convertToAssociativeArray($taxReg, "getID.getSchemeID", "getID.value");
+
+        return $this;
+    }
+
+    /**
+     * Get the address of sellers tax agent.
+     *
+     * @param  string|null $lineOne     __BT-64, From BASIC WL__ The main line in the sellers tax agent address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-65, From BASIC WL__ Line 2 of the sellers tax agent address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-164, From BASIC WL__ Line 3 of the sellers tax agent address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-67, From BASIC WL__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-66, From BASIC WL__ Usual name of the city or municipality in which the sellers tax agent address is located
+     * @param  string|null $country     __BT-69, From BASIC WL__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  array|null  $subDivision __BT-68, From BASIC WL__ The sellers tax agent state
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSellerTaxRepresentativeAddress(?string &$lineOne, ?string &$lineTwo, ?string &$lineThree, ?string &$postCode, ?string &$city, ?string &$country, ?array &$subDivision): ZugferdDocumentReader
+    {
+        $lineOne = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getLineOne.value", "");
+        $lineTwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getLineTwo.value", "");
+        $lineThree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getLineThree.value", "");
+        $postCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
         $city = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getCityName.value", "");
         $country = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getCountryID.value", "");
-        $subdivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
-
-        return $this;
-    }
-
-    /**
-     * Get the legal organisation of sellers tax agent
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the seller tax agent as
-     * a legal entity or legal person.
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the sellers tax
-     * agent. If the identification scheme is used, it must be selected from  ISO/IEC 6523 list
-     * @param  string|null $legalorgname
-     * A name by which the sellers tax agent is known, if different from the  sellers tax agent
-     * name (also known as the company name)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentSellerTaxRepresentativeLegalOrganisation(?string &$legalorgid, ?string &$legalorgtype, ?string &$legalorgname): ZugferdDocumentReader
-    {
-        $legalorgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getSpecifiedLegalOrganization.getID.value", "");
-        $legalorgtype = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
-        $legalorgname = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first Seller Tax Representative contact of the document.
-     * Returns true if a first Seller Tax Representative contact is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentSellerTaxRepresentativeContact
+        $subDivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
+
+        return $this;
+    }
+
+    /**
+     * Get the legal organisation of sellers tax agent.
+     *
+     * @param  string|null $legalOrgId   __BT-, From __ An identifier issued by an official registrar that identifies the seller tax agent as a legal entity or legal person.
+     * @param  string|null $legalOrgType __BT-, From __ The identifier for the identification scheme of the legal registration of the sellers tax agent. If the identification scheme is used, it must be selected from  ISO/IEC 6523 list
+     * @param  string|null $legalOrgName __BT-, From __ A name by which the sellers tax agent is known, if different from the  sellers tax agent name (also known as the company name)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSellerTaxRepresentativeLegalOrganisation(?string &$legalOrgId, ?string &$legalOrgType, ?string &$legalOrgName): ZugferdDocumentReader
+    {
+        $legalOrgId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getSpecifiedLegalOrganization.getID.value", "");
+        $legalOrgType = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
+        $legalOrgName = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first seller tax representative contact of the document. Returns true if a first Seller Tax Representative contact is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentSellerTaxRepresentativeContact.
      *
      * @return boolean
@@ -971,12 +856,13 @@
     {
         $this->documentSellerTaxRepresentativeContactPointer = 0;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentSellerTaxRepresentativeContactPointer]);
     }
 
     /**
-     * Seek to the next available first seller contact of the document.
-     * Returns true if another seller contact is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentSellerContact
+     * Seek to the next available seller tax representative contact of the document. Returns true if another seller contact is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentSellerContact.
      *
      * @return boolean
@@ -985,49 +871,41 @@
     {
         $this->documentSellerTaxRepresentativeContactPointer++;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentSellerTaxRepresentativeContactPointer]);
     }
 
     /**
-     * Get contact information of sellers tax agent
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the seller's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the seller's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the seller's email address
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentSellerTaxRepresentativeContact(?string &$contactpersonname, ?string &$contactdepartmentname, ?string &$contactphoneno, ?string &$contactfaxno, ?string &$contactemailadd): ZugferdDocumentReader
+     * Get contact information of sellers tax agent.
+     *
+     * @param  string|null $contactPersonName     __BT-X-120, From EXTENDED__ Such as personal name, name of contact person or department or office
+     * @param  string|null $contactDepartmentName __BT-X-121, From EXTENDED__ If a contact person is specified, either the name or the department must be transmitted.
+     * @param  string|null $contactPhoneNo        __BT-X-122, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-123, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-124, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSellerTaxRepresentativeContact(?string &$contactPersonName, ?string &$contactDepartmentName, ?string &$contactPhoneNo, ?string &$contactFaxNo, ?string &$contactEmailAddress): ZugferdDocumentReader
     {
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerTaxRepresentativeTradeParty.getDefinedTradeContact", []));
+
         $contact = $contacts[$this->documentSellerTaxRepresentativeContactPointer];
-        $contactpersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
-        $contactdepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
-        $contactphoneno = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
-        $contactfaxno = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
-        $contactemailadd = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information on the product end user (general information)
-     *
-     * @param  string|null $name
-     * The full formal name under which the product end user is registered in the
-     * National Register of Legal Entities, Taxable Person or otherwise acting as person(s)
-     * @param  array|null  $id
-     * An identifier of the product end user. In many systems, product end user identification
-     * is key information. Multiple product end user IDs can be assigned or specified. They can be differentiated
-     * by using different identification schemes. If no scheme is given, it should be known to all trade
-     * parties, e.g. a previously exchanged
-     * @param  string|null $description
-     * Further legal information that is relevant for the product end user
+
+        $contactPersonName = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
+        $contactDepartmentName = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
+        $contactPhoneNo = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
+        $contactFaxNo = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
+        $contactEmailAddress = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information on the product end user (general information).
+     *
+     * @param  string      $name        __BT-X-128, From EXTENDED__ Name/company name of the end user
+     * @param  array|null  $id          __BT-X-126, From EXTENDED__ An array of identifiers of the product end user
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the product end user
      * @return ZugferdDocumentReader
      */
@@ -1046,12 +924,5 @@
      * Get global identifier of the product end user.
      *
-     * __Notes__
-     *  - The product end users ID identification scheme is a unique identifier
-     *    assigned to a product end user by a global registration organization
-     *
-     * @param  array|null $globalID
-     * Array of the product end users global ids indexed by the identification scheme. The identification scheme results
-     * from the list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme
-     * codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  array|null $globalID __BT-X-127/BT-X-127-0, From EXTENDED__ Array of the product end users global ids indexed by the identification scheme.
      * @return ZugferdDocumentReader
      */
@@ -1065,84 +936,62 @@
 
     /**
-     * Get detailed information on the tax number of the product end user
-     *
-     * @param  array|null $taxreg
-     * Array of tax numbers indexed by __FC__ for _Tax number_ and __VA__ for _Sales tax identification number_
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentProductEndUserTaxRegistration(?array &$taxreg): ZugferdDocumentReader
-    {
-        $taxreg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getSpecifiedTaxRegistration", []);
-        $taxreg = $this->convertToAssociativeArray($taxreg, "getID.getSchemeID", "getID.value");
-
-        return $this;
-    }
-
-    /**
-     * Get the address of product end user
-     *
-     * @param  string|null $lineone
-     * The main line in the product end users address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the product end users address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the product end users address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the product end users address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  array|null  $subdivision
-     * The product end users state
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentProductEndUserAddress(?string &$lineone, ?string &$linetwo, ?string &$linethree, ?string &$postcode, ?string &$city, ?string &$country, ?array &$subdivision): ZugferdDocumentReader
-    {
-        $lineone = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getLineOne.value", "");
-        $linetwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getLineTwo.value", "");
-        $linethree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getLineThree.value", "");
-        $postcode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
+     * Get detailed information on the tax number of the product end user.
+     *
+     * @param  array|null $taxReg __BT-, From __ Array of tax numbers indexed by the schemeid (VA, FC, etc.)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentProductEndUserTaxRegistration(?array &$taxReg): ZugferdDocumentReader
+    {
+        $taxReg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getSpecifiedTaxRegistration", []);
+        $taxReg = $this->convertToAssociativeArray($taxReg, "getID.getSchemeID", "getID.value");
+
+        return $this;
+    }
+
+    /**
+     * Get the address of product end user.
+     *
+     * @param  string|null $lineOne     __BT-X-397, From EXTENDED__ The main line in the product end users address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-X-398, From EXTENDED__ Line 2 of the product end users address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-399, From EXTENDED__ Line 3 of the product end users address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-396, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-400, From EXTENDED__ Usual name of the city or municipality in which the product end users address is located
+     * @param  string|null $country     __BT-X-401, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  array|null  $subDivision __BT-X-402, From EXTENDED__ The product end users state
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentProductEndUserAddress(?string &$lineOne, ?string &$lineTwo, ?string &$lineThree, ?string &$postCode, ?string &$city, ?string &$country, ?array &$subDivision): ZugferdDocumentReader
+    {
+        $lineOne = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getLineOne.value", "");
+        $lineTwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getLineTwo.value", "");
+        $lineThree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getLineThree.value", "");
+        $postCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
         $city = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getCityName.value", "");
         $country = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getCountryID.value", "");
-        $subdivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
-
-        return $this;
-    }
-
-    /**
-     * Get the legal organisation of product end user
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * product end user as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to all trade parties
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal
-     * registration of the product end user. If the identification scheme is used, it must be selected from
-     * ISO/IEC 6523 list
-     * @param  string|null $legalorgname
-     * A name by which the product end user is known, if different from the product
-     * end users name (also known as the company name)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentProductEndUserLegalOrganisation(?string &$legalorgid, ?string &$legalorgtype, ?string &$legalorgname): ZugferdDocumentReader
-    {
-        $legalorgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getSpecifiedLegalOrganization.getID.value", "");
-        $legalorgtype = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
-        $legalorgname = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first product end-user contact of the document.
-     * Returns true if a first product end-user contact is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentProductEndUserContact
+        $subDivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
+
+        return $this;
+    }
+
+    /**
+     * Get the legal organisation of product end user.
+     *
+     * @param  string|null $legalOrgId   __BT-X-129, From EXTENDED__ An identifier issued by an official registrar that identifies the product end user as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to all trade parties
+     * @param  string|null $legalOrgType __BT-X-129-0, From EXTENDED__The identifier for the identification scheme of the legal registration of the product end user. If the identification scheme is used, it must be selected from ISO/IEC 6523 list
+     * @param  string|null $legalOrgName __BT-X-130, From EXTENDED__ A name by which the product end user is known, if different from the product end users name (also known as the company name)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentProductEndUserLegalOrganisation(?string &$legalOrgId, ?string &$legalOrgType, ?string &$legalOrgName): ZugferdDocumentReader
+    {
+        $legalOrgId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getSpecifiedLegalOrganization.getID.value", "");
+        $legalOrgType = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
+        $legalOrgName = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first product end-user contact of the document. Returns true if a first product end-user contact is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentProductEndUserContact.
      *
      * @return boolean
@@ -1151,12 +1000,13 @@
     {
         $this->documentProductEndUserContactPointer = 0;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentProductEndUserContactPointer]);
     }
 
     /**
-     * Seek to the next available first product end-user contact of the document.
-     * Returns true if another product end-user contact is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentProductEndUserContact
+     * Seek to the next available product end-user contact of the document. Returns true if another product end-user contact is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentProductEndUserContact.
      *
      * @return boolean
@@ -1165,49 +1015,41 @@
     {
         $this->documentProductEndUserContactPointer++;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentProductEndUserContactPointer]);
     }
 
     /**
-     * Get detailed information on the product end user's contact person
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the product end user's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the product end user's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the product end user's email address
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentProductEndUserContact(?string &$contactpersonname, ?string &$contactdepartmentname, ?string &$contactphoneno, ?string &$contactfaxno, ?string &$contactemailadd): ZugferdDocumentReader
+     * Get detailed information on the product end user's contact person.
+     *
+     * @param  string|null $contactPersonName     __BT-X-131, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-132, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-133, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-134, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-135, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentProductEndUserContact(?string &$contactPersonName, ?string &$contactDepartmentName, ?string &$contactPhoneNo, ?string &$contactFaxNo, ?string &$contactEmailAddress): ZugferdDocumentReader
     {
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getProductEndUserTradeParty.getDefinedTradeContact", []));
+
         $contact = $contacts[$this->documentProductEndUserContactPointer];
-        $contactpersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
-        $contactdepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
-        $contactphoneno = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
-        $contactfaxno = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
-        $contactemailadd = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information on the different ship-to party
-     *
-     * @param  string|null $name
-     * The name of the party to whom the goods are being delivered or for whom the services are being
-     * performed. Must be used if the recipient of the goods or services is not the same as the buyer.
-     * @param  array|null  $id
-     * An identifier for the place where the goods are delivered or where the services are provided.
-     * Multiple IDs can be assigned or specified. They can be differentiated by using different
-     * identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
-     * @param  string|null $description
-     * Further legal information that is relevant for the party
+
+        $contactPersonName = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
+        $contactDepartmentName = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
+        $contactPhoneNo = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
+        $contactFaxNo = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
+        $contactEmailAddress = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information on the Ship-To party.
+     *
+     * @param  string|null $name        __BT-70, From BASIC WL__ The name of the party to whom the goods are being delivered or for whom the services are being performed. Must be used if the recipient of the goods or services is not the same as the buyer.
+     * @param  array|null  $id          __BT-71, From BASIC WL__ An array of identifiers
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party
      * @return ZugferdDocumentReader
      */
@@ -1224,10 +1066,7 @@
 
     /**
-     * Get global identifier for the delivery location
-     *
-     * @param  array|null $globalID
-     * Array of the delivery location's global ids indexed by the identification scheme. The identification scheme results
-     * from the list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme
-     * codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * Get global identifier for the Ship-To party.
+     *
+     * @param  array|null $globalID __BT-71-0/BT-71-1, From BASIC WL__ Array of global ids indexed by the identification scheme.
      * @return ZugferdDocumentReader
      */
@@ -1241,87 +1080,62 @@
 
     /**
-     * Get detailed information on tax details of the goods recipient
-     *
-     * @param  array|null $taxreg
-     * Array of tax numbers indexed by __FC__ for _Tax number_ and __VA__ for _Sales tax identification number_
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentShipToTaxRegistration(?array &$taxreg): ZugferdDocumentReader
-    {
-        $taxreg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getSpecifiedTaxRegistration", []);
-        $taxreg = $this->convertToAssociativeArray($taxreg, "getID.getSchemeID", "getID.value");
-
-        return $this;
-    }
-
-    /**
-     * Get the address to which the invoiced goods are delivered or to which the invoiced services are provided.
-     *
-     * __Notes__
-     *  - In the event of a collection, the delivery address corresponds to the collection address. In order
-     *    to meet the legal requirements, a sufficient number of components of the address must be entered.
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  array|null  $subdivision
-     * The party's state
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentShipToAddress(?string &$lineone, ?string &$linetwo, ?string &$linethree, ?string &$postcode, ?string &$city, ?string &$country, ?array &$subdivision): ZugferdDocumentReader
-    {
-        $lineone = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getLineOne.value", "");
-        $linetwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getLineTwo.value", "");
-        $linethree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getLineThree.value", "");
-        $postcode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
+     * Get detailed information on tax details of the Ship-To party.
+     *
+     * @param  array|null $taxReg __BT-X-161/BT-X-161-0, From EXTENDED__ Array of tax numbers indexed by the schemeid (VA, FC, etc.)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentShipToTaxRegistration(?array &$taxReg): ZugferdDocumentReader
+    {
+        $taxReg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getSpecifiedTaxRegistration", []);
+        $taxReg = $this->convertToAssociativeArray($taxReg, "getID.getSchemeID", "getID.value");
+
+        return $this;
+    }
+
+    /**
+     * Get the postal address of the Ship-To party.
+     *
+     * @param  string|null $lineOne     __BT-75, From BASIC WL__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-76, From BASIC WL__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-165, From BASIC WL__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-78, From BASIC WL__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-77, From BASIC WL__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-80, From BASIC WL__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  array|null  $subDivision __BT-79, From BASIC WL__ The party's state
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentShipToAddress(?string &$lineOne, ?string &$lineTwo, ?string &$lineThree, ?string &$postCode, ?string &$city, ?string &$country, ?array &$subDivision): ZugferdDocumentReader
+    {
+        $lineOne = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getLineOne.value", "");
+        $lineTwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getLineTwo.value", "");
+        $lineThree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getLineThree.value", "");
+        $postCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
         $city = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getCityName.value", "");
         $country = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getCountryID.value", "");
-        $subdivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
-
-        return $this;
-    }
-
-    /**
-     * Legal organisation of Ship-To trade party
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the party as a legal entity or legal
-     * person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or
-     * seller party
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal
-     * registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN,
-     * 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname
-     * A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentShipToLegalOrganisation(?string &$legalorgid, ?string &$legalorgtype, ?string &$legalorgname): ZugferdDocumentReader
-    {
-        $legalorgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getSpecifiedLegalOrganization.getID.value", "");
-        $legalorgtype = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
-        $legalorgname = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first Ship-To contact of the document.
-     * Returns true if a first ship-to contact is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentShipToContact
+        $subDivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
+
+        return $this;
+    }
+
+    /**
+     * Legal organisation of Ship-To trade party.
+     *
+     * @param  string|null $legalOrgid   __BT-X-153, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-153-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-154, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentShipToLegalOrganisation(?string &$legalOrgid, ?string &$legalOrgType, ?string &$legalOrgName): ZugferdDocumentReader
+    {
+        $legalOrgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getSpecifiedLegalOrganization.getID.value", "");
+        $legalOrgType = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
+        $legalOrgName = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first Ship-To contact of the document. Returns true if a first ship-to contact is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentShipToContact.
      *
      * @return boolean
@@ -1330,12 +1144,13 @@
     {
         $this->documentShipToContactPointer = 0;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentShipToContactPointer]);
     }
 
     /**
-     * Seek to the next available first ship-to contact of the document.
-     * Returns true if another ship-to contact is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentShipToContact
+     * Seek to the next available ship-to contact of the document. Returns true if another ship-to contact is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentShipToContact.
      *
      * @return boolean
@@ -1344,49 +1159,41 @@
     {
         $this->documentShipToContactPointer++;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentShipToContactPointer]);
     }
 
     /**
-     * Get detailed information on the contact person of the goods recipient
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentShipToContact(?string &$contactpersonname, ?string &$contactdepartmentname, ?string &$contactphoneno, ?string &$contactfaxno, ?string &$contactemailadd): ZugferdDocumentReader
+     * Get detailed information on the contact person of the goods recipient.
+     *
+     * @param  string|null $contactPersonName     __BT-X-155, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-156, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-157, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-158, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-159, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentShipToContact(?string &$contactPersonName, ?string &$contactDepartmentName, ?string &$contactPhoneNo, ?string &$contactFaxNo, ?string &$contactEmailAddress): ZugferdDocumentReader
     {
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipToTradeParty.getDefinedTradeContact", []));
+
         $contact = $contacts[$this->documentShipToContactPointer];
-        $contactpersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName", "");
-        $contactdepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName", "");
-        $contactphoneno = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber", "");
-        $contactfaxno = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber", "");
-        $contactemailadd = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID", "");
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information on the different end recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $name
-     * Name or company name of the different end recipient
-     * @param  array|null  $id
-     * Identification of the different end recipient. Multiple IDs can be assigned or specified. They can be
-     * differentiated by using different identification schemes.
-     * @param  string|null $description
-     * Further legal information that is relevant for the different end recipient
+
+        $contactPersonName = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
+        $contactDepartmentName = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
+        $contactPhoneNo = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
+        $contactFaxNo = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
+        $contactEmailAddress = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information on the different end recipient.
+     *
+     * @param  string|null $name        __BT-X-164, From EXTENDED__ Name or company name of the different end recipient
+     * @param  array|null  $id          __BT-X-162, From EXTENDED__ An array of identifiers
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the different end recipient
      * @return ZugferdDocumentReader
      */
@@ -1403,13 +1210,7 @@
 
     /**
-     * Get global identifiers of the different end recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  array|null $globalID
-     * Array of the party's global ids indexed by the identification scheme. The identification scheme results
-     * from the list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme
-     * codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * Get global identifiers of the different end recipient party.
+     *
+     * @param  array|null $globalID __BT-X-163/BT-X-163-0, From EXTENDED__ Array of global ids indexed by the identification scheme.
      * @return ZugferdDocumentReader
      */
@@ -1423,92 +1224,62 @@
 
     /**
-     * Get detailed information on tax details of the different end recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  array|null $taxreg
-     * Array of tax numbers indexed by __FC__ for _Tax number_ and __VA__ for _Sales tax identification number_
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentUltimateShipToTaxRegistration(?array &$taxreg): ZugferdDocumentReader
-    {
-        $taxreg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getSpecifiedTaxRegistration", []);
-        $taxreg = $this->convertToAssociativeArray($taxreg, "getID.getSchemeID", "getID.value");
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information on the address of the different end recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box. For major customer addresses, this field must be filled with "-".
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  array|null  $subdivision
-     * The party's state
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentUltimateShipToAddress(?string &$lineone, ?string &$linetwo, ?string &$linethree, ?string &$postcode, ?string &$city, ?string &$country, ?array &$subdivision): ZugferdDocumentReader
-    {
-        $lineone = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getLineOne.value", "");
-        $linetwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getLineTwo.value", "");
-        $linethree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getLineThree.value", "");
-        $postcode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
+     * Get detailed information on tax details of the different end recipient party.
+     *
+     * @param  array|null $taxReg __BT-X-180/BT-X-180-0, From EXTENDED__ Array of tax numbers indexed by the schemeid (VA, FC, etc.)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentUltimateShipToTaxRegistration(?array &$taxReg): ZugferdDocumentReader
+    {
+        $taxReg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getSpecifiedTaxRegistration", []);
+        $taxReg = $this->convertToAssociativeArray($taxReg, "getID.getSchemeID", "getID.value");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information on the address of the different end recipient party.
+     *
+     * @param  string|null $lineOne     __BT-X-173, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box. For major customer addresses, this field must be filled with "-".
+     * @param  string|null $lineTwo     __BT-X-174, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-175, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-172, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-176, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-X-177, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  array|null  $subDivision __BT-X-178, From EXTENDED__ The party's state
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentUltimateShipToAddress(?string &$lineOne, ?string &$lineTwo, ?string &$lineThree, ?string &$postCode, ?string &$city, ?string &$country, ?array &$subDivision): ZugferdDocumentReader
+    {
+        $lineOne = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getLineOne.value", "");
+        $lineTwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getLineTwo.value", "");
+        $lineThree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getLineThree.value", "");
+        $postCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
         $city = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getCityName.value", "");
         $country = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getCountryID.value", "");
-        $subdivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information about the Legal organisation of the different end recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the party. In particular,
-     * the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname
-     * A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentUltimateShipToLegalOrganisation(?string &$legalorgid, ?string &$legalorgtype, ?string &$legalorgname): ZugferdDocumentReader
-    {
-        $legalorgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getSpecifiedLegalOrganization.getID.value", "");
-        $legalorgtype = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
-        $legalorgname = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first contact person of the different end recipient party
-     * Returns true if a first contact person of the different end recipient party
-     * is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentUltimateShipToContact
+        $subDivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information about the Legal organisation of the different end recipient party.
+     *
+     * @param  string|null $legalOrgId   __BT-X-165, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-165-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-166, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentUltimateShipToLegalOrganisation(?string &$legalOrgId, ?string &$legalOrgType, ?string &$legalOrgName): ZugferdDocumentReader
+    {
+        $legalOrgId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getSpecifiedLegalOrganization.getID.value", "");
+        $legalOrgType = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
+        $legalOrgName = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first contact person of the different end recipient party. Returns true if a first contact person of the different end recipient party is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentUltimateShipToContact.
      *
      * @return boolean
@@ -1517,13 +1288,13 @@
     {
         $this->documentUltimateShipToContactPointer = 0;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentUltimateShipToContactPointer]);
     }
 
     /**
-     * Seek to the next available contact person of the different end recipient party.
-     * Returns true if another contact person of the different end recipient party
-     * is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentUltimateShipToContact
+     * Seek to the next available contact person of the different end recipient party. Returns true if another contact person of the different end recipient party is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentUltimateShipToContact.
      *
      * @return boolean
@@ -1532,53 +1303,41 @@
     {
         $this->documentUltimateShipToContactPointer++;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentUltimateShipToContactPointer]);
     }
 
     /**
-     * Get detailed information on the contact person of the different end recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentUltimateShipToContact(?string &$contactpersonname, ?string &$contactdepartmentname, ?string &$contactphoneno, ?string &$contactfaxno, ?string &$contactemailadd): ZugferdDocumentReader
+     * Get detailed information on the contact person of the different end recipient party.
+     *
+     * @param  string|null $contactPersonName     __BT-X-167, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-168, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-169, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-170, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-171, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentUltimateShipToContact(?string &$contactPersonName, ?string &$contactDepartmentName, ?string &$contactPhoneNo, ?string &$contactFaxNo, ?string &$contactEmailAddress): ZugferdDocumentReader
     {
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getUltimateShipToTradeParty.getDefinedTradeContact", []));
+
         $contact = $contacts[$this->documentUltimateShipToContactPointer];
-        $contactpersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
-        $contactdepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
-        $contactphoneno = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
-        $contactfaxno = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
-        $contactemailadd = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information of the deviating consignor party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $name
-     * The name of the party
-     * @param  array|null  $id
-     * An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using
-     * different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
-     * @param  string|null $description
-     * Further legal information that is relevant for the party
+
+        $contactPersonName = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
+        $contactDepartmentName = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
+        $contactPhoneNo = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
+        $contactFaxNo = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
+        $contactEmailAddress = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information of the deviating consignor party.
+     *
+     * @param  string|null $name        __BT-X-183, From EXTENDED__ The name of the party
+     * @param  array|null  $id          __BT-X-181, From EXTENDED__ An array of identifiers
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party
      * @return ZugferdDocumentReader
      */
@@ -1595,13 +1354,7 @@
 
     /**
-     * Get global identifier of the deviating consignor party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  array|null $globalID
-     * Array of the party's global ids indexed by the identification scheme. The identification scheme results
-     * from the list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme
-     * codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * Get global identifier of the deviating consignor party.
+     *
+     * @param  array|null $globalID __BT-X-182/BT-X-182-0, From EXTENDED__ Array of global ids indexed by the identification scheme.
      * @return ZugferdDocumentReader
      */
@@ -1615,91 +1368,62 @@
 
     /**
-     * Get detailed information on tax details of the deviating consignor party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  array|null $taxreg
-     * Array of tax numbers indexed by __FC__ for _Tax number_ and __VA__ for _Sales tax identification number_
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentShipFromTaxRegistration(?array &$taxreg): ZugferdDocumentReader
-    {
-        $taxreg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getSpecifiedTaxRegistration", []);
-        $taxreg = $this->convertToAssociativeArray($taxreg, "getID.getSchemeID", "getID.value");
-
-        return $this;
-    }
-
-    /**
-     * Get Detailed information on the address of the deviating consignor party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  array|null  $subdivision
-     * The party's state
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentShipFromAddress(?string &$lineone, ?string &$linetwo, ?string &$linethree, ?string &$postcode, ?string &$city, ?string &$country, ?array &$subdivision): ZugferdDocumentReader
-    {
-        $lineone = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getLineOne.value", "");
-        $linetwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getLineTwo.value", "");
-        $linethree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getLineThree.value", "");
-        $postcode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
+     * Get detailed information on tax details of the deviating consignor party.
+     *
+     * @param  array|null $taxReg __BT-, From __ Array of tax numbers indexed by the schemeid (VA, FC, etc.)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentShipFromTaxRegistration(?array &$taxReg): ZugferdDocumentReader
+    {
+        $taxReg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getSpecifiedTaxRegistration", []);
+        $taxReg = $this->convertToAssociativeArray($taxReg, "getID.getSchemeID", "getID.value");
+
+        return $this;
+    }
+
+    /**
+     * Get Detailed information on the address of the deviating consignor party.
+     *
+     * @param  string|null $lineOne     __BT-X-192, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-X-193, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-194, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-191, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-195, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-X-196, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  array|null  $subDivision __BT-X-197, From EXTENDED__ The party's state
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentShipFromAddress(?string &$lineOne, ?string &$lineTwo, ?string &$lineThree, ?string &$postCode, ?string &$city, ?string &$country, ?array &$subDivision): ZugferdDocumentReader
+    {
+        $lineOne = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getLineOne.value", "");
+        $lineTwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getLineTwo.value", "");
+        $lineThree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getLineThree.value", "");
+        $postCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
         $city = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getCityName.value", "");
         $country = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getCountryID.value.value", "");
-        $subdivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
-
-        return $this;
-    }
-
-    /**
-     * Get information about the legal organisation of the deviating consignor party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the party. In particular,
-     * the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname
-     * A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentShipFromLegalOrganisation(?string &$legalorgid, ?string &$legalorgtype, ?string &$legalorgname): ZugferdDocumentReader
-    {
-        $legalorgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getSpecifiedLegalOrganization.getID.value", "");
-        $legalorgtype = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
-        $legalorgname = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first contact information of the deviating consignor party of the document.
-     * Returns true if a first contact information of the deviating consignor party is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentShipFromContact
+        $subDivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
+
+        return $this;
+    }
+
+    /**
+     * Get information about the legal organisation of the deviating consignor party.
+     *
+     * @param  string|null $legalOrgId   __BT-X-184, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-184-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-185, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentShipFromLegalOrganisation(?string &$legalOrgId, ?string &$legalOrgType, ?string &$legalOrgName): ZugferdDocumentReader
+    {
+        $legalOrgId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getSpecifiedLegalOrganization.getID.value", "");
+        $legalOrgType = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
+        $legalOrgName = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first contact information of the deviating consignor party of the document. Returns true if a first contact information of the deviating consignor party is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentShipFromContact.
      *
      * @return boolean
@@ -1708,12 +1432,13 @@
     {
         $this->documentShipFromContactPointer = 0;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentShipFromContactPointer]);
     }
 
     /**
-     * Seek to the next available first contact information of the deviating consignor party of the document.
-     * Returns true if another contact information of the deviating consignor party is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentShipFromContact
+     * Seek to the next available contact information of the deviating consignor party of the document. Returns true if another contact information of the deviating consignor party is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentShipFromContact.
      *
      * @return boolean
@@ -1722,53 +1447,41 @@
     {
         $this->documentShipFromContactPointer++;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentShipFromContactPointer]);
     }
 
     /**
-     * Get contact information of the deviating consignor party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentShipFromContact(?string &$contactpersonname, ?string &$contactdepartmentname, ?string &$contactphoneno, ?string &$contactfaxno, ?string &$contactemailadd): ZugferdDocumentReader
+     * Get contact information of the deviating consignor party.
+     *
+     * @param  string|null $contactPersonName     __BT-X-186, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-187, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-188, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-189, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-190, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentShipFromContact(?string &$contactPersonName, ?string &$contactDepartmentName, ?string &$contactPhoneNo, ?string &$contactFaxNo, ?string &$contactEmailAddress): ZugferdDocumentReader
     {
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getShipFromTradeParty.getDefinedTradeContact", []));
+
         $contact = $contacts[$this->documentShipFromContactPointer];
-        $contactpersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
-        $contactdepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
-        $contactphoneno = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
-        $contactfaxno = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
-        $contactemailadd = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information of the invoicer party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $name
-     * The name of the party
-     * @param  array|null  $id
-     * An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using
-     * different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
-     * @param  string|null $description
-     * Further legal information that is relevant for the party
+
+        $contactPersonName = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
+        $contactDepartmentName = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
+        $contactPhoneNo = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
+        $contactFaxNo = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
+        $contactEmailAddress = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information of the invoicer party.
+     *
+     * @param  string      $name        __BT-X-207, From EXTENDED__ The name of the party
+     * @param  array|null  $id          __BT-X-205, From EXTENDED__ An array of identifiers
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party
      * @return ZugferdDocumentReader
      */
@@ -1785,13 +1498,7 @@
 
     /**
-     * Get global identifier of the invoicer party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  array|null $globalID
-     * Array of the party's global ids indexed by the identification scheme. The identification scheme results
-     * from the list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme
-     * codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * Get global identifier of the invoicer party.
+     *
+     * @param  array|null $globalID __BT-X-206/BT-X-206-0, From EXTENDED__ Array of global ids indexed by the identification scheme.
      * @return ZugferdDocumentReader
      */
@@ -1805,91 +1512,62 @@
 
     /**
-     * Get detailed information on tax details of the invoicer party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  array|null $taxreg
-     * Array of tax numbers indexed by __FC__ for _Tax number_ and __VA__ for _Sales tax identification number_
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentInvoicerTaxRegistration(?array &$taxreg): ZugferdDocumentReader
-    {
-        $taxreg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getSpecifiedTaxRegistration", []);
-        $taxreg = $this->convertToAssociativeArray($taxreg, "getID.getSchemeID", "getID.value");
-
-        return $this;
-    }
-
-    /**
-     * Get Detailed information on the address of the invoicer party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  array|null  $subdivision
-     * The party's state
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentInvoicerAddress(?string &$lineone, ?string &$linetwo, ?string &$linethree, ?string &$postcode, ?string &$city, ?string &$country, ?array &$subdivision): ZugferdDocumentReader
-    {
-        $lineone = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getLineOne.value", "");
-        $linetwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getLineTwo.value", "");
-        $linethree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getLineThree.value", "");
-        $postcode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
+     * Get detailed information on tax details of the invoicer party.
+     *
+     * @param  array|null $taxReg __BT-, From __ Array of tax numbers indexed by the schemeid (VA, FC, etc.)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentInvoicerTaxRegistration(?array &$taxReg): ZugferdDocumentReader
+    {
+        $taxReg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getSpecifiedTaxRegistration", []);
+        $taxReg = $this->convertToAssociativeArray($taxReg, "getID.getSchemeID", "getID.value");
+
+        return $this;
+    }
+
+    /**
+     * Get Detailed information on the address of the invoicer party.
+     *
+     * @param  string|null $lineOne     __BT-X-216, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-X-217, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-218, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-215, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-219, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-X-220, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ
+     * @param  array|null  $subDivision __BT-X-221, From EXTENDED__ The party's state
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentInvoicerAddress(?string &$lineOne, ?string &$lineTwo, ?string &$lineThree, ?string &$postCode, ?string &$city, ?string &$country, ?array &$subDivision): ZugferdDocumentReader
+    {
+        $lineOne = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getLineOne.value", "");
+        $lineTwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getLineTwo.value", "");
+        $lineThree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getLineThree.value", "");
+        $postCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
         $city = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getCityName.value", "");
         $country = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getCountryID.value", "");
-        $subdivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
-
-        return $this;
-    }
-
-    /**
-     * Get information about the legal organisation of the invoicer party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the party. In particular,
-     * the following scheme codes are used: 0021 : SWIFT, 0088 : EAN,* 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname
-     * A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentInvoicerLegalOrganisation(?string &$legalorgid, ?string &$legalorgtype, ?string &$legalorgname): ZugferdDocumentReader
-    {
-        $legalorgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getSpecifiedLegalOrganization.getID.value", "");
-        $legalorgtype = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
-        $legalorgname = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first contact information of the invoicer party of the document.
-     * Returns true if a first contact information of the invoicer party is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentInvoicerContact
+        $subDivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
+
+        return $this;
+    }
+
+    /**
+     * Get information about the legal organisation of the invoicer party.
+     *
+     * @param  string|null $legalOrgId   __BT-X-208, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-208-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN,* 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-209, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentInvoicerLegalOrganisation(?string &$legalOrgId, ?string &$legalOrgType, ?string &$legalOrgName): ZugferdDocumentReader
+    {
+        $legalOrgId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getSpecifiedLegalOrganization.getID.value", "");
+        $legalOrgType = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
+        $legalOrgName = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first contact information of the invoicer party of the document. Returns true if a first contact information of the invoicer party is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentInvoicerContact.
      *
      * @return boolean
@@ -1898,12 +1576,13 @@
     {
         $this->documentInvoicerContactPointer = 0;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentInvoicerContactPointer]);
     }
 
     /**
-     * Seek to the next available contact information of the invoicer party of the document.
-     * Returns true if another contact information of the invoicer party is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentInvoicerContact
+     * Seek to the next available contact information of the invoicer party of the document. Returns true if another contact information of the invoicer party is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentInvoicerContact.
      *
      * @return boolean
@@ -1912,53 +1591,41 @@
     {
         $this->documentInvoicerContactPointer++;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentInvoicerContactPointer]);
     }
 
     /**
-     * Get contact information of the invoicer party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentInvoicerContact(?string &$contactpersonname, ?string &$contactdepartmentname, ?string &$contactphoneno, ?string &$contactfaxno, ?string &$contactemailadd): ZugferdDocumentReader
+     * Get contact information of the invoicer party.
+     *
+     * @param  string|null $contactPersonName     __BT-X-210, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-211, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-212, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-213, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-214, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentInvoicerContact(?string &$contactPersonName, ?string &$contactDepartmentName, ?string &$contactPhoneNo, ?string &$contactFaxNo, ?string &$contactEmailAddress): ZugferdDocumentReader
     {
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoicerTradeParty.getDefinedTradeContact", []));
+
         $contact = $contacts[$this->documentInvoicerContactPointer];
-        $contactpersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
-        $contactdepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
-        $contactphoneno = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
-        $contactfaxno = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
-        $contactemailadd = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information on the different invoice recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $name
-     * The name of the party
-     * @param  array|null  $id
-     * An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using
-     * different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
-     * @param  string|null $description
-     * Further legal information that is relevant for the party
+
+        $contactPersonName = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
+        $contactDepartmentName = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
+        $contactPhoneNo = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
+        $contactFaxNo = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
+        $contactEmailAddress = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information on the different invoice recipient party.
+     *
+     * @param  string      $name        __BT-X-226, From EXTENDED__ The name of the party
+     * @param  array|null  $id          __BT-X-224, From EXTENDED__ An array of identifiers
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party
      * @return ZugferdDocumentReader
      */
@@ -1975,13 +1642,7 @@
 
     /**
-     * Get global identifier of the different invoice recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  array|null $globalID
-     * Array of the party's global ids indexed by the identification scheme. The identification scheme results
-     * from the list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme
-     * codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * Get global identifier of the different invoice recipient party.
+     *
+     * @param  array|null $globalID __BT-X-225/BT-X-225-0, From EXTENDED__ Array of global ids indexed by the identification scheme.
      * @return ZugferdDocumentReader
      */
@@ -1995,91 +1656,63 @@
 
     /**
-     * Get detailed information on tax details of the different invoice recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  array|null $taxreg
-     * Array of tax numbers indexed by __FC__ for _Tax number_ and __VA__ for _Sales tax identification number_
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentInvoiceeTaxRegistration(?array &$taxreg): ZugferdDocumentReader
-    {
-        $taxreg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getSpecifiedTaxRegistration", []);
-        $taxreg = $this->convertToAssociativeArray($taxreg, "getID.getSchemeID", "getID.value");
-
-        return $this;
-    }
-
-    /**
-     * Get Detailed information on the address of the different invoice recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  array|null  $subdivision
-     * The party's state
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentInvoiceeAddress(?string &$lineone, ?string &$linetwo, ?string &$linethree, ?string &$postcode, ?string &$city, ?string &$country, ?array &$subdivision): ZugferdDocumentReader
-    {
-        $lineone = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getLineOne.value", "");
-        $linetwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getLineTwo.value", "");
-        $linethree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getLineThree.value", "");
-        $postcode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
+     * Get detailed information on tax details of the different invoice recipient party.
+     *
+     * @param  array|null $taxReg __BT-X-242/BT-X-242-0, From EXTENDED__ Array of tax numbers indexed by the schemeid (VA, FC, etc.)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentInvoiceeTaxRegistration(?array &$taxReg): ZugferdDocumentReader
+    {
+        $taxReg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getSpecifiedTaxRegistration", []);
+        $taxReg = $this->convertToAssociativeArray($taxReg, "getID.getSchemeID", "getID.value");
+
+        return $this;
+    }
+
+    /**
+     * Get Detailed information on the address of the different invoice recipient party.
+     *
+     * @param  string|null $lineOne     __BT-X-235, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-X-236, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-237, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-234, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-238, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-X-239, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their
+     *                                  subdivisionsâ
+     * @param  array|null  $subDivision __BT-X-240, From EXTENDED__ The party's state
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentInvoiceeAddress(?string &$lineOne, ?string &$lineTwo, ?string &$lineThree, ?string &$postCode, ?string &$city, ?string &$country, ?array &$subDivision): ZugferdDocumentReader
+    {
+        $lineOne = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getLineOne.value", "");
+        $lineTwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getLineTwo.value", "");
+        $lineThree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getLineThree.value", "");
+        $postCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
         $city = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getCityName.value", "");
         $country = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getCountryID.value", "");
-        $subdivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
-
-        return $this;
-    }
-
-    /**
-     * Get information about the legal organisation of the different invoice recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the party. In particular,
-     * the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname
-     * A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentInvoiceeLegalOrganisation(?string &$legalorgid, ?string &$legalorgtype, ?string &$legalorgname): ZugferdDocumentReader
-    {
-        $legalorgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getSpecifiedLegalOrganization.getID.value", "");
-        $legalorgtype = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
-        $legalorgname = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first contact information of the different invoice recipient party of the document.
-     * Returns true if a first contact information of the different invoice recipient party is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentInvoiceeContact
+        $subDivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
+
+        return $this;
+    }
+
+    /**
+     * Get information about the legal organisation of the different invoice recipient party.
+     *
+     * @param  string|null $legalOrgId   __BT-X-227, From EXTENDED__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-X-227-0, From EXTENDED__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-228, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentInvoiceeLegalOrganisation(?string &$legalOrgId, ?string &$legalOrgType, ?string &$legalOrgName): ZugferdDocumentReader
+    {
+        $legalOrgId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getSpecifiedLegalOrganization.getID.value", "");
+        $legalOrgType = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
+        $legalOrgName = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first contact information of the different invoice recipient party of the document. Returns true if a first contact information of the different invoice recipient party is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentInvoiceeContact.
      *
      * @return boolean
@@ -2088,12 +1721,13 @@
     {
         $this->documentInvoiceeContactPointer = 0;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentInvoiceeContactPointer]);
     }
 
     /**
-     * Seek to the next available first contact information of the different invoice recipient party of the document.
-     * Returns true if another contact information of the different invoice recipient party is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentInvoiceeContact
+     * Seek to the next available contact information of the different invoice recipient party of the document. Returns true if another contact information of the different invoice recipient party is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentInvoiceeContact.
      *
      * @return boolean
@@ -2102,35 +1736,31 @@
     {
         $this->documentInvoiceeContactPointer++;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentInvoiceeContactPointer]);
     }
 
     /**
-     * Get contact information of the different invoice recipient party
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentInvoiceeContact(?string &$contactpersonname, ?string &$contactdepartmentname, ?string &$contactphoneno, ?string &$contactfaxno, ?string &$contactemailadd): ZugferdDocumentReader
+     * Get contact information of the different invoice recipient party.
+     *
+     * @param  string|null $contactPersonName     __BT-X-229, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-230, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-231, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-232, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-233, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentInvoiceeContact(?string &$contactPersonName, ?string &$contactDepartmentName, ?string &$contactPhoneNo, ?string &$contactFaxNo, ?string &$contactEmailAddress): ZugferdDocumentReader
     {
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceeTradeParty.getDefinedTradeContact", []));
+
         $contact = $contacts[$this->documentInvoiceeContactPointer];
-        $contactpersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
-        $contactdepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
-        $contactphoneno = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
-        $contactfaxno = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
-        $contactemailadd = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
+
+        $contactPersonName = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
+        $contactDepartmentName = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
+        $contactPhoneNo = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
+        $contactFaxNo = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
+        $contactEmailAddress = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
 
         return $this;
@@ -2141,13 +1771,7 @@
      * The role of the payee may also be performed by a party other than the seller, e.g. by a factoring service.
      *
-     * @param  string|null $name
-     * The name of the party. Must be used if the payee is not the same as the seller. However, the name of the
-     * payee may match the name of the seller.
-     * @param  array|null  $id
-     * An identifier for the party. Multiple IDs can be assigned or specified. They can be differentiated by using
-     * different identification schemes. If no scheme is given, it should  be known to the buyer and seller, e.g.
-     * a previously exchanged identifier assigned by the buyer or seller.
-     * @param  string|null $description
-     * Further legal information that is relevant for the party
+     * @param  string      $name        __BT-59, From BASIC WL__ The name of the party. Must be used if the payee is not the same as the seller. However, the name of the payee may match the name of the seller.
+     * @param  array|null  $id          __BT-60, From BASIC WL__ An array of identifiers
+     * @param  string|null $description __BT-, From __ Further legal information that is relevant for the party
      * @return ZugferdDocumentReader
      */
@@ -2164,10 +1788,7 @@
 
     /**
-     * Get global identifier of the payee party
-     *
-     * @param  array|null $globalID
-     * Array of the party's global ids indexed by the identification scheme. The identification scheme results
-     * from the list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme
-     * codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * Get global identifier of the payee party.
+     *
+     * @param  array|null $globalID __BT-60-0/BT-60-1, From BASIC WL__ Array of global ids indexed by the identification scheme.
      * @return ZugferdDocumentReader
      */
@@ -2181,82 +1802,63 @@
 
     /**
-     * Get detailed information on tax details of the payee party
-     *
-     * @param  array|null $taxreg
-     * Array of tax numbers indexed by __FC__ for _Tax number_ and __VA__ for _Sales tax identification number_
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPayeeTaxRegistration(?array &$taxreg): ZugferdDocumentReader
-    {
-        $taxreg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getSpecifiedTaxRegistration", []);
-        $taxreg = $this->convertToAssociativeArray($taxreg, "getID.getSchemeID", "getID.value");
-
-        return $this;
-    }
-
-    /**
-     * Get Detailed information on the address of the payee party
-     *
-     * @param  string|null $lineone
-     * The main line in the party's address. This is usually the street name and house number or
-     * the post office box
-     * @param  string|null $linetwo
-     * Line 2 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $linethree
-     * Line 3 of the party's address. This is an additional address line in an address that can be
-     * used to provide additional details in addition to the main line
-     * @param  string|null $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string|null $city
-     * Usual name of the city or municipality in which the party's address is located
-     * @param  string|null $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  array|null  $subdivision
-     * The party's state
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPayeeAddress(?string &$lineone, ?string &$linetwo, ?string &$linethree, ?string &$postcode, ?string &$city, ?string &$country, ?array &$subdivision): ZugferdDocumentReader
-    {
-        $lineone = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getLineOne.value", "");
-        $linetwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getLineTwo.value", "");
-        $linethree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getLineThree.value", "");
-        $postcode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
+     * Get detailed information on tax details of the payee party.
+     *
+     * @param  array|null $taxReg __BT-X-257/BT-X-257-0, From EXTENDED__ Array of tax numbers indexed by the schemeid (VA, FC, etc.)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPayeeTaxRegistration(?array &$taxReg): ZugferdDocumentReader
+    {
+        $taxReg = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getSpecifiedTaxRegistration", []);
+        $taxReg = $this->convertToAssociativeArray($taxReg, "getID.getSchemeID", "getID.value");
+
+        return $this;
+    }
+
+    /**
+     * Get Detailed information on the address of the payee party.
+     *
+     * @param  string|null $lineOne     __BT-X-250, From EXTENDED__ The main line in the party's address. This is usually the street name and house number or the post office box
+     * @param  string|null $lineTwo     __BT-X-251, From EXTENDED__ Line 2 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $lineThree   __BT-X-252, From EXTENDED__ Line 3 of the party's address. This is an additional address line in an address that can be used to provide additional details in addition to the main line
+     * @param  string|null $postCode    __BT-X-249, From EXTENDED__ Identifier for a group of properties, such as a zip code
+     * @param  string|null $city        __BT-X-253, From EXTENDED__ Usual name of the city or municipality in which the party's address is located
+     * @param  string|null $country     __BT-X-254, From EXTENDED__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their
+     *                                  subdivisionsâ
+     * @param  array|null  $subDivision __BT-X-255, From EXTENDED__ The party's state
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPayeeAddress(?string &$lineOne, ?string &$lineTwo, ?string &$lineThree, ?string &$postCode, ?string &$city, ?string &$country, ?array &$subDivision): ZugferdDocumentReader
+    {
+        $lineOne = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getLineOne.value", "");
+        $lineTwo = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getLineTwo.value", "");
+        $lineThree = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getLineThree.value", "");
+        $postCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getPostcodeCode.value", "");
         $city = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getCityName.value", "");
         $country = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getCountryID.value", "");
-        $subdivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
-
-        return $this;
-    }
-
-    /**
-     * Get information about the legal organisation of the payee party
-     *
-     * @param  string|null $legalorgid
-     * An identifier issued by an official registrar that identifies the
-     * party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided,
-     * it should be known to the buyer or seller party
-     * @param  string|null $legalorgtype
-     * The identifier for the identification scheme of the legal registration of the party. In particular,
-     * the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
-     * @param  string|null $legalorgname
-     * A name by which the party is known, if different from the party's name (also known as the company name)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPayeeLegalOrganisation(?string &$legalorgid, ?string &$legalorgtype, ?string &$legalorgname): ZugferdDocumentReader
-    {
-        $legalorgid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getSpecifiedLegalOrganization.getID.value", "");
-        $legalorgtype = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
-        $legalorgname = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first contact information of the payee party of the document.
-     * Returns true if a first contact information of the payee party is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentPayeeContact
+        $subDivision = $this->convertToArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getPostalTradeAddress.getCountrySubDivisionName", []), ["value"]);
+
+        return $this;
+    }
+
+    /**
+     * Get information about the legal organisation of the payee party.
+     *
+     * @param  string|null $legalOrgId   __BT-61, From BASIC WL__ An identifier issued by an official registrar that identifies the party as a legal entity or legal person. If no identification scheme ($legalorgtype) is provided, it should be known to the buyer or seller party
+     * @param  string|null $legalOrgType __BT-61-1, From BASIC WL__ The identifier for the identification scheme of the legal registration of the party. In particular, the following scheme codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
+     * @param  string|null $legalOrgName __BT-X-243, From EXTENDED__ A name by which the party is known, if different from the party's name (also known as the company name)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPayeeLegalOrganisation(?string &$legalOrgId, ?string &$legalOrgType, ?string &$legalOrgName): ZugferdDocumentReader
+    {
+        $legalOrgId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getSpecifiedLegalOrganization.getID.value", "");
+        $legalOrgType = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getSpecifiedLegalOrganization.getID.getSchemeID", "");
+        $legalOrgName = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getSpecifiedLegalOrganization.getTradingBusinessName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first contact information of the payee party of the document. Returns true if a first contact information of the payee party is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentPayeeContact.
      *
      * @return boolean
@@ -2265,12 +1867,13 @@
     {
         $this->documentPayeeContactPointer = 0;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentPayeeContactPointer]);
     }
 
     /**
-     * Seek to the next available first contact information of the payee party of the document.
-     * Returns true if another contact information of the payee party is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentPayeeContact
+     * Seek to the next available contact information of the payee party of the document. Returns true if another contact information of the payee party is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentPayeeContact.
      *
      * @return boolean
@@ -2279,66 +1882,59 @@
     {
         $this->documentPayeeContactPointer++;
+
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getDefinedTradeContact", []));
+
         return isset($contacts[$this->documentPayeeContactPointer]);
     }
 
     /**
-     * Get contact information of the payee party
-     *
-     * @param  string|null $contactpersonname
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $contactdepartmentname
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $contactphoneno
-     * Detailed information on the party's phone number
-     * @param  string|null $contactfaxno
-     * Detailed information on the party's fax number
-     * @param  string|null $contactemailadd
-     * Detailed information on the party's email address
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPayeeContact(?string &$contactpersonname, ?string &$contactdepartmentname, ?string &$contactphoneno, ?string &$contactfaxno, ?string &$contactemailadd): ZugferdDocumentReader
+     * Get contact information of the payee party.
+     *
+     * @param  string|null $contactPersonName     __BT-X-244, From EXTENDED__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $contactDepartmentName __BT-X-245, From EXTENDED__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $contactPhoneNo        __BT-X-246, From EXTENDED__ A telephone number for the contact point
+     * @param  string|null $contactFaxNo          __BT-X-247, From EXTENDED__ A fax number of the contact point
+     * @param  string|null $contactEmailAddress   __BT-X-248, From EXTENDED__ An e-mail address of the contact point
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPayeeContact(?string &$contactPersonName, ?string &$contactDepartmentName, ?string &$contactPhoneNo, ?string &$contactFaxNo, ?string &$contactEmailAddress): ZugferdDocumentReader
     {
         $contacts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getPayeeTradeParty.getDefinedTradeContact", []));
+
         $contact = $contacts[$this->documentPayeeContactPointer];
-        $contactpersonname = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
-        $contactdepartmentname = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
-        $contactphoneno = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
-        $contactfaxno = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
-        $contactemailadd = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Get detailed information on the delivery conditions
-     *
-     * __Note__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null $code
-     * Delivery condition (code)
+
+        $contactPersonName = $this->getInvoiceValueByPathFrom($contact, "getPersonName.value", "");
+        $contactDepartmentName = $this->getInvoiceValueByPathFrom($contact, "getDepartmentName.value", "");
+        $contactPhoneNo = $this->getInvoiceValueByPathFrom($contact, "getTelephoneUniversalCommunication.getCompleteNumber.value", "");
+        $contactFaxNo = $this->getInvoiceValueByPathFrom($contact, "getFaxUniversalCommunication.getCompleteNumber.value", "");
+        $contactEmailAddress = $this->getInvoiceValueByPathFrom($contact, "getEmailURIUniversalCommunication.getURIID.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information on the delivery conditions.
+     *
+     * @param  string|null $code __BT-X-145, From EXTENDED__ The code indicating the type of delivery for these commercial delivery terms. To be selected from the entries in the list UNTDID 4053 + INCOTERMS
      * @return ZugferdDocumentReader
      */
     public function getDocumentDeliveryTerms(?string &$code): ZugferdDocumentReader
     {
-        $code = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getApplicableTradeDeliveryTerms.setDeliveryTypeCode.value", "");
-
-        return $this;
-    }
-
-    /**
-     * Get details of the associated order confirmation
-     *
-     * @param  string|null   $issuerassignedid
-     * An identifier issued by the seller for a referenced sales order (Order confirmation number)
-     * @param  DateTime|null $issueddate
-     * Order confirmation date
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentSellerOrderReferencedDocument(?string &$issuerassignedid, ?DateTime &$issueddate): ZugferdDocumentReader
-    {
-        $issuerassignedid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerOrderReferencedDocument.getIssuerAssignedID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+        $code = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getApplicableTradeDeliveryTerms.getDeliveryTypeCode.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get details of the associated order confirmation.
+     *
+     * @param  string|null   $issuerAssignedId __BT-14, From EN 16931__ An identifier issued by the seller for a referenced sales order (Order confirmation number)
+     * @param  DateTime|null $issueDate        __BT-X-146, From EXTENDED__ Order confirmation date
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSellerOrderReferencedDocument(?string &$issuerAssignedId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $issuerAssignedId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerOrderReferencedDocument.getIssuerAssignedID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerOrderReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getSellerOrderReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", "")
@@ -2349,16 +1945,14 @@
 
     /**
-     * Get details of the related buyer order
-     *
-     * @param  string|null   $issuerassignedid
-     * An identifier issued by the buyer for a referenced order (order number)
-     * @param  DateTime|null $issueddate
-     * Date of order
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentBuyerOrderReferencedDocument(?string &$issuerassignedid, ?DateTime &$issueddate): ZugferdDocumentReader
-    {
-        $issuerassignedid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerOrderReferencedDocument.getIssuerAssignedID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+     * Get details of the related buyer order.
+     *
+     * @param  string|null   $issuerAssignedId __BT-13, From MINIMUM__ An identifier issued by the buyer for a referenced order (order number)
+     * @param  DateTime|null $issueDate        __BT-X-147, From EXTENDED__ Date of order
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentBuyerOrderReferencedDocument(?string &$issuerAssignedId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $issuerAssignedId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerOrderReferencedDocument.getIssuerAssignedID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerOrderReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getBuyerOrderReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", "")
@@ -2369,17 +1963,32 @@
 
     /**
-     * Get details of the associated contract
-     *
-     * @param  string|null   $issuerassignedid
-     * The contract reference should be assigned once in the context of the specific trade relationship and for a
-     * defined period of time (contract number)
-     * @param  DateTime|null $issueddate
-     * Contract date
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentContractReferencedDocument(?string &$issuerassignedid, ?DateTime &$issueddate): ZugferdDocumentReader
-    {
-        $issuerassignedid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getContractReferencedDocument.getIssuerAssignedID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+     * Get details of the associated offer.
+     *
+     * @param  string|null   $issuerAssignedId __BT-X-403, From EXTENDED__ Offer number
+     * @param  DateTime|null $issueDate        __BT-X-404, From EXTENDED__ Date of offer
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentQuotationReferencedDocument(?string &$issuerAssignedId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $issuerAssignedId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getQuotationReferencedDocument.getIssuerAssignedID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
+            $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getQuotationReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
+            $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getQuotationReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", "")
+        );
+
+        return $this;
+    }
+
+    /**
+     * Get details of the associated contract.
+     *
+     * @param  string|null   $issuerAssignedId __BT-12, From BASIC WL__ The contract reference should be assigned once in the context of the specific trade relationship and for a defined period of time (contract number)
+     * @param  DateTime|null $issueDate        __BT-X-26, From EXTENDED__ Contract date
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentContractReferencedDocument(?string &$issuerAssignedId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $issuerAssignedId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getContractReferencedDocument.getIssuerAssignedID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getContractReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getContractReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", "")
@@ -2390,6 +1999,6 @@
 
     /**
-     * Get first additional referenced document for the document
-     * Returns true if an additional referenced document is available, otherwise false
+     * Get first additional referenced document for the document. Returns true if an additional referenced document is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentAdditionalReferencedDocument.
      *
      * @return boolean
@@ -2398,11 +2007,13 @@
     {
         $this->documentAddRefDocPointer = 0;
+
         $addRefDoc = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getAdditionalReferencedDocument", []);
+
         return isset($addRefDoc[$this->documentAddRefDocPointer]);
     }
 
     /**
-     * Get next additional referenced document for the document
-     * Returns true when another additional referenced document is available, otherwise false
+     * Get next additional referenced document for the document. Returns true when another additional referenced document is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentAdditionalReferencedDocument.
      *
      * @return boolean
@@ -2411,10 +2022,12 @@
     {
         $this->documentAddRefDocPointer++;
+
         $addRefDoc = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getAdditionalReferencedDocument", []);
+
         return isset($addRefDoc[$this->documentAddRefDocPointer]);
     }
 
     /**
-     * Get information about billing documents that provide evidence of claims made in the bill
+     * Get information about billing documents that provide evidence of claims made in the bill.
      *
      * __Notes__
@@ -2428,55 +2041,45 @@
      *    documents
      *
-     * @param  string|null   $issuerassignedid
-     * The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for
-     * an object on which the invoice is based, or an identifier of the document on which the invoice is based.
-     * @param  string|null   $typecode
-     * Type of referenced document (See codelist UNTDID 1001)
-     *  - Code 916 "reference paper" is used to reference the identification of the document on which the invoice is based
-     *  - Code 50 "Price / sales catalog response" is used to reference the tender or the lot
-     *  - Code 130 "invoice data sheet" is used to reference an identifier for an object specified by the seller.
-     * @param  string|null   $uriid
-     * The Uniform Resource Locator (URL) at which the external document is available. A means of finding the resource
-     * including the primary access method intended for it, e.g. http: // or ftp: //. The location of the external document
-     * must be used if the buyer needs additional information to support the amounts billed. External documents are not part
-     * of the invoice. Access to external documents can involve certain risks.
-     * @param  array|null    $name
-     * A description of the document, e.g. Hourly billing, usage or consumption report, etc.
-     * @param  string|null   $reftypecode
-     * The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the
-     * recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected
-     * from UNTDID 1153 in accordance with the code list entries.
-     * @param  DateTime|null $issueddate
-     * Document date
-     * @param  string|null   $binarydatafilename
-     * Contains a file name of an attachment document embedded as a binary object or sent with the invoice. Where the
-     * binary attached file is stored can be controlled by using the methud ZugferdDocumentReader::setBinaryDataDirectory()
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentAdditionalReferencedDocument(?string &$issuerassignedid, ?string &$typecode, ?string &$uriid = null, ?array &$name = null, ?string &$reftypecode = null, ?DateTime &$issueddate = null, ?string &$binarydatafilename = null): ZugferdDocumentReader
+     * @param  string        $issuerAssignedId   __BT-122, From EN 16931__ The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for an object on which the invoice is based, or an identifier of the document on which the invoice is based.
+     * @param  string        $typeCode           __BT-122-0, From EN 16931__ Type of referenced document (See codelist UNTDID 1001)
+     *                                           - Code 916 "reference paper" is used to reference the identification of the
+     *                                           document on which the invoice is based - Code 50 "Price / sales catalog response"
+     *                                           is used to reference the tender or the lot - Code 130 "invoice data sheet" is used
+     *                                           to reference an identifier for an object specified by the seller.
+     * @param  string|null   $uriId              __BT-124, From EN 16931__ A means of locating the resource, including the primary access method intended for it, e.g. http:// or ftp://. The storage location of the external document must be used if the buyer requires further information as
+     *                                           supporting documents for the invoiced amounts. External documents are not part of the invoice. Invoice processing should be possible without access to external documents. Access to external documents can entail certain risks.
+     * @param  array|null    $name               __BT-123, From EN 16931__ A description of the document, e.g. Hourly billing, usage or consumption report, etc.
+     * @param  string|null   $refTypeCode        __BT-, From __ The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected from UNTDID 1153 in accordance with the code list entries.
+     * @param  DateTime|null $issueDate          __BT-X-149, From EXTENDED__ Document date
+     * @param  string|null   $binaryDataFilename __BT-125, From EN 16931__ Contains a file name of an attachment document embedded as a binary object
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentAdditionalReferencedDocument(?string &$issuerAssignedId, ?string &$typeCode, ?string &$uriId, ?array &$name, ?string &$refTypeCode, ?DateTime &$issueDate, ?string &$binaryDataFilename): ZugferdDocumentReader
     {
         $addRefDoc = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getAdditionalReferencedDocument", []);
         $addRefDoc = $addRefDoc[$this->documentAddRefDocPointer];
 
-        $issuerassignedid = $this->getInvoiceValueByPathFrom($addRefDoc, "getIssuerAssignedID.value", "");
-        $typecode = $this->getInvoiceValueByPathFrom($addRefDoc, "getTypeCode.value", "");
-        $uriid = $this->getInvoiceValueByPathFrom($addRefDoc, "getURIID.value", "");
-        $name = $this->convertToArray($this->getInvoiceValueByPathFrom($addRefDoc, "getName", []), ["value"]);
-        $reftypecode = $this->getInvoiceValueByPathFrom($addRefDoc, "getReferenceTypeCode.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($addRefDoc, "getIssuerAssignedID.value", "");
+        $typeCode = $this->getInvoiceValueByPathFrom($addRefDoc, "getTypeCode.value", "");
+        $uriId = $this->getInvoiceValueByPathFrom($addRefDoc, "getURIID.value", "");
+        $name = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($addRefDoc, "getName.value", null));
+        $refTypeCode = $this->getInvoiceValueByPathFrom($addRefDoc, "getReferenceTypeCode.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPathFrom($addRefDoc, "getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPathFrom($addRefDoc, "getFormattedIssueDateTime.getDateTimeString.getFormat", "")
         );
-        $binarydatafilename = $this->getInvoiceValueByPathFrom($addRefDoc, "getAttachmentBinaryObject.getFilename", "");
+
+        $binaryDataFilename = $this->getInvoiceValueByPathFrom($addRefDoc, "getAttachmentBinaryObject.getFilename", "");
         $binarydata = $this->getInvoiceValueByPathFrom($addRefDoc, "getAttachmentBinaryObject.value", "");
+
         if (
-            StringUtils::stringIsNullOrEmpty($binarydatafilename) === false
+            StringUtils::stringIsNullOrEmpty($binaryDataFilename) === false
             && StringUtils::stringIsNullOrEmpty($binarydata) === false
             && StringUtils::stringIsNullOrEmpty($this->binarydatadirectory) === false
         ) {
-            $binarydatafilename = PathUtils::combinePathWithFile($this->binarydatadirectory, $binarydatafilename);
-            FileUtils::base64ToFile($binarydata, $binarydatafilename);
+            $binaryDataFilename = PathUtils::combinePathWithFile($this->binarydatadirectory, $binaryDataFilename);
+            FileUtils::base64ToFile($binarydata, $binaryDataFilename);
         } else {
-            $binarydatafilename = "";
+            $binaryDataFilename = "";
         }
 
@@ -2485,16 +2088,14 @@
 
     /**
-     * Get all additional referenced documents
-     *
-     * @param  array|null $refdocs
-     * Array contains all additional referenced documents, but without extracting attached binary objects. If you
-     * want to access attached binary objects you have to use ZugferdDocumentReader::getDocumentAdditionalReferencedDocument
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentAdditionalReferencedDocuments(?array &$refdocs): ZugferdDocumentReader
-    {
-        $refdocs = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getAdditionalReferencedDocument", []);
-        $refdocs = $this->convertToArray(
-            $refdocs,
+     * Get all additional referenced documents.
+     *
+     * @param  array|null $refDocs Array contains all additional referenced documents, but without extracting attached binary objects. If you want to access attached binary objects you have to use ZugferdDocumentReader::getDocumentAdditionalReferencedDocument
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentAdditionalReferencedDocuments(?array &$refDocs): ZugferdDocumentReader
+    {
+        $refDocs = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getAdditionalReferencedDocument", []);
+        $refDocs = $this->convertToArray(
+            $refDocs,
             [
                 "IssuerAssignedID" => ["getIssuerAssignedID.value", ""],
@@ -2511,10 +2112,83 @@
 
     /**
-     * Get Details of a project reference
-     *
-     * @param  string|null $id
-     * Project Data
-     * @param  string|null $name
-     * Project Name
+     * Get first reference to the previous invoice. Returns true if an invoice reference document is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentInvoiceReferencedDocument.
+     *
+     * @return boolean
+     */
+    public function firstDocumentInvoiceReferencedDocument(): bool
+    {
+        $this->documentInvRefDocPointer = 0;
+
+        $addRefDoc = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceReferencedDocument", []);
+
+        return isset($addRefDoc[$this->documentInvRefDocPointer]);
+    }
+
+    /**
+     * Get next reference to the previous invoice Returns true when another invoice reference document is available, otherwise false
+     * You may use this together with ZugferdDocumentReader::getDocumentInvoiceReferencedDocument.
+     *
+     * @return boolean
+     */
+    public function nextDocumentInvoiceReferencedDocument(): bool
+    {
+        $this->documentInvRefDocPointer++;
+
+        $addRefDoc = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceReferencedDocument", []);
+
+        return isset($addRefDoc[$this->documentInvRefDocPointer]);
+    }
+
+    /**
+     * Get reference to the previous invoice.
+     *
+     * @param string        $issuerAssignedId __BT-25, From BASIC WL__ The identification of an invoice previously sent by the seller
+     * @param string|null   $typeCode         __BT-X-555, From EXTENDED__ Type of previous invoice (code)
+     * @param DateTime|null $issueDate        __BT-26, From BASIC WL__ Date of the previous invoice
+     */
+    public function getDocumentInvoiceReferencedDocument(?string &$issuerAssignedId, ?string &$typeCode, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $invoiceRefDoc = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceReferencedDocument", []);
+        $invoiceRefDoc = $invoiceRefDoc[$this->documentInvRefDocPointer];
+
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($invoiceRefDoc, "getIssuerAssignedID.value", "");
+        $typeCode = $this->getInvoiceValueByPathFrom($invoiceRefDoc, "getTypeCode.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
+            $this->getInvoiceValueByPathFrom($invoiceRefDoc, "getFormattedIssueDateTime.getDateTimeString.value", ""),
+            $this->getInvoiceValueByPathFrom($invoiceRefDoc, "getFormattedIssueDateTime.getDateTimeString.getFormat", "")
+        );
+
+        return $this;
+    }
+
+    /**
+     * Get all references to the previous invoice.
+     *
+     * @param  array|null $invoiceRefDocs
+     * Array contains all invoice referenced documents, but without extracting attached binary objects. If you
+     * want to access attached binary objects you have to use ZugferdDocumentReader::getDocumentInvoiceReferencedDocument
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentInvoiceReferencedDocuments(?array &$invoiceRefDocs): ZugferdDocumentReader
+    {
+        $invoiceRefDocs = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceReferencedDocument", []);
+        $invoiceRefDocs = $this->convertToArray(
+            $invoiceRefDocs,
+            [
+                "IssuerAssignedID" => ["getIssuerAssignedID.value", ""],
+                "TypeCode" => ["getTypeCode.value", ""],
+                "FormattedIssueDateTime" => ["getFormattedIssueDateTime.getDateTimeString.value", ""],
+            ]
+        );
+
+        return $this;
+    }
+
+    /**
+     * Get Details of a project reference.
+     *
+     * @param  string|null $id   __BT-11, From EN 16931__ The identifier of the project to which the invoice relates
+     * @param  string|null $name __BT-11-0, From EN 16931__  The name of the project to which the invoice relates
      * @return ZugferdDocumentReader
      */
@@ -2528,6 +2202,6 @@
 
     /**
-     * Get first additional referenced document for the document
-     * Returns true if the first position is available, otherwise false
+     * Get first additional referenced document for the document. Returns true if the first position is available, otherwise false.
+     * Use wuth getDocumentUltimateCustomerOrderReferencedDocument.
      *
      * @return boolean
@@ -2536,11 +2210,13 @@
     {
         $this->documentUltimateCustomerOrderReferencedDocumentPointer = 0;
+
         $addRefDoc = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getUltimateCustomerOrderReferencedDocument", []);
+
         return isset($addRefDoc[$this->documentUltimateCustomerOrderReferencedDocumentPointer]);
     }
 
     /**
-     * Get next additional referenced document for the document
-     * Returns true if the first position is available, otherwise false
+     * Get next additional referenced document for the document. Returns true if the first position is available, otherwise false
+     * Use wuth getDocumentUltimateCustomerOrderReferencedDocument.
      *
      * @return boolean
@@ -2549,22 +2225,24 @@
     {
         $this->documentUltimateCustomerOrderReferencedDocumentPointer++;
+
         $addRefDoc = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getUltimateCustomerOrderReferencedDocument", []);
+
         return isset($addRefDoc[$this->documentUltimateCustomerOrderReferencedDocumentPointer]);
     }
 
     /**
-     * Get details of the ultimate customer order
-     *
-     * @param  string|null   $issuerassignedid
-     * @param  DateTime|null $issueddate
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentUltimateCustomerOrderReferencedDocument(?string &$issuerassignedid, ?DateTime &$issueddate): ZugferdDocumentReader
+     * Get details of the ultimate customer order.
+     *
+     * @param  string|null   $issuerAssignedId __BT-X-150, From EXTENDED__ Order number of the end customer
+     * @param  DateTime|null $issueDate        __BT-X-151, From EXTENDED__ Date of the order issued by the end customer
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentUltimateCustomerOrderReferencedDocument(?string &$issuerAssignedId, ?DateTime &$issueDate): ZugferdDocumentReader
     {
         $addRefDoc = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeAgreement.getUltimateCustomerOrderReferencedDocument", []);
         $addRefDoc = $addRefDoc[$this->documentUltimateCustomerOrderReferencedDocumentPointer];
 
-        $issuerassignedid = $this->getInvoiceValueByPathFrom($addRefDoc, "getIssuerAssignedID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($addRefDoc, "getIssuerAssignedID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPathFrom($addRefDoc, "getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPathFrom($addRefDoc, "getFormattedIssueDateTime.getDateTimeString.getFormat", "")
@@ -2575,10 +2253,9 @@
 
     /**
-     * Details of the ultimate customer order
-     *
-     * @param  array|null $refdocs
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentUltimateCustomerOrderReferencedDocuments(?array $refdocs): ZugferdDocumentReader
+     * Details of the ultimate customer order.
+     *
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentUltimateCustomerOrderReferencedDocuments(/*?array $refdocs*/): ZugferdDocumentReader
     {
         // TODO: Implemente method getDocumentUltimateCustomerOrderReferencedDocuments
@@ -2587,9 +2264,7 @@
 
     /**
-     * Get detailed information on the actual delivery
-     *
-     * @param  DateTime|null $date
-     * Actual delivery time. In Germany, the delivery and service date is a mandatory requirement on invoices.
-     * This can be done here or at item level.
+     * Get detailed information on the actual delivery.
+     *
+     * @param  DateTime|null $date __BT-72, From BASIC WL__ Actual delivery time
      * @return ZugferdDocumentReader
      */
@@ -2605,16 +2280,14 @@
 
     /**
-     * Get detailed information on the associated shipping notification
-     *
-     * @param  string|null   $issuerassignedid
-     * Shipping notification reference
-     * @param  DateTime|null $issueddate
-     * Shipping notification date
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentDespatchAdviceReferencedDocument(?string &$issuerassignedid, ?DateTime &$issueddate): ZugferdDocumentReader
-    {
-        $issuerassignedid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getDespatchAdviceReferencedDocument.getIssuerAssignedID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+     * Get detailed information on the associated shipping notification.
+     *
+     * @param  string|null   $issuerAssignedId __BT-16, From BASIC WL__ Shipping notification reference
+     * @param  DateTime|null $issueDate        __BT-X-200, From EXTENDED__ Shipping notification date
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentDespatchAdviceReferencedDocument(?string &$issuerAssignedId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $issuerAssignedId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getDespatchAdviceReferencedDocument.getIssuerAssignedID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getDespatchAdviceReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getDespatchAdviceReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", "")
@@ -2625,16 +2298,14 @@
 
     /**
-     * Get detailed information on the associated goods receipt notification
-     *
-     * @param  string|null   $issuerassignedid
-     * An identifier for a referenced goods receipt notification (Goods receipt number)
-     * @param  DateTime|null $issueddate
-     * Goods receipt date
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentReceivingAdviceReferencedDocument(?string &$issuerassignedid, ?DateTime &$issueddate): ZugferdDocumentReader
-    {
-        $issuerassignedid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getReceivingAdviceReferencedDocument.getIssuerAssignedID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+     * Get detailed information on the associated goods receipt notification.
+     *
+     * @param  string|null   $issuerAssignedId __BT-15, From EN 16931__ An identifier for a referenced goods receipt notification (Goods receipt number)
+     * @param  DateTime|null $issueDate        __BT-X-201, From EXTENDED__ Goods receipt date
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentReceivingAdviceReferencedDocument(?string &$issuerAssignedId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $issuerAssignedId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getReceivingAdviceReferencedDocument.getIssuerAssignedID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getReceivingAdviceReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getReceivingAdviceReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", "")
@@ -2645,19 +2316,14 @@
 
     /**
-     * Get detailed information on the associated delivery note
-     *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string|null   $issuerassignedid
-     * Delivery receipt number
-     * @param  DateTime|null $issueddate
-     * Delivery receipt date
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentDeliveryNoteReferencedDocument(?string &$issuerassignedid, ?DateTime &$issueddate): ZugferdDocumentReader
-    {
-        $issuerassignedid = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getDeliveryNoteReferencedDocument.getIssuerAssignedID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+     * Get detailed information on the associated delivery note.
+     *
+     * @param  string        $issuerAssignedId __BT-X-202, From EXTENDED__ Delivery slip number
+     * @param  DateTime|null $issueDate        __BT-X-203, From EXTENDED__ Delivery slip date
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentDeliveryNoteReferencedDocument(?string &$issuerAssignedId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $issuerAssignedId = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getDeliveryNoteReferencedDocument.getIssuerAssignedID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getDeliveryNoteReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeDelivery.getDeliveryNoteReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", "")
@@ -2668,89 +2334,64 @@
 
     /**
-     * Seek to the first payment means of the document.
-     * Returns true if a first payment mean is available, otherwise false
+     * Seek to the first payment means of the document. Returns true if a first payment mean is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentPaymentMeans.
+     *
+     * @return boolean
+     */
+    public function firstGetDocumentPaymentMeans(): bool
+    {
+        $this->documentPaymentMeansPointer = 0;
+
+        $paymentMeans = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementPaymentMeans", []));
+
+        return isset($paymentMeans[$this->documentPaymentMeansPointer]);
+    }
+
+    /**
+     * Seek to the next payment means of the document. Returns true if another payment mean is available, otherwise false
      * You may use this together with ZugferdDocumentReader::getDocumentPaymentMeans
      *
      * @return boolean
      */
-    public function firstGetDocumentPaymentMeans(): bool
-    {
-        $this->documentPaymentMeansPointer = 0;
+    public function nextGetDocumentPaymentMeans(): bool
+    {
+        $this->documentPaymentMeansPointer++;
+
         $paymentMeans = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementPaymentMeans", []));
+
         return isset($paymentMeans[$this->documentPaymentMeansPointer]);
     }
 
     /**
-     * Seek to the next payment means of the document
-     * Returns true if another payment mean is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentPaymentMeans
-     *
-     * @return boolean
-     */
-    public function nextGetDocumentPaymentMeans(): bool
-    {
-        $this->documentPaymentMeansPointer++;
-        $paymentMeans = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementPaymentMeans", []));
-        return isset($paymentMeans[$this->documentPaymentMeansPointer]);
-    }
-
-    /**
-     * Get detailed information on the payment method
-     *
-     * __Notes__
-     *  - The SpecifiedTradeSettlementPaymentMeans element can only be repeated for each bank account if
-     *    several bank accounts are to be transferred for transfers. The code for the payment method in the Typecode
-     *    element must therefore not differ in the repetitions. The elements ApplicableTradeSettlementFinancialCard
-     *    and PayerPartyDebtorFinancialAccount must not be specified for bank transfers.
-     *
-     * @param  string|null $typecode
-     * The expected or used means of payment, expressed as a code. The entries from the UNTDID 4461 code list
-     * must be used. A distinction should be made between SEPA and non-SEPA payments as well as between credit
-     * payments, direct debits, card payments and other means of payment In particular, the following codes can
-     * be used:
-     *  - 10: cash
-     *  - 20: check
-     *  - 30: transfer
-     *  - 42: Payment to bank account
-     *  - 48: Card payment
-     *  - 49: direct debit
-     *  - 57: Standing order
-     *  - 58: SEPA Credit Transfer
-     *  - 59: SEPA Direct Debit
-     *  - 97: Report
-     * @param  string|null $information
-     * The expected or used means of payment expressed in text form, e.g. cash, bank transfer, direct debit,
-     * credit card, etc.
-     * @param  string|null $cardType
-     * The type of the card
-     * @param  string|null $cardId
-     * The primary account number (PAN) to which the card used for payment belongs. In accordance with card
-     * payment security standards, an invoice should never contain a full payment card master account number.
-     * The following specification of the PCI Security Standards Council currently applies: The first 6 and
-     * last 4 digits at most are to be displayed
-     * @param  string|null $cardHolderName
-     * Name of the payment card holder
-     * @param  string|null $buyerIban
-     * Direct debit: ID of the account to be debited
-     * @param  string|null $payeeIban
-     * Transfer: A unique identifier for the financial account held with a payment service provider to which
-     * the payment should be made, e.g. Use an IBAN (in the case of a SEPA payment) for a national ProprietaryID
-     * account number
-     * @param  string|null $payeeAccountName
-     * The name of the payment account held with a payment service provider to which the payment should be made.
-     * Information only required if different from the name of the payee / seller
-     * @param  string|null $payeePropId
-     * National account number (not for SEPA)
-     * @param  string|null $payeeBic
-     * Seller's banking institution, An identifier for the payment service provider with whom the payment account
-     * is managed, such as the BIC or a national bank code, if required. No identification scheme is to be used.
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPaymentMeans(?string &$typecode, ?string &$information, ?string &$cardType, ?string &$cardId, ?string &$cardHolderName, ?string &$buyerIban, ?string &$payeeIban, ?string &$payeeAccountName, ?string &$payeePropId, ?string &$payeeBic): ZugferdDocumentReader
+     * Get detailed information on the payment method.
+     *
+     * @param  string      $typeCode         __BT-81, From BASIC WL__ The expected or used means of payment, expressed as a code. The entries from the UNTDID 4461 code list must be used. A distinction should be made between SEPA and non-SEPA payments as well as between credit payments, direct debits, card payments and other means of payment In particular, the following codes can be used:
+     *                                       - 10: cash
+     *                                       - 20: check
+     *                                       - 30: transfer
+     *                                       - 42: Payment to bank account
+     *                                       - 48: Card payment
+     *                                       - 49: direct debit
+     *                                       - 57: Standing order
+     *                                       - 58: SEPA Credit Transfer
+     *                                       - 59: SEPA Direct Debit
+     *                                       - 97: Report
+     * @param  string|null $information      __BT-82, From EN 16931__ The expected or used means of payment expressed in text form, e.g. cash, bank transfer, direct debit, credit card, etc.
+     * @param  string|null $cardType         __BT-, From __ The type of the card
+     * @param  string|null $cardId           __BT-87, From EN 16931__ The primary account number (PAN) to which the card used for payment belongs. In accordance with card payment security standards, an invoice should never contain a full payment card master account number. The following specification of the PCI Security Standards Council currently applies: The first 6 and last 4 digits at most are to be displayed
+     * @param  string|null $cardHolderName   __BT-88, From EN 16931__ Name of the payment card holder
+     * @param  string|null $buyerIban        __BT-91, From BASIC WL__ The account to be debited by the direct debit
+     * @param  string|null $payeeIban        __BT-84, From BASIC WL__ A unique identifier for the financial account held with a payment service provider to which the payment should be made
+     * @param  string|null $payeeAccountName __BT-85, From BASIC WL__ The name of the payment account held with a payment service provider to which the payment should be made
+     * @param  string|null $payeePropId      __BT-84-0, From BASIC WL__ National account number (not for SEPA)
+     * @param  string|null $payeeBic         __BT-86, From EN 16931__ An identifier for the payment service provider with which the payment account is held
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPaymentMeans(?string &$typeCode, ?string &$information, ?string &$cardType, ?string &$cardId, ?string &$cardHolderName, ?string &$buyerIban, ?string &$payeeIban, ?string &$payeeAccountName, ?string &$payeePropId, ?string &$payeeBic): ZugferdDocumentReader
     {
         $paymentMeans = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementPaymentMeans", []));
         $paymentMeans = $paymentMeans[$this->documentPaymentMeansPointer];
 
-        $typecode = $this->getInvoiceValueByPathFrom($paymentMeans, "getTypeCode.value", "");
+        $typeCode = $this->getInvoiceValueByPathFrom($paymentMeans, "getTypeCode.value", "");
         $information = $this->getInvoiceValueByPathFrom($paymentMeans, "getInformation.value", "");
         $cardType = $this->getInvoiceValueByPathFrom($paymentMeans, "getApplicableTradeSettlementFinancialCard.getID.getSchemeID", "");
@@ -2767,7 +2408,6 @@
 
     /**
-     * Seek to the first document tax
-     * Returns true if a first tax (at document level) is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentTax
+     * Seek to the first document tax. Returns true if a first tax (at document level) is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentTax.
      *
      * @return boolean
@@ -2776,12 +2416,13 @@
     {
         $this->documentTaxPointer = 0;
+
         $taxes = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getApplicableTradeTax", []));
+
         return isset($taxes[$this->documentTaxPointer]);
     }
 
     /**
-     * Seek to the next document tax
-     * Returns true if another tax (at document level) is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentTax
+     * Seek to the next document tax. Returns true if another tax (at document level) is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentTax.
      *
      * @return boolean
@@ -2790,86 +2431,24 @@
     {
         $this->documentTaxPointer++;
+
         $taxes = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getApplicableTradeTax", []));
+
         return isset($taxes[$this->documentTaxPointer]);
     }
 
     /**
-     * Get current VAT breakdown (at document level)
-     *
-     * @param  string|null   $categoryCode
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  string|null   $typeCode
-     * Coded description of a sales tax category. Note: Fixed value = "VAT"
-     * @param  float|null    $basisAmount
-     * Tax base amount, Each sales tax breakdown must show a category-specific tax base amount.
-     * @param  float|null    $calculatedAmount
-     * The total amount to be paid for the relevant VAT category. Note: Calculated by multiplying
-     * the amount to be taxed according to the sales tax category by the sales tax rate applicable
-     * for the sales tax category concerned
-     * @param  float|null    $rateApplicablePercent
-     * The sales tax rate, expressed as the percentage applicable to the sales tax category in
-     * question. Note: The code of the sales tax category and the category-specific sales tax rate
-     * must correspond to one another. The value to be given is the percentage. For example, the
-     * value 20 is given for 20% (and not 0.2)
-     * @param  string|null   $exemptionReason
-     * Reason for tax exemption (free text)
-     * @param  string|null   $exemptionReasonCode
-     * Reason given in code form for the exemption of the amount from VAT. Note: Code list issued
-     * and maintained by the Connecting Europe Facility.
-     * @param  float|null    $lineTotalBasisAmount
-     * Tax rate goods amount
-     * @param  float|null    $allowanceChargeBasisAmount
-     * Total amount of surcharges and deductions of the tax rate at document level
-     * @param  DateTime|null $taxPointDate
-     * Specification of a date, in accordance with the sales tax guideline, on which the sales tax
-     * for the seller and for the buyer becomes relevant for accounting, insofar as this date can be
-     * determined and differs from the invoice date
-     * Note: The tax collection date for VAT purposes is usually the date the goods were delivered or
-     * the service was completed (the base tax date). There are a few variations. For further information,
-     * please refer to Article 226 (7) of Council Directive 2006/112 / EC. This element is required
-     * if the date set for the sales tax return differs from the invoice date. Both the buyer and the
-     * seller should use the delivery date for VAT returns, if provided by the seller.
-     * This is not used in Germany. Instead, the delivery and service date must be specified.
-     * @param  string|null   $dueDateTypeCode
-     * The code for the date on which sales tax becomes relevant for the seller and the buyer.
-     * The code must distinguish between the following entries from UNTDID 2005:
-     *  - date of issue of the invoice document
-     *  - actual delivery date
-     *  - Date of payment.
-     *
-     * The VAT Collection Date Code is used when the VAT Collection Date is not known for VAT purposes
-     * when the invoice is issued.
-     *
-     * The semantic values cited in the standard, which are represented by the values 3, 35, 432 in
-     * UNTDID2005, are mapped to the following values of UNTDID2475, which is the relevant code list
-     * supported by CII 16B:
-     *  - 5: date of issue of the invoice
-     *  - 29: Delivery date, current status
-     *  - 72: Paid to date
-     *
-     * In Germany, the date of delivery and service is decisive.
-     * @return ZugferdDocumentReader
+     * Get current VAT breakdown (at document level).
+     *
+     * @param string|null   $categoryCode               __BT-118, From BASIC WL__ Coded description of a sales tax category
+     * @param string|null   $typeCode                   __BT-118-0, From BASIC WL__ Coded description of a sales tax category. Note: Fixed value = "VAT"
+     * @param float|null    $basisAmount                __BT-116, From BASIC WL__ Tax base amount, Each sales tax breakdown must show a category-specific tax base amount.
+     * @param float|null    $calculatedAmount           __BT-117, From BASIC WL__ The total amount to be paid for the relevant VAT category. Note: Calculated by multiplying the amount to be taxed according to the sales tax category by the sales tax rate applicable for the sales tax category concerned
+     * @param float|null    $rateApplicablePercent      __BT-119, From BASIC WL__ The sales tax rate, expressed as the percentage applicable to the sales tax category in question. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
+     * @param string|null   $exemptionReason            __BT-120, From BASIC WL__ Reason for tax exemption (free text)
+     * @param string|null   $exemptionReasonCode        __BT-121, From BASIC WL__ Reason given in code form for the exemption of the amount from VAT. Note: Code list issued and maintained by the Connecting Europe Facility.
+     * @param float|null    $lineTotalBasisAmount       __BT-X-262, From EXTENDED__ An amount used as the basis for calculating sales tax, duty or customs duty
+     * @param float|null    $allowanceChargeBasisAmount __BT-X-263, From EXTENDED__ Total amount Additions and deductions to the tax rate at document level
+     * @param DateTime|null $taxPointDate               __BT-7-00, From EN 16931__ Date on which tax is due. This is not used in Germany. Instead, the delivery and service date must be specified.
+     * @param string|null   $dueDateTypeCode            __BT-8, From BASIC WL__ The code for the date on which the VAT becomes relevant for settlement for the seller and for the buyer
      */
     public function getDocumentTax(?string &$categoryCode, ?string &$typeCode, ?float &$basisAmount, ?float &$calculatedAmount, ?float &$rateApplicablePercent, ?string &$exemptionReason, ?string &$exemptionReasonCode, ?float &$lineTotalBasisAmount, ?float &$allowanceChargeBasisAmount, ?DateTime &$taxPointDate, ?string &$dueDateTypeCode): ZugferdDocumentReader
@@ -2897,15 +2476,13 @@
 
     /**
-     * Get detailed information on the billing period
-     *
-     * @param  DateTime|null $startdate
-     * Start of the billing period
-     * @param  DateTime|null $endDate
-     * End of the billing period
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentBillingPeriod(?DateTime &$startdate, ?DateTime &$endDate): ZugferdDocumentReader
-    {
-        $startdate = $this->getObjectHelper()->toDateTime(
+     * Get detailed information on the billing period.
+     *
+     * @param  DateTime|null $startDate __BT-73, From BASIC WL__ Start of the billing period
+     * @param  DateTime|null $endDate   __BT-74, From BASIC WL__ End of the billing period
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentBillingPeriod(?DateTime &$startDate, ?DateTime &$endDate): ZugferdDocumentReader
+    {
+        $startDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getBillingSpecifiedPeriod.getStartDateTime.getDateTimeString.value", null),
             $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getBillingSpecifiedPeriod.getStartDateTime.getDateTimeString.getFormat", null)
@@ -2920,6 +2497,5 @@
 
     /**
-     * Get information about surcharges and charges applicable to the bill as a whole, Deductions, such as for
-     * withheld taxes may also be specified in this group
+     * Get information about surcharges and charges applicable to the bill as a whole, Deductions, such as for withheld taxes may also be specified in this group.
      *
      * @param  array|null $allowanceCharge
@@ -2963,6 +2539,6 @@
 
     /**
-     * Seek to the first documents allowance charge. Returns true if the first position is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentAllowanceCharge
+     * Seek to the first documents allowance charge. Returns true if the first position is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentAllowanceCharge.
      *
      * @return boolean
@@ -2971,11 +2547,13 @@
     {
         $this->documentAllowanceChargePointer = 0;
+
         $allowanceCharge = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeAllowanceCharge", []);
+
         return isset($allowanceCharge[$this->documentAllowanceChargePointer]);
     }
 
     /**
-     * Seek to the next documents allowance charge. Returns true if a other position is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentAllowanceCharge
+     * Seek to the next documents allowance charge. Returns true if a other position is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentAllowanceCharge.
      *
      * @return boolean
@@ -2984,90 +2562,25 @@
     {
         $this->documentAllowanceChargePointer++;
+
         $allowanceCharge = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeAllowanceCharge", []);
+
         return isset($allowanceCharge[$this->documentAllowanceChargePointer]);
     }
 
     /**
-     * Get information about the currently seeked surcharges and charges applicable to the
-     * bill as a whole, Deductions, such as for withheld taxes may also be specified in this group
-     *
-     * @param  float|null   $actualAmount
-     * Amount of the surcharge or discount at document level
-     * @param  boolean|null $isCharge
-     * Switch that indicates whether the following data refer to an allowance or a discount, true means that
-     * this an charge
-     * @param  string|null  $taxCategoryCode
-     * A coded indication of which sales tax category applies to the surcharge or deduction at document level
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta/Melilla)
-     * @param  string|null  $taxTypeCode
-     * Code for the VAT category of the surcharge or charge at document level. Note: Fixed value = "VAT"
-     * @param  float|null   $rateApplicablePercent
-     * VAT rate for the surcharge or discount on document level. Note: The code of the sales tax category
-     * and the category-specific sales tax rate must correspond to one another. The value to be given is
-     * the percentage. For example, the value 20 is given for 20% (and not 0.2)
-     * @param  float|null   $sequence
-     * Calculation order
-     * @param  float|null   $calculationPercent
-     * Percentage surcharge or discount at document level
-     * @param  float|null   $basisAmount
-     * The base amount that may be used in conjunction with the percentage of the surcharge or discount
-     * at document level to calculate the amount of the discount at document level
-     * @param  float|null   $basisQuantity
-     * Basismenge des Rabatts
-     * @param  string|null  $basisQuantityUnitCode
-     * Einheit der Preisbasismenge
-     *  - Codeliste: Rec. NÂ°20 VollstÃ€ndige Liste, In Recommendation NÂ°20 Intro 2.a ist beschrieben, dass
-     *    beide Listen kombiniert anzuwenden sind.
-     *  - Codeliste: Rec. NÂ°21 VollstÃ€ndige Liste, In Recommendation NÂ°20 Intro 2.a ist beschrieben, dass
-     *    beide Listen kombiniert anzuwenden sind.
-     * @param  string|null  $reasonCode
-     * The reason given as a code for the surcharge or discount at document level. Note: Use entries from
-     * the UNTDID 5189 code list. The code of the reason for the surcharge or discount at document level
-     * and the reason for the surcharge or discount at document level must correspond to each other
-     *
-     * Code list: UNTDID 7161 Complete list, code list: UNTDID 5189 Restricted
-     * Include PEPPOL subset:
-     *  - 41 - Bonus for works ahead of schedule
-     *  - 42 - Other bonus
-     *  - 60 - Manufacturerâs consumer discount
-     *  - 62 - Due to military status
-     *  - 63 - Due to work accident
-     *  - 64 - Special agreement
-     *  - 65 - Production error discount
-     *  - 66 - New outlet discount
-     *  - 67 - Sample discount
-     *  - 68 - End-of-range discount
-     *  - 70 - Incoterm discount
-     *  - 71 - Point of sales threshold allowance
-     *  - 88 - Material surcharge/deduction
-     *  - 95 - Discount
-     *  - 100 - Special rebate
-     *  - 102 - Fixed long term
-     *  - 103 - Temporary
-     *  - 104 - Standard
-     *  - 105 - Yearly turnover
-     * @param  string|null  $reason
-     * The reason given in text form for the surcharge or discount at document level
+     * Get information about the currently seeked surcharges and charges applicable to the bill as a whole, Deductions, such as for withheld taxes may also be specified in this group.
+     *
+     * @param  float|null   $actualAmount          __BT-92/BT-99, From BASIC WL__ Amount of the surcharge or discount at document level
+     * @param  boolean|null $isCharge              __BT-20-1/BT-21-1, From BASIC WL__ Switch that indicates whether the following data refer to an surcharge or a discount, true means that this an charge
+     * @param  string|null  $taxCategoryCode       __BT-95/BT-102, From BASIC WL__ A coded indication of which sales tax category applies to the surcharge or deduction at document level
+     * @param  string|null  $taxTypeCode           __BT-95-0/BT-102-0, From BASIC WL__ Code for the VAT category of the surcharge or charge at document level. Note: Fixed value = "VAT"
+     * @param  float|null   $rateApplicablePercent __BT-96/BT-103, From BASIC WL__ VAT rate for the surcharge or discount on document level. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
+     * @param  float|null   $sequence              __BT-X-265, From EXTENDED__ Calculation order
+     * @param  float|null   $calculationPercent    __BT-94/BT-101, From BASIC WL__ Percentage surcharge or discount at document level
+     * @param  float|null   $basisAmount           __BT-93/BT-100, From BASIC WL__ The base amount that may be used in conjunction with the percentage of the surcharge or discount at document level to calculate the amount of the discount at document level
+     * @param  float|null   $basisQuantity         __BT-X-266, From EXTENDED__ Base quantity of the discount
+     * @param  string|null  $basisQuantityUnitCode __BT-X-267, From EXTENDED__ Unit of the price base quantity
+     * @param  string|null  $reasonCode            __BT-98/BT-105, From BASIC WL__ The reason given as a code for the surcharge or discount at document level. Note: Use entries from the UNTDID 5189 code list. The code of the reason for the surcharge or discount at document level and the reason for the surcharge or discount at document level must correspond to each other
+     * @param  string|null  $reason                __BT-97/BT-104, From BASIC WL__ The reason given in text form for the surcharge or discount at document level
      * @return ZugferdDocumentReader
      */
@@ -3094,7 +2607,6 @@
 
     /**
-     * Seek to the first documents service charge position
-     * Returns true if the first position is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentLogisticsServiceCharge
+     * Seek to the first documents service charge position. Returns true if the first position is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentLogisticsServiceCharge.
      *
      * @return boolean
@@ -3103,4 +2615,5 @@
     {
         $this->documentLogisticServiceChargePointer = 0;
+
         $serviceCharge = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedLogisticsServiceCharge", []);
 
@@ -3109,7 +2622,6 @@
 
     /**
-     * Seek to the next documents service charge position
-     * Returns true if a other position is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentLogisticsServiceCharge
+     * Seek to the next documents service charge position. Returns true if a other position is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentLogisticsServiceCharge.
      *
      * @return boolean
@@ -3118,4 +2630,5 @@
     {
         $this->documentLogisticServiceChargePointer++;
+
         $serviceCharge = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedLogisticsServiceCharge", []);
 
@@ -3124,44 +2637,14 @@
 
     /**
-     * Get currently seeked logistical service fees (On document level)
-     *
-     * @param  string|null $description
-     * Identification of the service fee
-     * @param  float|null  $appliedAmount
-     * Amount of the service fee
-     * @param  array|null  $taxTypeCodes
-     * Coded description of a sales tax category. Note: Fixed value = "VAT"
-     * @param  array|null  $taxCategoryCodes
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  array|null  $rateApplicablePercents
-     * The sales tax rate, expressed as the percentage applicable to the sales tax category in
-     * question. Note: The code of the sales tax category and the category-specific sales tax rate
-     * must correspond to one another. The value to be given is the percentage. For example, the
-     * value 20 is given for 20% (and not 0.2)
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentLogisticsServiceCharge(?string &$description, ?float &$appliedAmount, ?array &$taxTypeCodes = null, ?array &$taxCategoryCodes = null, ?array &$rateApplicablePercents = null): ZugferdDocumentReader
+     * Get currently seeked logistical service fees (On document level).
+     *
+     * @param  string|null $description            __BT-X-271, From EXTENDED__ Identification of the service fee
+     * @param  float|null  $appliedAmount          __BT-X-272, From EXTENDED__ Amount of the service fee
+     * @param  array|null  $taxTypeCodes           __BT-X-273-0, From EXTENDED__ Code of the Tax type. Note: Fixed value = "VAT"
+     * @param  array|null  $taxCategoryCodes       __BT-X-273, From EXTENDED__ Code of the VAT category
+     * @param  array|null  $rateApplicablePercents __BT-X-274, From EXTENDED__ The sales tax rate, expressed as the percentage applicable to the sales tax category in question. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentLogisticsServiceCharge(?string &$description, ?float &$appliedAmount, ?array &$taxTypeCodes, ?array &$taxCategoryCodes, ?array &$rateApplicablePercents): ZugferdDocumentReader
     {
         $serviceCharge = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedLogisticsServiceCharge", []);
@@ -3194,5 +2677,5 @@
 
     /**
-     * Get all documents payment terms
+     * Get all documents payment terms.
      *
      * @param  array|null $paymentTerms
@@ -3221,7 +2704,6 @@
 
     /**
-     * Seek to the first documents payment terms position
-     * Returns true if the first position is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentPaymentTerm
+     * Seek to the first documents payment terms position. Returns true if the first position is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentPaymentTerm.
      *
      * @return boolean
@@ -3230,12 +2712,13 @@
     {
         $this->documentPaymentTermsPointer = 0;
+
         $paymentTerms = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradePaymentTerms", []));
+
         return isset($paymentTerms[$this->documentPaymentTermsPointer]);
     }
 
     /**
-     * Seek to the next documents payment terms position
-     * Returns true if a other position is available, otherwise false
-     * You may use this together with ZugferdDocumentReader::getDocumentPaymentTerm
+     * Seek to the next documents payment terms position. Returns true if a other position is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentPaymentTerm.
      *
      * @return boolean
@@ -3244,23 +2727,16 @@
     {
         $this->documentPaymentTermsPointer++;
+
         $paymentTerms = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradePaymentTerms", []));
+
         return isset($paymentTerms[$this->documentPaymentTermsPointer]);
     }
 
     /**
-     * Get currently seeked payment term
-     * This controlled by firstDocumentPaymentTerms and nextDocumentPaymentTerms methods
-     *
-     * @param  string|null   $description
-     * A text description of the payment terms that apply to the payment amount due (including a
-     * description of possible penalties). Note: This element can contain multiple lines and
-     * multiple conditions.
-     * @param  DateTime|null $dueDate
-     * The date by which payment is due Note: The payment due date reflects the net payment due
-     * date. In the case of partial payments, this indicates the first due date of a net payment.
-     * The corresponding description of more complex payment terms can be given in BT-20.
-     * @param  string|null   $directDebitMandateID
-     * Unique identifier assigned by the payee to reference the direct debit authorization.
-     * __Note:__ Used to inform the buyer in advance about a SEPA direct debit. __Synonym:__ mandate reference for SEPA
+     * Get currently seeked payment term.
+     *
+     * @param  string|null   $description          __BT-20, From _BASIC WL__ A text description of the payment terms that apply to the payment amount due (including a description of possible penalties). Note: This element can contain multiple lines and multiple conditions.
+     * @param  DateTime|null $dueDate              __BT-9, From BASIC WL__ The date by which payment is due Note: The payment due date reflects the net payment due date. In the case of partial payments, this indicates the first due date of a net payment. The corresponding description of more complex payment terms can be given in BT-20.
+     * @param  string|null   $directDebitMandateID __BT-89, From BASIC WL__ Unique identifier assigned by the payee to reference the direct debit authorization.
      * @return ZugferdDocumentReader
      */
@@ -3281,18 +2757,12 @@
 
     /**
-     * Get detailed information on payment discounts
-     *
-     * @param  float|null    $calculationPercent
-     * Percentage of the down payment
-     * @param  DateTime|null $basisDateTime
-     * Due date reference date
-     * @param  float|null    $basisPeriodMeasureValue
-     * Due period
-     * @param  string|null   $basisPeriodMeasureUnitCode
-     * Due period, unit
-     * @param  float|null    $basisAmount
-     * Base amount of the down payment
-     * @param  float|null    $actualDiscountAmount
-     * Amount of the down payment
+     * Get detailed information on payment discounts.
+     *
+     * @param  float|null    $calculationPercent         __BT-X-286, From EXTENDED__ Percentage of the down payment
+     * @param  DateTime|null $basisDateTime              __BT-X-282, From EXTENDED__ Due date reference date
+     * @param  float|null    $basisPeriodMeasureValue    __BT-X-284, From EXTENDED__ Maturity period (basis)
+     * @param  string|null   $basisPeriodMeasureUnitCode __BT-X-284, From EXTENDED__ Maturity period (unit)
+     * @param  float|null    $basisAmount                __BT-X-284, From EXTENDED__ Base amount of the payment discount
+     * @param  float|null    $actualDiscountAmount       __BT-X-287, From EXTENDED__ Amount of the payment discount
      * @return ZugferdDocumentReader
      */
@@ -3316,7 +2786,122 @@
 
     /**
-     * Seek to the first document position
-     * Returns true if the first position is available, otherwise false
-     * You may use it together with getDocumentPositionGenerals
+     * Get detailed information on payment penalties.
+     *
+     * @param  float|null    $calculationPercent         __BT-X-280, From EXTENDED__ Percentage of the payment surcharge
+     * @param  DateTime|null $basisDateTime              __BT-X-276, From EXTENDED__ Due date reference date
+     * @param  float|null    $basisPeriodMeasureValue    __BT-X-277, From EXTENDED__ Maturity period (basis)
+     * @param  string|null   $basisPeriodMeasureUnitCode __BT-X-277, From EXTENDED__ Maturity period (unit)
+     * @param  float|null    $basisAmount                __BT-X-279, From EXTENDED__ Basic amount of the payment surcharge
+     * @param  float|null    $actualPenaltyAmount        __BT-X-281, From EXTENDED__ Amount of the payment surcharge
+     * @return ZugferdDocumentReader
+     */
+    public function getPenaltyTermsFromPaymentTerm(?float &$calculationPercent, ?DateTime &$basisDateTime, ?float &$basisPeriodMeasureValue, ?string &$basisPeriodMeasureUnitCode, ?float &$basisAmount, ?float &$actualPenaltyAmount): ZugferdDocumentReader
+    {
+        $paymentTerms = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradePaymentTerms", []));
+        $paymentTerms = $paymentTerms[$this->documentPaymentTermsPointer];
+
+        $calculationPercent = $this->getInvoiceValueByPathFrom($paymentTerms, "getApplicableTradePaymentPenaltyTerms.getCalculationPercent.value", 0.0);
+        $basisDateTime = $this->getObjectHelper()->toDateTime(
+            $this->getObjectHelper()->tryCallByPathAndReturn($paymentTerms, "getApplicableTradePaymentPenaltyTerms.getBasisDateTime.getDateTimeString.value"),
+            $this->getObjectHelper()->tryCallByPathAndReturn($paymentTerms, "getApplicableTradePaymentPenaltyTerms.getBasisDateTime.getDateTimeString.getFormat")
+        );
+        $basisPeriodMeasureValue = $this->getInvoiceValueByPathFrom($paymentTerms, "getApplicableTradePaymentPenaltyTerms.getBasisPeriodMeasure.value", 0.0);
+        $basisPeriodMeasureUnitCode = $this->getInvoiceValueByPathFrom($paymentTerms, "getApplicableTradePaymentPenaltyTerms.getBasisPeriodMeasure.getUnitCode", "");
+        $basisAmount = $this->getInvoiceValueByPathFrom($paymentTerms, "getApplicableTradePaymentPenaltyTerms.getBasisAmount.value", 0.0);
+        $actualPenaltyAmount = $this->getInvoiceValueByPathFrom($paymentTerms, "getApplicableTradePaymentPenaltyTerms.getActualPenaltyAmount.value", 0.0);
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first trade accounting account of the document. Returns true if a first account is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentSellerContact.
+     *
+     * @return boolean
+     */
+    public function firstDocumentReceivableSpecifiedTradeAccountingAccount(): bool
+    {
+        $this->documentTradeAccountingAccountPointer = 0;
+
+        $acccounts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getReceivableSpecifiedTradeAccountingAccount", []));
+
+        return isset($acccounts[$this->documentTradeAccountingAccountPointer]);
+    }
+
+    /**
+     * Seek to the next trade accounting account of the document. Returns true if another account is available, otherwise false.
+     * You may use this together with ZugferdDocumentReader::getDocumentSellerContact.
+     *
+     * @return boolean
+     */
+    public function nextDocumentReceivableSpecifiedTradeAccountingAccount(): bool
+    {
+        $this->documentTradeAccountingAccountPointer++;
+
+        $acccounts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getReceivableSpecifiedTradeAccountingAccount", []));
+
+        return isset($acccounts[$this->documentTradeAccountingAccountPointer]);
+    }
+
+    /**
+     * Get information on the booking reference (on document level).
+     *
+     * @param  null|string &$id       __BT-19, From BASIC WL__ Posting reference of the byuer. If required, this reference shall be provided by the Buyer to the Seller prior to the issuing of the Invoice.
+     * @param  null|string &$typeCode __BT-X-290, From EXTENDED__ Type of the posting reference
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentReceivableSpecifiedTradeAccountingAccount(?string &$id, ?string &$typeCode): ZugferdDocumentReader
+    {
+        $acccounts = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getReceivableSpecifiedTradeAccountingAccount", []));
+        $acccounts = $acccounts[$this->documentTradeAccountingAccountPointer];
+
+        $id = $this->getInvoiceValueByPathFrom($acccounts, "getId.value", "");
+        $typeCode = $this->getInvoiceValueByPathFrom($acccounts, "getTypeCode.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Read Document money summation.
+     *
+     * @param  float|null $grandTotalAmount     __BT-112, From MINIMUM__ Total invoice amount including sales tax
+     * @param  float|null $duePayableAmount     __BT-115, From MINIMUM__ Payment amount due
+     * @param  float|null $lineTotalAmount      __BT-106, From BASIC WL__ Sum of the net amounts of all invoice items
+     * @param  float|null $chargeTotalAmount    __BT-108, From BASIC WL__ Sum of the surcharges at document level
+     * @param  float|null $allowanceTotalAmount __BT-107, From BASIC WL__ Sum of the discounts at document level
+     * @param  float|null $taxBasisTotalAmount  __BT-109, From MINIMUM__ Total invoice amount excluding sales tax
+     * @param  float|null $taxTotalAmount       __BT-110/111, From MINIMUM/BASIC WL__ if BT-6 is not null $taxTotalAmount = BT-111. Total amount of the invoice sales tax, Total tax amount in the booking currency
+     * @param  float|null $roundingAmount       __BT-114, From EN 16931__ Rounding amount
+     * @param  float|null $totalPrepaidAmount   __BT-113, From BASIC WL__ Prepayment amount
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentSummation(?float &$grandTotalAmount, ?float &$duePayableAmount, ?float &$lineTotalAmount, ?float &$chargeTotalAmount, ?float &$allowanceTotalAmount, ?float &$taxBasisTotalAmount, ?float &$taxTotalAmount, ?float &$roundingAmount, ?float &$totalPrepaidAmount): ZugferdDocumentReader
+    {
+        $invoiceCurrencyCode = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getInvoiceCurrencyCode.value", "");
+        $grandTotalAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getGrandTotalAmount.value", 0);
+        $taxBasisTotalAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getTaxBasisTotalAmount.value", 0);
+        $taxTotalAmountElement = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getTaxTotalAmount", []);
+
+        foreach ($taxTotalAmountElement as $taxTotalAmountElementItem) {
+            $taxTotalAmountCurrencyCode = $this->getObjectHelper()->tryCallAndReturn($taxTotalAmountElementItem, "getCurrencyID") ?? "";
+            if ($taxTotalAmountCurrencyCode == $invoiceCurrencyCode || $taxTotalAmountCurrencyCode == "") {
+                $taxTotalAmount = $this->getObjectHelper()->tryCallAndReturn($taxTotalAmountElementItem, "value") ?? 0;
+                break;
+            }
+        }
+
+        $duePayableAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getDuePayableAmount.value", 0);
+        $lineTotalAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getLineTotalAmount.value", 0);
+        $chargeTotalAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getChargeTotalAmount.value", 0);
+        $allowanceTotalAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getAllowanceTotalAmount.value", 0);
+        $roundingAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getRoundingAmount.value", 0);
+        $totalPrepaidAmount = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getApplicableHeaderTradeSettlement.getSpecifiedTradeSettlementHeaderMonetarySummation.getTotalPrepaidAmount.value", 0);
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first document position. Returns true if the first position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionGenerals.
      *
      * @return boolean
@@ -3331,4 +2916,5 @@
         $this->positionAllowanceChargePointer = 0;
         $this->positionAddRefDocPointer = 0;
+        $this->positionAddRefObjDocPointer = 0;
         $this->positionProductCharacteristicPointer = 0;
         $this->positionProductClassificationPointer = 0;
@@ -3336,11 +2922,11 @@
 
         $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+
         return isset($tradeLineItem[$this->positionPointer]);
     }
 
     /**
-     * Seek to the next document position
-     * Returns true if another position is available, otherwise false
-     * You may use it together with getDocumentPositionGenerals
+     * Seek to the next document position. Returns true if another position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionGenerals.
      *
      * @return boolean
@@ -3355,36 +2941,28 @@
         $this->positionAllowanceChargePointer = 0;
         $this->positionAddRefDocPointer = 0;
-
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $this->positionAddRefObjDocPointer = 0;
+        $this->positionProductCharacteristicPointer = 0;
+        $this->positionProductClassificationPointer = 0;
+        $this->positionReferencedProductPointer = 0;
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+
         return isset($tradeLineItem[$this->positionPointer]);
     }
 
     /**
-     * Get general information of the current position
-     *
-     * @param  string|null $lineid
-     * A unique identifier for the relevant item within the invoice (item number)
-     * @param  string|null $lineStatusCode
-     * Indicates whether the invoice item contains prices that must be taken into account when
-     * calculating the invoice amount, or whether it only contains information.
-     * The following code should be used: TYPE_LINE
-     * @param  string|null $lineStatusReasonCode
-     * Adds the type to specify whether the invoice line is:
-     *  - detail (normal position)
-     *  - Subtotal
-     *  - Information only
-     *
-     * If the $lineStatusCode field is used, the LineStatusReasonCode field must use the following codes:
-     *  - detail
-     *  - grouping
-     *  - information
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPositionGenerals(?string &$lineid, ?string &$lineStatusCode, ?string &$lineStatusReasonCode): ZugferdDocumentReader
-    {
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $lineid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getAssociatedDocumentLineDocument.getLineID.value", "");
+     * Get general information of the current position.
+     *
+     * @param  string      $lineId               __BT-126, From BASIC__ Identification of the invoice item
+     * @param  string|null $lineStatusCode       __BT-X-7, From EXTENDED__ Indicates whether the invoice item contains prices that must be taken into account when calculating the invoice amount or whether only information is included.
+     * @param  string|null $lineStatusReasonCode __BT-X-8, From EXTENDED__ Adds the type to specify whether the invoice line is:
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionGenerals(?string &$lineId, ?string &$lineStatusCode, ?string &$lineStatusReasonCode): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $lineId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getAssociatedDocumentLineDocument.getLineID.value", "");
         $lineStatusCode = $this->getInvoiceValueByPathFrom($tradeLineItem, "getAssociatedDocumentLineDocument.getLineStatusCode.value", "");
         $lineStatusReasonCode = $this->getInvoiceValueByPathFrom($tradeLineItem, "getAssociatedDocumentLineDocument.getLineStatusReasonCode.value", "");
@@ -3394,7 +2972,6 @@
 
     /**
-     * Seek to the first document position
-     * Returns true if the first position is available, otherwise false
-     * You may use it together with getDocumentPositionNote
+     * Seek to the first document position. Returns true if the first position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionNote.
      *
      * @return boolean
@@ -3413,7 +2990,6 @@
 
     /**
-     * Seek to the next document position
-     * Returns true if the first position is available, otherwise false
-     * You may use it together with getDocumentPositionNote
+     * Seek to the next document position. Returns true if the first position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionNote.
      *
      * @return boolean
@@ -3432,13 +3008,9 @@
 
     /**
-     * Get detailed information on the free text on the position
-     *
-     * @param  string|null $content
-     * A free text that contains unstructured information that is relevant to the invoice item
-     * @param  string|null $contentCode
-     * Text modules agreed bilaterally, which are transmitted here as code.
-     * @param  string|null $subjectCode
-     * Free text for the position (code for the type)
-     * __Codelist:__ UNTDID 4451
+     * Get detailed information on the free text on the position.
+     *
+     * @param  string      $content     __BT-127, From BASIC__ A free text that contains unstructured information that is relevant to the invoice item
+     * @param  string|null $contentCode __BT-X-9, From EXTENDED__ A code to classify the content of the free text of the invoice. The code is agreed bilaterally and must have the same meaning as BT-127.
+     * @param  string|null $subjectCode __BT-X-10, From EXTENDED__ Code for qualifying the free text for the invoice item (Codelist UNTDID 4451)
      * @return ZugferdDocumentReader
      */
@@ -3447,4 +3019,5 @@
         $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
         $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
         $tradeLineItemNote = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getAssociatedDocumentLineDocument.getIncludedNote", []));
         $tradeLineItemNote = $tradeLineItemNote[$this->positionNotePointer];
@@ -3458,22 +3031,12 @@
 
     /**
-     * Get information about the goods and services billed
-     *
-     * @param  string|null $name
-     * A name of the item (item name)
-     * @param  string|null $description
-     * A description of the item, the item description makes it possible to describe the item and its
-     * properties in more detail than is possible with the item name.
-     * @param  string|null $sellerAssignedID
-     * An identifier assigned to the item by the seller
-     * @param  string|null $buyerAssignedID
-     * An identifier assigned to the item by the buyer. The article number of the buyer is a clear,
-     * bilaterally agreed identification of the product. It can, for example, be the customer article
-     * number or the article number assigned by the manufacturer.
-     * @param  string|null $globalIDType
-     * The scheme for $globalID
-     * @param  string|null $globalID
-     * Identification of an article according to the registered scheme (Global identifier of the product,
-     * GTIN, ...)
+     * Get information about the goods and services billed.
+     *
+     * @param  string|null $name             __BT-153, From BASIC__ A name of the item (item name)
+     * @param  string|null $description      __BT-154, From EN 16931__ A description of the item, the item description makes it possible to describe the item and its properties in more detail than is possible with the item name.
+     * @param  string|null $sellerAssignedID __BT-155, From EN 16931__ An identifier assigned to the item by the seller
+     * @param  string|null $buyerAssignedID  __BT-156, From EN 16931__ An identifier assigned to the item by the buyer. The article number of the buyer is a clear, bilaterally agreed identification of the product. It can, for example, be the customer article number or the article number assigned by the manufacturer.
+     * @param  string|null $globalIDType     __BT-157-1, From BASIC__ The scheme for $globalID
+     * @param  string|null $globalID         __BT-157, From BASIC__ Identification of an article according to the registered scheme (Global identifier of the product, GTIN, ...)
      * @return ZugferdDocumentReader
      */
@@ -3494,23 +3057,289 @@
 
     /**
-     * Get details of the related buyer order position
-     *
-     * @param  string|null   $issuerassignedid
-     * An identifier issued by the buyer for a referenced order (order number)
-     * @param  string|null   $lineid
-     * An identifier for a position within an order placed by the buyer. Note: Reference is made to the order
-     * reference at the document level.
-     * @param  DateTime|null $issueddate
-     * Date of order
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPositionBuyerOrderReferencedDocument(?string &$issuerassignedid, ?string &$lineid, ?DateTime &$issueddate): ZugferdDocumentReader
-    {
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $issuerassignedid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getBuyerOrderReferencedDocument.getIssuerAssignedID.value", "");
-        $lineid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getBuyerOrderReferencedDocument.getLineID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+     * Get information about the goods and services billed (Enhanced, with Model, Brand, etc.).
+     *
+     * @param  string|null $name               __BT-153, From BASIC__ A name of the item (item name)
+     * @param  string|null $description        __BT-154, From EN 16931__ A description of the item, the item description makes it possible to describe the item and its properties in more detail than is possible with the item name.
+     * @param  string|null $sellerAssignedID   __BT-155, From EN 16931__ An identifier assigned to the item by the seller
+     * @param  string|null $buyerAssignedID    __BT-156, From EN 16931__ An identifier assigned to the item by the buyer. The article number of the buyer is a clear, bilaterally agreed identification of the product. It can, for example, be the customer article number or the article number assigned by the manufacturer.
+     * @param  string|null $globalIDType       __BT-157-1, From BASIC__ The scheme for $globalID
+     * @param  string|null $globalID           __BT-157, From BASIC__ Identification of an article according to the registered scheme (Global identifier of the product, GTIN, ...)
+     * @param  string|null $industryAssignedID __BT-X-309, From EXTENDED__ ID assigned by the industry to the contained referenced product
+     * @param  string|null $modelID            __BT-X-533, From EXTENDED__ A unique model identifier for this product
+     * @param  string|null $batchID            __BT-X-534. From EXTENDED__ Identification of the batch (lot) of the product
+     * @param  string|null $brandName          __BT-X-535. From EXTENDED__ The brand name, expressed as text, for this product
+     * @param  string|null $modelName          __BT-X-536. From EXTENDED__ Model designation of the product
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionProductDetailsExt(?string &$name, ?string &$description, ?string &$sellerAssignedID, ?string &$buyerAssignedID, ?string &$globalIDType, ?string &$globalID, ?string &$industryAssignedID, ?string &$modelID, ?string &$batchID, ?string &$brandName, ?string &$modelName): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $name = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getName.value", "");
+        $description = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getDescription.value", "");
+        $sellerAssignedID = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getSellerAssignedID.value", "");
+        $buyerAssignedID = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getBuyerAssignedID.value", "");
+        $globalIDType = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getGlobalID.getSchemeID", "");
+        $globalID = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getGlobalID.value", "");
+        $industryAssignedID = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getIndustryAssignedID.value", "");
+        $modelID = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getModelID.value", "");
+        $batchIDs = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getBatchID", "");
+        $batchID = isset($batchIDs[0]) ? $this->getObjectHelper()->tryCallAndReturn($batchIDs[0], "value") : "";
+        $brandName = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getBrandName.value", "");
+        $modelName = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getModelName.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first document position's product characteristic. Returns true if the first position propduct characteristic is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionProductCharacteristic.
+     *
+     * @return boolean
+     */
+    public function firstDocumentPositionProductCharacteristic(): bool
+    {
+        $this->positionProductCharacteristicPointer = 0;
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItemProductCharacteristic = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getApplicableProductCharacteristic", []));
+
+        return isset($tradeLineItemProductCharacteristic[$this->positionProductCharacteristicPointer]);
+    }
+
+    /**
+     * Seek to the next document position's product characteristic. Returns true if more position propduct characteristics are available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionProductCharacteristic.
+     *
+     * @return boolean
+     */
+    public function nextDocumentPositionProductCharacteristic(): bool
+    {
+        $this->positionProductCharacteristicPointer++;
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItemProductCharacteristic = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getApplicableProductCharacteristic", []));
+
+        return isset($tradeLineItemProductCharacteristic[$this->positionProductCharacteristicPointer]);
+    }
+
+    /**
+     * Get extra characteristics to the formerly added product. Contains information about the characteristics of the goods and services invoiced.
+     *
+     * @param  string      $description          __BT-160, From EN 16931__ The name of the attribute or property of the product such as "Colour"
+     * @param  string      $value                __BT-161, From EN 16931__ The value of the attribute or property of the product such as "Red"
+     * @param  string|null $typeCode             __BT-X-11, From EXTENDED__ Type of product characteristic (code). The codes must be taken from the UNTDID 6313 codelist.
+     * @param  float|null  $valueMeasure         __BT-X-12, From EXTENDED__ Value of the product property (numerical measured variable)
+     * @param  string|null $valueMeasureUnitCode __BT-X-12-0, From EXTENDED__ Unit of measurement code
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionProductCharacteristic(?string &$description, ?string &$value, ?string &$typeCode, ?float &$valueMeasure, ?string &$valueMeasureUnitCode): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItemProductCharacteristic = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getApplicableProductCharacteristic", []));
+        $tradeLineItemProductCharacteristic = $tradeLineItemProductCharacteristic[$this->positionProductCharacteristicPointer];
+
+        $description = $this->getInvoiceValueByPathFrom($tradeLineItemProductCharacteristic, "getDescription.value", "");
+        $value = $this->getInvoiceValueByPathFrom($tradeLineItemProductCharacteristic, "getValue.value", "");
+        $typeCode = $this->getInvoiceValueByPathFrom($tradeLineItemProductCharacteristic, "getTypeCode.value", "");
+        $valueMeasure = $this->getInvoiceValueByPathFrom($tradeLineItemProductCharacteristic, "getValueMeasure.value", 0.0);
+        $valueMeasureUnitCode = $this->getInvoiceValueByPathFrom($tradeLineItemProductCharacteristic, "getValueMeasure.getUnitCode", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first document position's product classification. Returns true if the first position propduct classification is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionProductClassification.
+     *
+     * @return boolean
+     */
+    public function firstDocumentPositionProductClassification(): bool
+    {
+        $this->positionProductClassificationPointer = 0;
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItemProductClassification = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getDesignatedProductClassification", []));
+
+        return isset($tradeLineItemProductClassification[$this->positionProductClassificationPointer]);
+    }
+
+    /**
+     * Seek to the next document position's product classification. Returns true if more position propduct classifications are available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionProductClassification.
+     *
+     * @return boolean
+     */
+    public function nextDocumentPositionProductClassification(): bool
+    {
+        $this->positionProductClassificationPointer++;
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItemProductClassification = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getDesignatedProductClassification", []));
+
+        return isset($tradeLineItemProductClassification[$this->positionProductClassificationPointer]);
+    }
+
+    /**
+     * Get detailed information on product classification.
+     *
+     * @param  string      $classCode     __BT-158, From EN 16931__ Item classification identifier. Classification codes are used for grouping similar items that can serve different purposes, such as public procurement (according to the Common Procurement Vocabulary ([CPV]), e-commerce (UNSPSC), etc.
+     * @param  string|null $className     __BT-X-138, From EXTENDED__ Name with which an article can be classified according to type or quality.
+     * @param  string|null $listID        __BT-158-1, From EN 16931__ The identifier for the identification scheme of the item classification identifier. The identification scheme must be selected from the entries in UNTDID 7143 [6].
+     * @param  string|null $listVersionID __BT-158-2, From EN 16931__ The version of the identification scheme
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionProductClassification(?string &$classCode, ?string &$className, ?string &$listID, ?string &$listVersionID): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItemProductClassification = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getDesignatedProductClassification", []));
+        $tradeLineItemProductClassification = $tradeLineItemProductClassification[$this->positionProductClassificationPointer];
+
+        $classCode = $this->getInvoiceValueByPathFrom($tradeLineItemProductClassification, "getClassCode.value", "");
+        $className = $this->getInvoiceValueByPathFrom($tradeLineItemProductClassification, "getClassName.value", "");
+        $listID = $this->getInvoiceValueByPathFrom($tradeLineItemProductClassification, "getClassCode.getListID", "");
+        $listVersionID = $this->getInvoiceValueByPathFrom($tradeLineItemProductClassification, "getClassCode.getListVersionID", "");
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first document position's referenced product. Returns true if the first position referenced product is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionReferencedProduct.
+     *
+     * @return boolean
+     */
+    public function firstDocumentPositionReferencedProduct(): bool
+    {
+        $this->positionReferencedProductPointer = 0;
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItemReferencedProduct = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getIncludedReferencedProduct", []));
+
+        return isset($tradeLineItemReferencedProduct[$this->positionReferencedProductPointer]);
+    }
+
+    /**
+     * Seek to the next document position's referenced product. Returns true if more position referenced products are available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionReferencedProduct.
+     *
+     * @return boolean
+     */
+    public function nextDocumentPositionReferencedProduct(): bool
+    {
+        $this->positionReferencedProductPointer++;
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItemReferencedProduct = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getIncludedReferencedProduct", []));
+
+        return isset($tradeLineItemReferencedProduct[$this->positionReferencedProductPointer]);
+    }
+
+    /**
+     * Get detailed information on included products. This information relates to the product that has just been added.
+     *
+     * @param  string      $name               __BT-X-18, From EXTENDED__ Name of the referenced product contained
+     * @param  string|null $description        __BT-X-19, From EXTENDED__ Description of the included referenced product
+     * @param  string|null $sellerAssignedID   __BT-X-16, From EXTENDED__ ID assigned by the seller of the contained referenced product
+     * @param  string|null $buyerAssignedID    __BT-X-17, From EXTENDED__ ID of the referenced product assigned by the buyer
+     * @param  array|null  $globalID           __BT-X-15, From EXTENDED__ Array of global ids of the referenced product indexed by the identification scheme.
+     * @param  float|null  $unitQuantity       __BT-X-20, From EXTENDED__ Quantity of the referenced product contained
+     * @param  string|null $unitCode           __BT-X-20-1, From EXTENDED__ Unit code of Quantity of the referenced product contained
+     * @param  string|null $industryAssignedID __BT-X-309, From EXTENDED__ ID of the referenced product contained assigned by the industry
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionReferencedProduct(?string &$name, ?string &$description, ?string &$sellerAssignedID, ?string &$buyerAssignedID, ?array &$globalID, ?float &$unitQuantity, ?string &$unitCode, ?string &$industryAssignedID): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItemReferencedProduct = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getIncludedReferencedProduct", []));
+        $tradeLineItemReferencedProduct = $tradeLineItemReferencedProduct[$this->positionReferencedProductPointer];
+
+        $name = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getName.value", "");
+        $description = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getDescription.value", "");
+        $sellerAssignedID = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getSellerAssignedID.value", "");
+        $buyerAssignedID = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getBuyerAssignedID.value", "");
+        $industryAssignedID = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getIndustryAssignedID.value", "");
+        $unitQuantity = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getUnitQuantity.value", 0);
+        $unitCode = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getUnitQuantity.getUnitCode", "");
+        $globalID = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getGlobalID", []);
+        $globalID = $this->convertToAssociativeArray($globalID, "getSchemeID", "value");
+
+        return $this;
+    }
+
+    /**
+     * Sets the detailed information on the product origin.
+     *
+     * @param  string|null $country __BT-159, From EN 16931__ The code indicating the country the goods came from. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their subdivisionsâ.
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionProductOriginTradeCountry(?string &$country): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $country = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getOriginTradeCountry.getID.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get details of a related sales order reference.
+     *
+     * @param  string|null   $issuerAssignedId __BT-X-537, From EXTENDED__ Document number of a sales order reference
+     * @param  string|null   $lineId           __BT-X-538, From EXTENDED__ An identifier for a position within a sales order.
+     * @param  DateTime|null $issueDate        __BT-X-539, From EXTENDED__ Date of sales order
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionSellerOrderReferencedDocument(?string &$issuerAssignedId, ?string &$lineId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getSellerOrderReferencedDocument.getIssuerAssignedID.value", "");
+        $lineId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getSellerOrderReferencedDocument.getLineID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
+            $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getSellerOrderReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", null),
+            $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getSellerOrderReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", null)
+        );
+
+        return $this;
+    }
+
+    /**
+     * Get details of the related buyer order position.
+     *
+     * @param  string|null   $issuerAssignedId __BT-X-21, From EXTENDED__ An identifier issued by the buyer for a referenced order (order number)
+     * @param  string|null   $lineId           __BT-132, From EN 16931__ An identifier for a position within an order placed by the buyer. Note: Reference is made to the order reference at the document level.
+     * @param  DateTime|null $issueDate        __BT-X-22, From EXTENDED__ Date of order
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionBuyerOrderReferencedDocument(?string &$issuerAssignedId, ?string &$lineId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getBuyerOrderReferencedDocument.getIssuerAssignedID.value", "");
+        $lineId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getBuyerOrderReferencedDocument.getLineID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getBuyerOrderReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", null),
             $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getBuyerOrderReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", null)
@@ -3521,23 +3350,42 @@
 
     /**
-     * Get details of the related contract position
-     *
-     * @param  string|null   $issuerassignedid
-     * The contract reference should be assigned once in the context of the specific trade relationship and for a
-     * defined period of time (contract number)
-     * @param  string|null   $lineid
-     * Identifier of the according contract position
-     * @param  DateTime|null $issueddate
-     * Contract date
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPositionContractReferencedDocument(?string &$issuerassignedid, ?string &$lineid, ?DateTime &$issueddate): ZugferdDocumentReader
-    {
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $issuerassignedid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getContractReferencedDocument.getIssuerAssignedID.value", "");
-        $lineid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getContractReferencedDocument.getLineID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+     * Get details of the associated offer position.
+     *
+     * @param  string|null   $issuerAssignedId __BT-X-310, From EXTENDED__ Offer number
+     * @param  string|null   $lineId           __BT-X-311, From EXTENDED__ Position identifier within the offer
+     * @param  DateTime|null $issueDate        __BT-X-312, From EXTENDED__ Date of offder
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionQuotationReferencedDocument(?string &$issuerAssignedId, ?string &$lineId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getQuotationReferencedDocument.getIssuerAssignedID.value", "");
+        $lineId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getQuotationReferencedDocument.getLineID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
+            $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getQuotationReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", null),
+            $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getQuotationReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", null)
+        );
+
+        return $this;
+    }
+
+    /**
+     * Get details of the related contract position.
+     *
+     * @param  string|null   $issuerAssignedId __BT-X-24, From EXTENDED__ The contract reference should be assigned once in the context of the specific trade relationship and for a defined period of time (contract number)
+     * @param  string|null   $lineId           __BT-X-25, From EXTENDED__ Identifier of the according contract position
+     * @param  DateTime|null $issueDate        __BT-X-26, From EXTENDED__ Contract date
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionContractReferencedDocument(?string &$issuerAssignedId, ?string &$lineId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getContractReferencedDocument.getIssuerAssignedID.value", "");
+        $lineId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getContractReferencedDocument.getLineID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getContractReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", null),
             $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getContractReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", null)
@@ -3548,7 +3396,6 @@
 
     /**
-     * Seek to the first documents position additional referenced document
-     * Returns true if the first position is available, otherwise false
-     * You may use it together with getDocumentPositionAdditionalReferencedDocument
+     * Seek to the first documents position additional referenced document. Returns true if the first position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionAdditionalReferencedDocument.
      *
      * @return boolean
@@ -3557,14 +3404,16 @@
     {
         $this->positionAddRefDocPointer = 0;
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
         $addRefDoc = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getAdditionalReferencedDocument", []));
+
         return isset($addRefDoc[$this->positionAddRefDocPointer]);
     }
 
     /**
-     * Seek to the next documents position additional referenced document
-     * Returns true if the first position is available, otherwise false
-     * You may use it together with getDocumentPositionAdditionalReferencedDocument
+     * Seek to the next documents position additional referenced document. Returns true if the first position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionAdditionalReferencedDocument.
      *
      * @return boolean
@@ -3573,49 +3422,36 @@
     {
         $this->positionAddRefDocPointer++;
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
         $addRefDoc = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getAdditionalReferencedDocument", []));
+
         return isset($addRefDoc[$this->positionAddRefDocPointer]);
     }
 
     /**
-     * Details of an additional Document reference (on position level)
-     *
-     * __Notes__
-     *  - The documents justifying the invoice can be used to reference a document number, which should be
-     *    known to the recipient, as well as an external document (referenced by a URL) or an embedded document (such
-     *    as a timesheet as a PDF file). The option of linking to an external document is e.g. required when it comes
-     *    to large attachments and / or sensitive information, e.g. for personal services, which must be separated
-     *    from the bill
-     *  - Use ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument and
-     *    ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument to seek between multiple additional referenced
-     *    documents
-     *
-     * @param  string|null   $issuerassignedid
-     * The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for
-     * an object on which the invoice is based, or an identifier of the document on which the invoice is based.
-     * @param  string|null   $typecode
-     * Type of referenced document (See codelist UNTDID 1001)
-     *  - Code 916 "reference paper" is used to reference the identification of the document on which the invoice is based
-     *  - Code 50 "Price / sales catalog response" is used to reference the tender or the lot
-     *  - Code 130 "invoice data sheet" is used to reference an identifier for an object specified by the seller.
-     * @param  string|null   $uriid
-     * The Uniform Resource Locator (URL) at which the external document is available. A means of finding the resource
-     * including the primary access method intended for it, e.g. http: // or ftp: //. The location of the external document
-     * must be used if the buyer needs additional information to support the amounts billed. External documents are not part
-     * of the invoice. Access to external documents can involve certain risks.
-     * @param  string|null   $lineid
-     * The referenced position identifier in the additional document
-     * @param  string|null   $name
-     * A description of the document, e.g. Hourly billing, usage or consumption report, etc.
-     * @param  string|null   $reftypecode
-     * The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the
-     * recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected
-     * from UNTDID 1153 in accordance with the code list entries.
-     * @param  DateTime|null $issueddate
-     * Document date
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPositionAdditionalReferencedDocument(?string &$issuerassignedid, ?string &$typecode, ?string &$uriid, ?string &$lineid, ?string &$name, ?string &$reftypecode, ?DateTime &$issueddate): ZugferdDocumentReader
+     * Details of an additional Document reference (on position level).
+     *
+     * - The documents justifying the invoice can be used to reference a document number, which should be
+     *   known to the recipient, as well as an external document (referenced by a URL) or an embedded document (such
+     *   as a timesheet as a PDF file). The option of linking to an external document is e.g. required when it comes
+     *   to large attachments and / or sensitive information, e.g. for personal services, which must be separated
+     *   from the bill
+     * - Use ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument and
+     *   ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument to seek between multiple additional referenced
+     *   documents
+     *
+     * @param  string|null   $issuerAssignedId   __BT-X-27, From EXTENDED__ The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for an object on which the invoice is based, or an identifier of the document on which the invoice is based.
+     * @param  string|null   $typeCode           __BT-X-30, From EXTENDED__ Type of referenced document (See codelist UNTDID 1001)
+     * @param  string|null   $uriId              __BT-X-28, From EXTENDED__ The Uniform Resource Locator (URL) at which the external document is available. A means of finding the resource including the primary access method intended for it, e.g. http: // or ftp: //. The location of the external document must be used if the buyer needs additional information to support the amounts billed. External documents are not part of the invoice. Access to external documents can involve certain risks.
+     * @param  string|null   $lineId             __BT-X-29, From EXTENDED__ The referenced position identifier in the additional document
+     * @param  array|null    $name               __BT-X-299, From EXTENDED__ A description of the document, e.g. Hourly billing, usage or consumption report, etc.
+     * @param  string|null   $refTypeCode        __BT-X-32, From EXTENDED__ The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected from UNTDID 1153 in accordance with the code list entries.
+     * @param  DateTime|null $issueDate          __BT-X-33, From EXTENDED__ Document date
+     * @param  string|null   $binaryDataFilename __BT-X-31, From EXTENDED__ Contains a file name of an attachment document embedded as a binary object
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionAdditionalReferencedDocument(?string &$issuerAssignedId, ?string &$typeCode, ?string &$uriId, ?string &$lineId, ?array &$name, ?string &$refTypeCode, ?DateTime &$issueDate, ?string &$binaryDataFilename): ZugferdDocumentReader
     {
         $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
@@ -3625,15 +3461,29 @@
         $addRefDoc = $addRefDoc[$this->positionAddRefDocPointer];
 
-        $typecode = $this->getInvoiceValueByPathFrom($addRefDoc, "getTypeCode.value", "");
-        $issuerassignedid = $this->getInvoiceValueByPathFrom($addRefDoc, "getIssuerAssignedID.value", "");
-        $reftypecode = $this->getInvoiceValueByPathFrom($addRefDoc, "getReferenceTypeCode.value", "");
-        $uriid = $this->getInvoiceValueByPathFrom($addRefDoc, "getURIID.value", "");
-        $lineid = $this->getInvoiceValueByPathFrom($addRefDoc, "getLineID.value", "");
-        $name = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($addRefDoc, "getName.value", ""));
-        $issueddate = $this->getObjectHelper()->toDateTime(
+        $typeCode = $this->getInvoiceValueByPathFrom($addRefDoc, "getTypeCode.value", "");
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($addRefDoc, "getIssuerAssignedID.value", "");
+        $refTypeCode = $this->getInvoiceValueByPathFrom($addRefDoc, "getReferenceTypeCode.value", "");
+        $uriId = $this->getInvoiceValueByPathFrom($addRefDoc, "getURIID.value", "");
+        $lineId = $this->getInvoiceValueByPathFrom($addRefDoc, "getLineID.value", "");
+        $name = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($addRefDoc, "getName.value", null));
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPathFrom($addRefDoc, "getFormattedIssueDateTime.getDateTimeString.value", null),
             $this->getInvoiceValueByPathFrom($addRefDoc, "getFormattedIssueDateTime.getDateTimeString.getFormat", null)
         );
 
+        $binaryDataFilename = $this->getInvoiceValueByPathFrom($addRefDoc, "getAttachmentBinaryObject.getFilename", "");
+        $binarydata = $this->getInvoiceValueByPathFrom($addRefDoc, "getAttachmentBinaryObject.value", "");
+
+        if (
+            StringUtils::stringIsNullOrEmpty($binaryDataFilename) === false
+            && StringUtils::stringIsNullOrEmpty($binarydata) === false
+            && StringUtils::stringIsNullOrEmpty($this->binarydatadirectory) === false
+        ) {
+            $binaryDataFilename = PathUtils::combinePathWithFile($this->binarydatadirectory, $binaryDataFilename);
+            FileUtils::base64ToFile($binarydata, $binaryDataFilename);
+        } else {
+            $binaryDataFilename = "";
+        }
+
         return $this;
     }
@@ -3644,12 +3494,7 @@
      * Get the unit price excluding sales tax before deduction of the discount on the item price.
      *
-     * @param  float|null  $amount
-     * The unit price excluding sales tax before deduction of the discount on the item price.
-     * Note: If the price is shown according to the net calculation, the price must also be shown
-     * according to the gross calculation.
-     * @param  float|null  $basisQuantity
-     * The number of item units for which the price applies (price base quantity)
-     * @param  string|null $basisQuantityUnitCode
-     * The unit code of the number of item units for which the price applies (price base quantity)
+     * @param  float       $amount                __BT-148, From BASIC__ The unit price excluding sales tax before deduction of the discount on the item price. If the price is shown according to the net calculation, the price must also be shown according to the gross calculation.
+     * @param  float|null  $basisQuantity         __BT-149-1, From BASIC__ The number of item units for which the price applies (price base quantity)
+     * @param  string|null $basisQuantityUnitCode __BT-150-1, From BASIC__ The unit code of the number of item units for which the price applies (price base quantity)
      * @return ZugferdDocumentReader
      */
@@ -3667,7 +3512,6 @@
 
     /**
-     * Seek to the first documents position gross price allowance charge position
-     * Returns true if the first position is available, otherwise false
-     * You may use it together with getDocumentPositionGrossPriceAllowanceCharge
+     * Seek to the first documents position gross price allowance charge position. Returns true if the first position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionGrossPriceAllowanceCharge.
      *
      * @return boolean
@@ -3678,4 +3522,5 @@
         $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
         $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
         $allowanceCharge = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getGrossPriceProductTradePrice.getAppliedTradeAllowanceCharge", []));
         return isset($allowanceCharge[$this->positionGrossPriceAllowanceChargePointer]);
@@ -3683,7 +3528,6 @@
 
     /**
-     * Seek to the next documents position gross price allowance charge position
-     * Returns true if a other position is available, otherwise false
-     * You may use it together with getDocumentPositionGrossPriceAllowanceCharge
+     * Seek to the next documents position gross price allowance charge position. Returns true if a other position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionGrossPriceAllowanceCharge.
      *
      * @return boolean
@@ -3692,32 +3536,28 @@
     {
         $this->positionGrossPriceAllowanceChargePointer++;
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
         $allowanceCharge = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeAgreement.getGrossPriceProductTradePrice.getAppliedTradeAllowanceCharge", []));
+
         return isset($allowanceCharge[$this->positionGrossPriceAllowanceChargePointer]);
     }
 
     /**
-     * Get detailed information on surcharges and discounts
-     *
-     * @param  float|null   $actualAmount
-     * Discount on the item price. The total discount subtracted from the gross price to calculate the
-     * net price. Note: Only applies if the discount is given per unit and is not included in the gross price.
-     * @param  boolean|null $isCharge
-     * Switch for surcharge/discount, if true then its an charge
-     * @param  float|null   $calculationPercent
-     * Discount/surcharge in percent. Up to level EN16931, only the final result of the discount (ActualAmount)
-     * is transferred
-     * @param  float|null   $basisAmount
-     * Base amount of the discount/surcharge
-     * @param  string|null  $reason
-     * Reason for surcharge/discount (free text)
-     * @param  string|null  $taxTypeCode
-     * @param  string|null  $taxCategoryCode
-     * @param  float|null   $rateApplicablePercent
-     * @param  float|null   $sequence
-     * @param  float|null   $basisQuantity
-     * @param  string|null  $basisQuantityUnitCode
-     * @param  string|null  $reasonCode
+     * Get Detailed information on surcharges and discounts on item gross price.
+     *
+     * @param  float       $actualAmount          __BT-147, From BASIC__ Discount on the item price. The total discount subtracted from the gross price to calculate the net price. Note: Only applies if the discount is given per unit and is not included in the gross price.
+     * @param  boolean     $isCharge              __BT-147-02, From BASIC__ Switch for surcharge/discount, if true then its an charge
+     * @param  float|null  $calculationPercent    __BT-X-34, From EXTENDED__Discount/surcharge in percent. Up to level EN16931, only the final result of the discount (ActualAmount) is transferred
+     * @param  float|null  $basisAmount           __BT-X-35, From EXTENDED__ Base amount of the discount/surcharge
+     * @param  string|null $reason                __BT-X-36, From EXTENDED__ Reason for surcharge/discount (free text)
+     * @param  string|null $taxTypeCode           __BT-, From BASIC__
+     * @param  string|null $taxCategoryCode       __BT-, From BASIC__
+     * @param  float|null  $rateApplicablePercent __BT-, From BASIC__
+     * @param  float|null  $sequence              __BT-, From BASIC__
+     * @param  float|null  $basisQuantity         __BT-, From BASIC__
+     * @param  string|null $basisQuantityUnitCode __BT-, From BASIC__
+     * @param  string|null $reasonCode            __BT-X-313, From EXTENDED__ Reason code for surcharge/discount
      * @return ZugferdDocumentReader
      */
@@ -3747,12 +3587,9 @@
 
     /**
-     * Get detailed information on the net price of the item
-     *
-     * @param  float|null  $amount
-     * Net price of the item
-     * @param  float|null  $basisQuantity
-     * Base quantity at the item price
-     * @param  string|null $basisQuantityUnitCode
-     * Code of the unit of measurement of the base quantity at the item price
+     * Get detailed information on the net price of the item.
+     *
+     * @param  float       $amount                __BT-146, From BASIC__ Net price of the item
+     * @param  float|null  $basisQuantity         __BT-149, From BASIC__ Base quantity at the item price
+     * @param  string|null $basisQuantityUnitCode __BT-150, From BASIC__ Code of the unit of measurement of the base quantity at the item price
      * @return ZugferdDocumentReader
      */
@@ -3770,46 +3607,12 @@
 
     /**
-     * Tax included for B2C on position level
-     *
-     * @param  string|null $categoryCode
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  string|null $typeCode
-     * Coded description of a sales tax category. Note: Fixed value = "VAT"
-     * @param  float|null  $rateApplicablePercent
-     * The sales tax rate, expressed as the percentage applicable to the sales tax category in
-     * question. Note: The code of the sales tax category and the category-specific sales tax rate
-     * must correspond to one another. The value to be given is the percentage. For example, the
-     * value 20 is given for 20% (and not 0.2)
-     * @param  float|null  $calculatedAmount
-     * The total amount to be paid for the relevant VAT category. Note: Calculated by multiplying
-     * the amount to be taxed according to the sales tax category by the sales tax rate applicable
-     * for the sales tax category concerned
-     * @param  string|null $exemptionReason
-     * Reason for tax exemption (free text)
-     * @param  string|null $exemptionReasonCode
-     * Reason given in code form for the exemption of the amount from VAT. Note: Code list issued
-     * and maintained by the Connecting Europe Facility.
+     * Tax included for B2C on position level.
+     *
+     * @param  string|null $categoryCode          __BT-, From __ Coded description of a sales tax category
+     * @param  string|null $typeCode              __BT-, From __ Coded description of a sales tax category. Note: Fixed value = "VAT"
+     * @param  float|null  $rateApplicablePercent __BT-, From __ The sales tax rate, expressed as the percentage applicable to the sales tax category in question. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
+     * @param  float|null  $calculatedAmount      __BT-, From __ The total amount to be paid for the relevant VAT category. Note: Calculated by multiplying the amount to be taxed according to the sales tax category by the sales tax rate applicable for the sales tax category concerned
+     * @param  string|null $exemptionReason       __BT-, From __ Reason for tax exemption (free text)
+     * @param  string|null $exemptionReasonCode   __BT-, From __ Reason given in code form for the exemption of the amount from VAT. Note: Code list issued and maintained by the Connecting Europe Facility.
      * @return ZugferdDocumentReader
      */
@@ -3830,25 +3633,12 @@
 
     /**
-     * Get the position Quantity
-     *
-     * @param  float|null  $billedQuantity
-     * The quantity of individual items (goods or services) billed in the relevant line
-     * @param  string|null $billedQuantityUnitCode
-     * The unit of measure applicable to the amount billed. Note: The unit of measurement must be taken from the
-     * lists from UN / ECE Recommendation No. 20 "Codes for Units of Measure Used in International Trade" and
-     * UN / ECE Recommendation No. 21 "Codes for Passengers, Types of Cargo, Packages and Packaging Materials
-     * (with Complementary Codes for Package Names)" using the UN / ECE Rec No. 20 Intro 2.a) can be selected.
-     * It should be noted that in most cases it is not necessary for buyers and sellers to fully implement these
-     * lists in their software. Sellers only need to support the entities necessary for their goods and services;
-     * Buyers only need to verify that the units used in the invoice match those in other documents (such as in
-     * Contracts, catalogs, orders and shipping notifications) match the units used.
-     * @param  float|null  $chargeFreeQuantity
-     * Quantity, free of charge
-     * @param  string|null $chargeFreeQuantityUnitCpde
-     * Unit of measure code for the quantity free of charge
-     * @param  float|null  $packageQuantity
-     * Number of packages
-     * @param  string|null $packageQuantityUnitCode
-     * Unit of measure code for number of packages
+     * Get the position Quantity.
+     *
+     * @param  float|null  $billedQuantity             __BT-129, From BASIC__ The quantity of individual items (goods or services) billed in the relevant line
+     * @param  string|null $billedQuantityUnitCode     __BT-130, From BASIC__ The unit of measure applicable to the amount billed
+     * @param  float|null  $chargeFreeQuantity         __BT-X-46, From EXTENDED__ Quantity, free of charge
+     * @param  string|null $chargeFreeQuantityUnitCpde __BT-X-46-0, From EXTENDED__ Unit of measure code for the quantity free of charge
+     * @param  float|null  $packageQuantity            __BT-X-47, From EXTENDED__ Number of packages
+     * @param  string|null $packageQuantityUnitCode    __BT-X-47-0, From EXTENDED__ Unit of measure code for number of packages
      * @return ZugferdDocumentReader
      */
@@ -3872,8 +3662,7 @@
 
     /**
-     * Get detailed information on the actual delivery (on position level)
-     *
-     * @param  DateTime|null $date
-     * Actual delivery time. In Germany, the delivery and service date is a mandatory requirement on invoices.
+     * Get detailed information on the actual delivery (on position level).
+     *
+     * @param  DateTime|null $date __BT-X-85, From EXTENDED__ Actual delivery date
      * @return ZugferdDocumentReader
      */
@@ -3892,22 +3681,19 @@
 
     /**
-     * Get detailed information on the associated shipping notification (on position level)
-     *
-     * @param  string|null   $issuerassignedid
-     * Shipping notification reference
-     * @param  string|null   $lineid
-     * Shipping notification position reference date
-     * @param  DateTime|null $issueddate
-     * Shipping notification date
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPositionDespatchAdviceReferencedDocument(?string &$issuerassignedid, ?string &$lineid = null, ?DateTime &$issueddate = null): ZugferdDocumentReader
-    {
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $issuerassignedid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getDespatchAdviceReferencedDocument.getIssuerAssignedID.value", "");
-        $lineid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getDespatchAdviceReferencedDocument.getLineID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+     * Get detailed information on the associated shipping notification (on position level).
+     *
+     * @param  string|null   $issuerAssignedId __BT-X-86, From EXTENDED__ Shipping notification number
+     * @param  string|null   $lineId           __BT-X-87, From EXTENDED__ Shipping notification position
+     * @param  DateTime|null $issueDate        __BT-X-88, From EXTENDED__ Date of Shipping notification number
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionDespatchAdviceReferencedDocument(?string &$issuerAssignedId, ?string &$lineId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getDespatchAdviceReferencedDocument.getIssuerAssignedID.value", "");
+        $lineId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getDespatchAdviceReferencedDocument.getLineID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getSpecifiedLineTradeDelivery.getDespatchAdviceReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPath("getSpecifiedLineTradeDelivery.getDespatchAdviceReferencedDocument.getFormattedIssueDateTime,getDateTimeString.getFormat", "")
@@ -3918,19 +3704,19 @@
 
     /**
-     * Detailed information on the associated shipping notification (on position level)
-     *
-     * @param  string|null   $issuerassignedid
-     * @param  string|null   $lineid
-     * @param  DateTime|null $issueddate
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPositionReceivingAdviceReferencedDocument(?string &$issuerassignedid, ?string &$lineid, ?DateTime &$issueddate): ZugferdDocumentReader
-    {
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $issuerassignedid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getReceivingAdviceReferencedDocument.getIssuerAssignedID.value", "");
-        $lineid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getReceivingAdviceReferencedDocument.getLineID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+     * Detailed information on the associated shipping notification (on position level).
+     *
+     * @param  string|null   $issuerAssignedId __BT-X-89, From EXTENDED__ Goods receipt number
+     * @param  string|null   $lineId           __BT-X-90, From EXTENDED__ Goods receipt position
+     * @param  DateTime|null $issueDate        __BT-X-91, From EXTENDED__ Date of Goods receipt
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionReceivingAdviceReferencedDocument(?string &$issuerAssignedId, ?string &$lineId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getReceivingAdviceReferencedDocument.getIssuerAssignedID.value", "");
+        $lineId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getReceivingAdviceReferencedDocument.getLineID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getSpecifiedLineTradeDelivery.getReceivingAdviceReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPath("getSpecifiedLineTradeDelivery.getReceivingAdviceReferencedDocument.getFormattedIssueDateTime,getDateTimeString.getFormat", "")
@@ -3941,19 +3727,19 @@
 
     /**
-     * Detailed information on the associated delivery note on position level
-     *
-     * @param  string|null   $issuerassignedid
-     * @param  string|null   $lineid
-     * @param  DateTime|null $issueddate
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPositionDeliveryNoteReferencedDocument(?string &$issuerassignedid, ?string &$lineid, ?DateTime &$issueddate): ZugferdDocumentReader
-    {
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $issuerassignedid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getDeliveryNoteReferencedDocument.getIssuerAssignedID.value", "");
-        $lineid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getDeliveryNoteReferencedDocument.getLineID.value", "");
-        $issueddate = $this->getObjectHelper()->toDateTime(
+     * Detailed information on the associated delivery note on position level.
+     *
+     * @param  string|null   $issuerAssignedId __BT-X-92, From EXTENDED__ Delivery note number
+     * @param  string|null   $lineId           __BT-X-93, From EXTENDED__ Delivery note position
+     * @param  DateTime|null $issueDate        __BT-X-94, From EXTENDED__ Date of Delivery note
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionDeliveryNoteReferencedDocument(?string &$issuerAssignedId, ?string &$lineId, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getDeliveryNoteReferencedDocument.getIssuerAssignedID.value", "");
+        $lineId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeDelivery.getDeliveryNoteReferencedDocument.getLineID.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPath("getSpecifiedLineTradeDelivery.getDeliveryNoteReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
             $this->getInvoiceValueByPath("getSpecifiedLineTradeDelivery.getDeliveryNoteReferencedDocument.getFormattedIssueDateTime,getDateTimeString.getFormat", "")
@@ -3964,7 +3750,6 @@
 
     /**
-     * Seek to the first document position tax
-     * Returns true if the first tax position is available, otherwise false
-     * You may use it together with ZugferdDocumentReader::getDocumentPositionTax
+     * Seek to the first document position tax. Returns true if the first tax position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionTax.
      *
      * @return boolean
@@ -3983,7 +3768,6 @@
 
     /**
-     * Seek to the next document position tax
-     * Returns true if another tax position is available, otherwise false
-     * You may use it together with ZugferdDocumentReader::getDocumentPositionTax
+     * Seek to the next document position tax. Returns true if another tax position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionTax.
      *
      * @return boolean
@@ -4002,47 +3786,12 @@
 
     /**
-     * Get information about the sales tax that applies to the goods and services invoiced
-     * in the relevant invoice line
-     *
-     * @param  string|null $categoryCode
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  string|null $typeCode
-     * Coded description of a sales tax category. Note: Fixed value = "VAT"
-     * In EN 16931 only the tax type âsales taxâ with the code âVATâ is supported. If other types of tax are
-     * to be specified, such as an insurance tax or a mineral oil tax, the EXTENDED profile must be used. The
-     * code for the tax type must then be taken from the code list UNTDID 5153.
-     * @param  float|null  $rateApplicablePercent
-     * The VAT rate applicable to the item invoiced and expressed as a percentage. Note: The code of the sales
-     * tax category and the category-specific sales tax rate  must correspond to one another. The value to be
-     * given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
-     * @param  float|null  $calculatedAmount
-     * Tax amount. Information only for taxes that are not VAT.
-     * @param  string|null $exemptionReason
-     * Reason for tax exemption (free text)
-     * @param  string|null $exemptionReasonCode
-     * Reason given in code form for the exemption of the amount from VAT. Note: Code list issued
-     * and maintained by the Connecting Europe Facility.
+     * Get information about the sales tax that applies to the goods and services invoiced in the relevant invoice line.
+     *
+     * @param  string|null $categoryCode          __BT-151, From BASIC__ Coded description of a sales tax category
+     * @param  string|null $typeCode              __BT-151-0, From BASIC__ In EN 16931 only the tax type âsales taxâ with the code âVATâ is supported. Should other types of tax be specified, such as an insurance tax or a mineral oil tax the EXTENDED profile must be used. The code for the tax type must then be taken from the code list UNTDID 5153.
+     * @param  float|null  $rateApplicablePercent __BT-152, From BASIC__ The VAT rate applicable to the item invoiced and expressed as a percentage. Note: The code of the sales tax category and the category-specific sales tax rate  must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
+     * @param  float|null  $calculatedAmount      __BT-, From __ Tax amount. Information only for taxes that are not VAT (Obsolete)
+     * @param  string|null $exemptionReason       __BT-, From __ Reason for tax exemption (free text) (Obsolete)
+     * @param  string|null $exemptionReasonCode   __BT-, From __ Reason given in code form for the exemption of the amount from VAT. Note: Code list issued and maintained by the Connecting Europe Facility. (Obsolete)
      * @return ZugferdDocumentReader
      */
@@ -4066,19 +3815,16 @@
 
     /**
-     * Get information about the period relevant for the invoice item.
-     * Note: Also known as the invoice line delivery period.
-     *
-     * @param  DateTime|null $startdate
-     * Start of the billing period
-     * @param  DateTime|null $endDate
-     * End of the billing period
-     * @return ZugferdDocumentReader
-     */
-    public function getDocumentPositionBillingPeriod(?DateTime &$startdate, ?DateTime &$endDate): ZugferdDocumentReader
-    {
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $startdate = $this->getObjectHelper()->toDateTime(
+     * Get information about the period relevant for the invoice item. Also known as the invoice line delivery period.
+     *
+     * @param  DateTime|null $startDate __BT-134, From BASIC__ Start of the billing period
+     * @param  DateTime|null $endDate   __BT-135, From BASIC__ End of the billing period
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionBillingPeriod(?DateTime &$startDate, ?DateTime &$endDate): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $startDate = $this->getObjectHelper()->toDateTime(
             $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getBillingSpecifiedPeriod.getStartDateTime.getDateTimeString.value", null),
             $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getBillingSpecifiedPeriod.getStartDateTime.getDateTimeString.getFormat", null)
@@ -4093,7 +3839,6 @@
 
     /**
-     * Seek to the first allowance charge (on position level)
-     * Returns true if the first position is available, otherwise false
-     * You may use it together with ZugferdDocumentReader::getDocumentPositionAllowanceCharge
+     * Seek to the first allowance charge (on position level). Returns true if the first position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionAllowanceCharge.
      *
      * @return boolean
@@ -4102,14 +3847,16 @@
     {
         $this->positionAllowanceChargePointer = 0;
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
         $allowanceCharge = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getSpecifiedTradeAllowanceCharge", []));
+
         return isset($allowanceCharge[$this->positionAllowanceChargePointer]);
     }
 
     /**
-     * Seek to the next allowance charge (on position level)
-     * Returns true if another position is available, otherwise false
-     * You may use it together with ZugferdDocumentReader::getDocumentPositionAllowanceCharge
+     * Seek to the next allowance charge (on position level). Returns true if another position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionAllowanceCharge.
      *
      * @return boolean
@@ -4118,87 +3865,28 @@
     {
         $this->positionAllowanceChargePointer++;
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
         $allowanceCharge = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getSpecifiedTradeAllowanceCharge", []));
+
         return isset($allowanceCharge[$this->positionAllowanceChargePointer]);
     }
 
     /**
-     * Detailed information on currentley seeked surcharges and discounts on position level
-     *
-     * @param  float|null   $actualAmount
-     * The surcharge / discount amount excluding sales tax
-     * @param  boolean|null $isCharge
-     * Switch that indicates whether the following data refer to an allowance or a discount,
-     * true means that
-     * @param  float|null   $calculationPercent
-     * The percentage that may be used in conjunction with the base invoice line discount
-     * amount to calculate the invoice line discount amount
-     * @param  float|null   $basisAmount
-     * The base amount that may be used in conjunction with the invoice line discount percentage
-     * to calculate the invoice line discount amount
-     * @param  string|null  $reason
-     * The reason given in text form for the invoice item discount/surcharge
-     *
-     * __Notes__
-     *  - The invoice line discount reason code (BT-140) and the invoice line discount reason
-     *    (BT-139) must show the same allowance type.
-     *  - Each line item discount (BG-27) must include a corresponding line discount reason
-     *    (BT-139) or an appropriate line discount reason code (BT-140), or both.
-     *  - The code for the reason for the charge at the invoice line level (BT-145) and the
-     *    reason for the invoice line discount (BT-144) must show the same discount type
+     * Detailed information on currentley seeked surcharges and discounts on position level.
+     *
+     * @param  float|null   $actualAmount          __BT-136/BT-141, From BASIC__ The surcharge/discount amount excluding sales tax
+     * @param  boolean|null $isCharge              __BT-27-1/BT-28-1, From BASIC__ (true for BT-/ and false for /BT-) Switch that indicates whether the following data refer to an allowance or a discount, true means that it is a surcharge
+     * @param  float|null   $calculationPercent    __BT-138, From BASIC__ The percentage that may be used in conjunction with the base invoice line discount amount to calculate the invoice line discount amount
+     * @param  float|null   $basisAmount           __BT-137, From EN 16931__ The base amount that may be used in conjunction with the invoice line discount percentage to calculate the invoice line discount amount
+     * @param  string|null  $reason                __BT-139/BT-144, From BASIC__ The reason given in text form for the invoice item discount/surcharge
      * @param  string|null  $taxTypeCode
-     * Not used, this is only a dummy
      * @param  string|null  $taxCategoryCode
-     * Not used, this is only a dummy
      * @param  float|null   $rateApplicablePercent
-     * Not used, this is only a dummy
      * @param  float|null   $sequence
-     * Not used, this is only a dummy
      * @param  float|null   $basisQuantity
-     * Not used, this is only a dummy
      * @param  string|null  $basisQuantityUnitCode
-     * Not used, this is only a dummy
-     * @param  string|null  $reasonCode
-     * The reason given as a code for the invoice line discount
-     *
-     * __Notes__
-     *  - Use entries from the UNTDID 5189 code list (discounts) or the UNTDID 7161 code list
-     *    (surcharges). The invoice line discount reason code and the invoice line discount reason must
-     *    match.
-     *  - In the case of a discount, the code list UNTDID 5189 must be used.
-     *  - In the event of a surcharge, the code list UNTDID 7161 must be used.
-     *
-     * In particular, the following codes can be used:
-     *  - AA = Advertising
-     *  - ABL = Additional packaging
-     *  - ADR = Other services
-     *  - ADT = Pick-up
-     *  - FC = Freight service
-     *  - FI = Financing
-     *  - LA = Labelling
-     *
-     * Include PEPPOL subset:
-     *  - 41 - Bonus for works ahead of schedule
-     *  - 42 - Other bonus
-     *  - 60 - Manufacturerâs consumer discount
-     *  - 62 - Due to military status
-     *  - 63 - Due to work accident
-     *  - 64 - Special agreement
-     *  - 65 - Production error discount
-     *  - 66 - New outlet discount
-     *  - 67 - Sample discount
-     *  - 68 - End-of-range discount
-     *  - 70 - Incoterm discount
-     *  - 71 - Point of sales threshold allowance
-     *  - 88 - Material surcharge/deduction
-     *  - 95 - Discount
-     *  - 100 - Special rebate
-     *  - 102 - Fixed long term
-     *  - 103 - Temporary
-     *  - 104 - Standard
-     *  - 105 - Yearly turnover
-     *
-     * Codelists: UNTDID 7161 (Complete list), UNTDID 5189 (Restricted)
+     * @param  string|null  $reasonCode            __BT-140/BT-145, From BASIC__ The reason given as a code for the invoice line discount
      * @return ZugferdDocumentReader
      */
@@ -4228,70 +3916,13 @@
 
     /**
-     * Detailed information on surcharges and discounts on position level (on a simple way)
-     * This is the simplified version of ZugferdDocumentReader::getDocumentPositionAllowanceCharge
-     *
-     * @param  float|null   $actualAmount
-     * The surcharge / discount amount excluding sales tax
-     * @param  boolean|null $isCharge
-     * Switch that indicates whether the following data refer to an allowance or a discount,
-     * true means that
-     * @param  float|null   $calculationPercent
-     * The percentage that may be used in conjunction with the base invoice line discount
-     * amount to calculate the invoice line discount amount
-     * @param  float|null   $basisAmount
-     * The base amount that may be used in conjunction with the invoice line discount percentage
-     * to calculate the invoice line discount amount
-     * @param  string|null  $reasonCode
-     * The reason given as a code for the invoice line discount
-     *
-     * __Notes__
-     *
-     *  - Use entries from the UNTDID 5189 code list (discounts) or the UNTDID 7161 code list
-     *    (surcharges). The invoice line discount reason code and the invoice line discount reason must
-     *    match.
-     *  - In the case of a discount, the code list UNTDID 5189 must be used.
-     *  - In the event of a surcharge, the code list UNTDID 7161 must be used.
-     *
-     * In particular, the following codes can be used:
-     *  - AA = Advertising
-     *  - ABL = Additional packaging
-     *  - ADR = Other services
-     *  - ADT = Pick-up
-     *  - FC = Freight service
-     *  - FI = Financing
-     *  - LA = Labelling
-     *
-     * Include PEPPOL subset:
-     *  - 41 - Bonus for works ahead of schedule
-     *  - 42 - Other bonus
-     *  - 60 - Manufacturerâs consumer discount
-     *  - 62 - Due to military status
-     *  - 63 - Due to work accident
-     *  - 64 - Special agreement
-     *  - 65 - Production error discount
-     *  - 66 - New outlet discount
-     *  - 67 - Sample discount
-     *  - 68 - End-of-range discount
-     *  - 70 - Incoterm discount
-     *  - 71 - Point of sales threshold allowance
-     *  - 88 - Material surcharge/deduction
-     *  - 95 - Discount
-     *  - 100 - Special rebate
-     *  - 102 - Fixed long term
-     *  - 103 - Temporary
-     *  - 104 - Standard
-     *  - 105 - Yearly turnover
-     *
-     * Codelists: UNTDID 7161 (Complete list), UNTDID 5189 (Restricted)
-     * @param  string|null  $reason
-     * The reason given in text form for the invoice item discount / surcharge
-     *
-     * __Notes__
-     *  - The invoice line discount reason code (BT-140) and the invoice line discount reason
-     *    (BT-139) must show the same allowance type.
-     *  - Each line item discount (BG-27) must include a corresponding line discount reason
-     *    or an appropriate line discount reason code (BT-140), or both.
-     *  - The code for the reason for the charge at the invoice line level (BT-145) and the
-     *    reason for the invoice line discount (BT-144) must show the same discount type
+     * Detailed information on surcharges and discounts on position level (on a simple way).
+     * This is the simplified version of ZugferdDocumentReader::getDocumentPositionAllowanceCharge.
+     *
+     * @param  float|null   $actualAmount       __BT-136/BT-141, From BASIC__ The surcharge/discount amount excluding sales tax
+     * @param  boolean|null $isCharge           __BT-27-1/BT-28-1, From BASIC__ (true for BT-/ and false for /BT-) Switch that indicates whether the following data refer to an allowance or a discount, true means that it is a surcharge
+     * @param  float|null   $calculationPercent __BT-138, From BASIC__ The percentage that may be used in conjunction with the base invoice line discount amount to calculate the invoice line discount amount
+     * @param  float|null   $basisAmount        __BT-137, From EN 16931__ The base amount that may be used in conjunction with the invoice line discount percentage to calculate the invoice line discount amount
+     * @param  string|null  $reasonCode         __BT-140/BT-145, From BASIC__ The reason given as a code for the invoice line discount
+     * @param  string|null  $reason             __BT-139/BT-144, From BASIC__ The reason given in text form for the invoice item discount/surcharge
      * @return ZugferdDocumentReader
      */
@@ -4315,20 +3946,57 @@
 
     /**
-     * Get detailed information on item totals
-     *
-     * @param  float|null $lineTotalAmount
-     * The total amount of the invoice item.
-     * __Note:__ This is the "net" amount, that is, excluding sales tax, but including all surcharges
-     * and discounts applicable to the item level, as well as other taxes.
-     * @param  float|null $totalAllowanceChargeAmount
-     * Total amount of item surcharges and discounts
-     * @return ZugferdDocumentReader
+     * Get detailed information on item totals.
+     *
+     * @param      float|null $lineTotalAmount            __BT-131, From BASIC__ The total amount of the invoice item.
+     * @param      float|null $totalAllowanceChargeAmount __BT-, From __ Total amount of item surcharges and discounts
+     * @return     ZugferdDocumentReader
+     * @deprecated 1.0.88
      */
     public function getDocumentPositionLineSummation(?float &$lineTotalAmount, ?float &$totalAllowanceChargeAmount): ZugferdDocumentReader
     {
+        $totalAllowanceChargeAmount = 0.0;
+
+        $this->getDocumentPositionLineSummationSimple($lineTotalAmount);
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information on item totals.
+     *
+     * @param  float $lineTotalAmount __BT-131, From BASIC__ The total amount of the invoice item.
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionLineSummationSimple(?float &$lineTotalAmount): ZugferdDocumentReader
+    {
         $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
         $tradeLineItem = $tradeLineItem[$this->positionPointer];
 
         $lineTotalAmount = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getSpecifiedTradeSettlementLineMonetarySummation.getLineTotalAmount.value", 0.0);
+
+        return $this;
+    }
+
+    /**
+     * Get detailed information on item totals (with support for EXTENDED profile).
+     *
+     * @param  float $lineTotalAmount            __BT-131, From BASIC__ The total amount of the invoice item
+     * @param  float $chargeTotalAmount          __BT-X-327, From EXTENDED__ Total amount of item surcharges
+     * @param  float $allowanceTotalAmount       __BT-X-328, From EXTENDED__ Total amount of item discounts
+     * @param  float $taxTotalAmount             __BT-X-329, From EXTENDED__ Total amount of item taxes
+     * @param  float $grandTotalAmount           __BT-X-330, From EXTENDED__ Total gross amount of the item
+     * @param  float $totalAllowanceChargeAmount __BT-X-98, From EXTENDED__ Total amount of item surcharges and discounts
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionLineSummationExt(?float &$lineTotalAmount, ?float &$chargeTotalAmount, ?float &$allowanceTotalAmount, ?float &$taxTotalAmount, ?float &$grandTotalAmount, ?float &$totalAllowanceChargeAmount): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $lineTotalAmount = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getSpecifiedTradeSettlementLineMonetarySummation.getLineTotalAmount.value", 0.0);
+        $chargeTotalAmount = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getSpecifiedTradeSettlementLineMonetarySummation.getChargeTotalAmount.value", 0.0);
+        $allowanceTotalAmount = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getSpecifiedTradeSettlementLineMonetarySummation.getAllowanceTotalAmount.value", 0.0);
+        $taxTotalAmount = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getSpecifiedTradeSettlementLineMonetarySummation.getTaxTotalAmount.value", 0.0);
+        $grandTotalAmount = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getSpecifiedTradeSettlementLineMonetarySummation.getGrandTotalAmount.value", 0.0);
         $totalAllowanceChargeAmount = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getSpecifiedTradeSettlementLineMonetarySummation.getTotalAllowanceChargeAmount.value", 0.0);
 
@@ -4337,235 +4005,106 @@
 
     /**
-     * Seek to the first document position's product characteristic
-     * Returns true if the first position propduct characteristic is available, otherwise false
-     * You may use it together with getDocumentPositionProductCharacteristic
-     *
-     * @return boolean
-     */
-    public function firstDocumentPositionProductCharacteristic(): bool
-    {
-        $this->positionProductCharacteristicPointer = 0;
-
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $tradeLineItemProductCharacteristic = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getApplicableProductCharacteristic", []));
-
-        return isset($tradeLineItemProductCharacteristic[$this->positionProductCharacteristicPointer]);
-    }
-
-    /**
-     * Seek to the next document position's product characteristic
-     * Returns true if more position propduct characteristics are available, otherwise false
-     * You may use it together with getDocumentPositionProductCharacteristic
-     *
-     * @return boolean
-     */
-    public function nextDocumentPositionProductCharacteristic(): bool
-    {
-        $this->positionProductCharacteristicPointer++;
-
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $tradeLineItemProductCharacteristic = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getApplicableProductCharacteristic", []));
-
-        return isset($tradeLineItemProductCharacteristic[$this->positionProductCharacteristicPointer]);
-    }
-
-    /**
-     * Get extra characteristics to the formerly added product.
-     * Contains information about the characteristics of the goods and services invoiced
-     *
-     * @param  string      $description
-     * The name of the attribute or property of the product such as "Colour"
-     * @param  string      $value
-     * The value of the attribute or property of the product such as "Red"
-     * @param  string|null $typecode
-     * Type of product property (code). The codes must be taken from the
-     * UNTDID 6313 codelist. Available only in the Extended-Profile
-     * @param  float|null  $valueMeasure
-     * Value of the product property (numerical measurand)
-     * @param  string|null $valueMeasureUnitCode
-     * Unit of measurement of the measurand
-     *  - Codeliste: Rec. NÂ°20 VollstÃ€ndige Liste, In Recommendation NÂ°20 Intro 2.a ist beschrieben, dass
-     *    beide Listen kombiniert anzuwenden sind.
-     *  - Codeliste: Rec. NÂ°21 VollstÃ€ndige Liste, In Recommendation NÂ°20 Intro 2.a ist beschrieben, dass
-     *    beide Listen kombiniert anzuwenden sind.
-     * @return ZugferdDocumentBuilder
-     */
-    public function getDocumentPositionProductCharacteristic(?string &$description, ?string &$value, ?string &$typecode, ?float &$valueMeasure, ?string &$valueMeasureUnitCode): ZugferdDocumentReader
-    {
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-        $tradeLineItemProductCharacteristic = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getApplicableProductCharacteristic", []));
-        $tradeLineItemProductCharacteristic = $tradeLineItemProductCharacteristic[$this->positionProductCharacteristicPointer];
-
-        $description = $this->getInvoiceValueByPathFrom($tradeLineItemProductCharacteristic, "getDescription.value", "");
-        $value = $this->getInvoiceValueByPathFrom($tradeLineItemProductCharacteristic, "getValue.value", "");
-        $typecode = $this->getInvoiceValueByPathFrom($tradeLineItemProductCharacteristic, "getTypeCode.value", "");
-        $valueMeasure = $this->getInvoiceValueByPathFrom($tradeLineItemProductCharacteristic, "getValueMeasure.value", 0.0);
-        $valueMeasureUnitCode = $this->getInvoiceValueByPathFrom($tradeLineItemProductCharacteristic, "getValueMeasure.getUnitCode", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first document position's product classification
-     * Returns true if the first position propduct classification is available, otherwise false
-     * You may use it together with getDocumentPositionProductClassification
-     *
-     * @return boolean
-     */
-    public function firstDocumentPositionProductClassification(): bool
-    {
-        $this->positionProductClassificationPointer = 0;
-
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $tradeLineItemProductClassification = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getDesignatedProductClassification", []));
-
-        return isset($tradeLineItemProductClassification[$this->positionProductClassificationPointer]);
-    }
-
-    /**
-     * Seek to the next document position's product classification
-     * Returns true if more position propduct classifications are available, otherwise false
-     * You may use it together with getDocumentPositionProductClassification
-     *
-     * @return boolean
-     */
-    public function nextDocumentPositionProductClassification(): bool
-    {
-        $this->positionProductClassificationPointer++;
-
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $tradeLineItemProductClassification = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getDesignatedProductClassification", []));
-
-        return isset($tradeLineItemProductClassification[$this->positionProductClassificationPointer]);
-    }
-
-    /**
-     * Get detailed information on product classification
-     *
-     * @param  string      $classCode
-     * A code for classifying the item by type or nature or essence or condition.
-     * __Note__: Classification codes are used to group similar items for different purposes, such as public
-     * procurement (using the Common Procurement Vocabulary [CPV]), e-commerce (UNSPSC), etc.
-     * @param  string|null $className
-     * Classification name
-     * @param  string|null $listID
-     * The identifier for the identification scheme of the identifier of the article classification
-     * __Note__: The identification scheme must be selected from the entries from UNTDID 7143.
-     * @param  string|null $listVersionID
-     * The version of the identification scheme
-     * @return ZugferdDocumentBuilder
-     */
-    public function getDocumentPositionProductClassification(?string &$classCode, ?string &$className, ?string &$listID, ?string &$listVersionID): ZugferdDocumentReader
-    {
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-        $tradeLineItemProductClassification = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getDesignatedProductClassification", []));
-        $tradeLineItemProductClassification = $tradeLineItemProductClassification[$this->positionProductClassificationPointer];
-
-        $classCode = $this->getInvoiceValueByPathFrom($tradeLineItemProductClassification, "getClassCode.value", "");
-        $className = $this->getInvoiceValueByPathFrom($tradeLineItemProductClassification, "getClassName.value", "");
-        $listID = $this->getInvoiceValueByPathFrom($tradeLineItemProductClassification, "getClassCode.getListID", "");
-        $listVersionID = $this->getInvoiceValueByPathFrom($tradeLineItemProductClassification, "getClassCode.getListVersionID", "");
-
-        return $this;
-    }
-
-    /**
-     * Seek to the first document position's referenced product
-     * Returns true if the first position referenced product is available, otherwise false
-     * You may use it together with getDocumentPositionReferencedProduct
-     *
-     * @return boolean
-     */
-    public function firstDocumentPositionReferencedProduct(): bool
-    {
-        $this->positionReferencedProductPointer = 0;
-
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $tradeLineItemReferencedProduct = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getIncludedReferencedProduct", []));
-
-        return isset($tradeLineItemReferencedProduct[$this->positionReferencedProductPointer]);
-    }
-
-    /**
-     * Seek to the next document position's referenced product
-     * Returns true if more position referenced products are available, otherwise false
-     * You may use it together with getDocumentPositionReferencedProduct
-     *
-     * @return boolean
-     */
-    public function nextDocumentPositionReferencedProduct(): bool
-    {
-        $this->positionReferencedProductPointer++;
-
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-
-        $tradeLineItemReferencedProduct = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getIncludedReferencedProduct", []));
-
-        return isset($tradeLineItemReferencedProduct[$this->positionReferencedProductPointer]);
-    }
-
-    /**
-     * Get detailed information on included products. This information relates to the
-     * product that has just been added
-     *
-     * @param  string $name
-     * Item name
-     * @param  string $description
-     * Item description
-     * @param  string $sellerAssignedID
-     * Item number of the seller
-     * @param  string $buyerAssignedID
-     * Item number of the buyer
-     * __Note__: The identifier of the product is a unique, bilaterally agreed identification of the
-     * product. It can, for example, be the customer article number or the article number assigned by
-     * the manufacturer.
-     * @param  array $globalID
-     * Array of the global ids indexed by the identification scheme. The identification scheme results
-     * from the list published by the ISO/IEC 6523 Maintenance Agency. In particular, the following scheme
-     * codes are used: 0021 : SWIFT, 0088 : EAN, 0060 : DUNS, 0177 : ODETTE
-     * @param  float  $unitQuantity
-     * Included quantity
-     * @param  string $unitCode
-     * Unit of measurement of the included quantity
-     * @return ZugferdDocumentBuilder
-     */
-    public function getDocumentPositionReferencedProduct(?string &$name, ?string &$description, ?string &$sellerAssignedID, ?string &$buyerAssignedID, ?array &$globalID, ?float &$unitQuantity, ?string &$unitCode): ZugferdDocumentReader
-    {
-        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
-        $tradeLineItem = $tradeLineItem[$this->positionPointer];
-        $tradeLineItemReferencedProduct = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedTradeProduct.getIncludedReferencedProduct", []));
-        $tradeLineItemReferencedProduct = $tradeLineItemReferencedProduct[$this->positionReferencedProductPointer];
-
-        $name = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getName.value", "");
-        $description = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getDescription.value", "");
-        $sellerAssignedID = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getSellerAssignedID.value", "");
-        $buyerAssignedID = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getBuyerAssignedID.value", "");
-        $unitQuantity = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getUnitQuantity.value", 0);
-        $unitCode = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getUnitQuantity.getUnitCode", "");
-        $globalID = $this->getInvoiceValueByPathFrom($tradeLineItemReferencedProduct, "getGlobalID", []);
-        $globalID = $this->convertToAssociativeArray($globalID, "getSchemeID", "value");
-
-        return $this;
-    }
-
-    //TODO: Seeker for documents position TradeAccountingAccount
+     * Get a Reference to the previous invoice (on position level).
+     *
+     * @param  string|null   $issuerAssignedId __BT-X-331, From EXTENDED__ The identification of an invoice previously sent by the seller
+     * @param  string|null   $lineid           __BT-X-540, From EXTENDED__ Identification of the invoice item
+     * @param  string|null   $typeCode         __BT-X-332, From EXTENDED__ Type of previous invoice (code)
+     * @param  DateTime|null $issueDate        __BT-X-333, From EXTENDED__ Date of the previous invoice
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionInvoiceReferencedDocument(?string &$issuerAssignedId, ?string &$lineid, ?string &$typeCode, ?DateTime &$issueDate): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getInvoiceReferencedDocument.getIssuerAssignedID.value", "");
+        $lineid = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getInvoiceReferencedDocument.getLineID.value", "");
+        $typeCode = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getInvoiceReferencedDocument.getTypeCode.value", "");
+        $issueDate = $this->getObjectHelper()->toDateTime(
+            $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getInvoiceReferencedDocument.getFormattedIssueDateTime.getDateTimeString.value", ""),
+            $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getInvoiceReferencedDocument.getFormattedIssueDateTime.getDateTimeString.getFormat", "")
+        );
+
+        return $this;
+    }
+
+    /**
+     * Seek to the first documents position additional referenced document (Object detection at the level of the accounting position). Returns true if the first position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionAdditionalReferencedObjDocument.
+     *
+     * @return boolean
+     */
+    public function firstDocumentPositionAdditionalReferencedObjDocument(): bool
+    {
+        $this->positionAddRefObjDocPointer = 0;
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $addRefDoc = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getAdditionalReferencedDocument", []));
+
+        return isset($addRefDoc[$this->positionAddRefObjDocPointer]);
+    }
+
+    /**
+     * Seek to the next documents position additional referenced document (Object detection at the level of the accounting position). Returns true if the first position is available, otherwise false.
+     * You may use it together with ZugferdDocumentReader::getDocumentPositionAdditionalReferencedObjDocument.
+     *
+     * @return boolean
+     */
+    public function nextDocumentPositionAdditionalReferencedObjDocument(): bool
+    {
+        $this->positionAddRefObjDocPointer++;
+
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $addRefDoc = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getAdditionalReferencedDocument", []));
+
+        return isset($addRefDoc[$this->positionAddRefObjDocPointer]);
+    }
+
+    /**
+     * Get additional Document reference on a position (Object detection).
+     *
+     * @param  string|null $issuerAssignedId __BT-128, From EN 16931__ The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for an object on which the invoice is based, or an identifier of the document on which the invoice is based.
+     * @param  string|null $typeCode         __BT-128-0, From EN 16931__ Type of referenced document (See codelist UNTDID 1001)
+     * @param  string|null $refTypeCode      __BT-128-1, From EN 16931__ The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected from UNTDID 1153 in accordance with the code list entries.
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionAdditionalReferencedObjDocument(?string &$issuerAssignedId, ?string &$typeCode, ?string &$refTypeCode): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $addRefDoc = $this->getObjectHelper()->ensureArray($this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getAdditionalReferencedDocument", []));
+        $addRefDoc = $addRefDoc[$this->positionAddRefObjDocPointer];
+
+        $typeCode = $this->getInvoiceValueByPathFrom($addRefDoc, "getTypeCode.value", "");
+        $issuerAssignedId = $this->getInvoiceValueByPathFrom($addRefDoc, "getIssuerAssignedID.value", "");
+        $refTypeCode = $this->getInvoiceValueByPathFrom($addRefDoc, "getReferenceTypeCode.value", "");
+
+        return $this;
+    }
+
+    /**
+     * Get information on the booking reference (on position level).
+     *
+     * @param  null|string &$id       __BT-133, From EN 16931__ Posting reference of the byuer. If required, this reference shall be provided by the Buyer to the Seller prior to the issuing of the Invoice.
+     * @param  null|string &$typeCode __BT-X-99, From EXTENDED__ Type of the posting reference
+     * @return ZugferdDocumentReader
+     */
+    public function getDocumentPositionReceivableSpecifiedTradeAccountingAccount(?string &$id, ?string &$typeCode): ZugferdDocumentReader
+    {
+        $tradeLineItem = $this->getInvoiceValueByPath("getSupplyChainTradeTransaction.getIncludedSupplyChainTradeLineItem", []);
+        $tradeLineItem = $tradeLineItem[$this->positionPointer];
+
+        $id = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getReceivableSpecifiedTradeAccountingAccount.getId.value", "");
+        $typeCode = $this->getInvoiceValueByPathFrom($tradeLineItem, "getSpecifiedLineTradeSettlement.getReceivableSpecifiedTradeAccountingAccount.getTypeCode.value", "");
+
+        return $this;
+    }
 
     /**
      * Function to return a value from $invoiceObject by path
-     *
-     * @codeCoverageIgnore
      *
      * @param  string $methods
@@ -4580,6 +4119,4 @@
     /**
      * Function to return a value from $from by path
-     *
-     * @codeCoverageIgnore
      *
      * @param  object|null $from
@@ -4595,6 +4132,4 @@
     /**
      * Convert to array
-     *
-     * @codeCoverageIgnore
      *
      * @param  mixed $value
@@ -4625,5 +4160,5 @@
                 }
 
-                if ($isFlat === true) {
+                if ($isFlat) {
                     $result[] = $itemValue;
                 } else {
@@ -4632,5 +4167,5 @@
             }
 
-            if ($isFlat !== true) {
+            if (!$isFlat) {
                 $result[] = $resultItem;
             }
@@ -4642,6 +4177,4 @@
     /**
      * Convert to associative array
-     *
-     * @codeCoverageIgnore
      *
      * @param  mixed  $value
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentValidator.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentValidator.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdDocumentValidator.php	(revision 8504)
@@ -28,6 +28,4 @@
     /**
      * The invoice document reference
-     *
-     * @var ZugferdDocument
      */
     private $document;
@@ -35,14 +33,11 @@
     /**
      * The validator instance
-     *
-     * @var \Symfony\Component\Validator\Validator\ValidatorInterface;
      */
-    private $validator = null;
+    private $validator;
 
     /**
      * Constructor
      *
-     * @codeCoverageIgnore
-     * @param              ZugferdDocument $document
+     * @param ZugferdDocument $document
      */
     public function __construct(ZugferdDocument $document)
@@ -59,5 +54,5 @@
     public function validateDocument(): ConstraintViolationListInterface
     {
-        return $this->validator->validate($this->document->getInvoiceObject(), null, ['xsd_rules']);
+        return $this->validator->validate($this->getDocumentInvoiceObject(), null, ['xsd_rules']);
     }
 
@@ -65,6 +60,5 @@
      * Initialize the internal validator object
      *
-     * @codeCoverageIgnore
-     * @return             void
+     * @return void
      */
     private function initValidator(): void
@@ -92,8 +86,7 @@
      * Helper for find all files by pattern
      *
-     * @codeCoverageIgnore
-     * @param              string  $pattern
-     * @param              integer $flags
-     * @return             array
+     * @param  string  $pattern
+     * @param  integer $flags
+     * @return array
      */
     private function globRecursive(string $pattern, int $flags = 0): array
@@ -107,3 +100,18 @@
         return $files;
     }
+
+    /**
+     * Returns the internal invoice object from the document
+     *
+     * @return object
+     */
+    private function getDocumentInvoiceObject()
+    {
+        $reflector = new \ReflectionClass($this->document);
+
+        $method = $reflector->getMethod('getInvoiceObject');
+        $method->setAccessible(true);
+
+        return $method->invoke($this->document);
+    }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdKositValidator.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdKositValidator.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdKositValidator.php	(revision 8504)
@@ -12,5 +12,6 @@
 use DOMDocument;
 use DOMXPath;
-use Exception;
+use Throwable;
+use ZipArchive;
 use horstoeko\stringmanagement\FileUtils;
 use horstoeko\stringmanagement\PathUtils;
@@ -18,9 +19,8 @@
 use Symfony\Component\Process\ExecutableFinder;
 use Symfony\Component\Process\Process;
-use Throwable;
-use ZipArchive;
 
 /**
- * Class representing the validator against Schematron (Kosit) for documents
+ * Class representing the validator against Schematron (Kosit) for documents.
+ * This class requires a JAVA running setup
  *
  * @category Zugferd
@@ -35,7 +35,7 @@
      * The invoice document reference
      *
-     * @var ZugferdDocument
-     */
-    private $document = null;
+     * @var ZugferdDocument|string|null
+     */
+    private $document;
 
     /**
@@ -65,5 +65,5 @@
      * @var string
      */
-    private $validatorScenarioDownloadUrl = "https://github.com/itplr-kosit/validator-configuration-xrechnung/releases/download/release-2023-11-15/validator-configuration-xrechnung_3.0.1_2023-11-15.zip";
+    private $validatorScenarioDownloadUrl = "https://github.com/itplr-kosit/validator-configuration-xrechnung/releases/download/release-2025-03-21/validator-configuration-xrechnung_3.0.2_2025-03-21.zip";
 
     /**
@@ -100,5 +100,5 @@
      * @var string
      */
-    private $fileToValidateFilename = "filetovalidate.xml";
+    private $fileToValidateFilename = "";
 
     /**
@@ -110,38 +110,80 @@
 
     /**
+     * Use remote validation (JAVA application is running in daemon mode on a remote host)
+     *
+     * @var boolean
+     */
+    private $remoteModeEnabled = false;
+
+    /**
+     * The remote hostname or -ip
+     *
+     * @var string
+     */
+    private $remoteModeHost = "";
+
+    /**
+     * The remote host port
+     *
+     * @var integer
+     */
+    private $remoteModePort = 0;
+
+    /**
      * Message Type "Internal Error"
      */
-    private const MSG_TYPE_INTERNALERROR = 'internalerror';
+    protected const MSG_TYPE_INTERNALERROR = 'internalerror';
 
     /**
      * Message Type "Validation Error"
      */
-    private const MSG_TYPE_VALIDATIONERROR = 'validationerror';
+    protected const MSG_TYPE_VALIDATIONERROR = 'validationerror';
 
     /**
      * Message Type "Validation Warning"
      */
-    private const MSG_TYPE_VALIDATIONWARNING = 'validationwarning';
+    protected const MSG_TYPE_VALIDATIONWARNING = 'validationwarning';
 
     /**
      * Message Type "Validation info"
      */
-    private const MSG_TYPE_VALIDATIONINFORMATION = 'validationinformation';
+    protected const MSG_TYPE_VALIDATIONINFORMATION = 'validationinformation';
 
     /**
      * Message Type "Process Output"
      */
-    private const MSG_TYPE_PROCESSOUTPUT = 'processoutput';
+    protected const MSG_TYPE_PROCESSOUTPUT = 'processoutput';
+
+    /**
+     * Create a KositValidator-Instance by a given content string
+     *
+     * @param  string $document
+     * @return ZugferdKositValidator
+     */
+    public static function fromString(string $document): ZugferdKositValidator
+    {
+        return new ZugferdKositValidator($document);
+    }
+
+    /**
+     * Create a KositValidator-Instance by a given ZugferdDocument (ZugferdDocumentReader, ZugferdDocumentBuilder)
+     *
+     * @param  ZugferdDocument $zugferdDocument
+     * @return ZugferdKositValidator
+     */
+    public static function fromZugferdDocument(ZugferdDocument $zugferdDocument): ZugferdKositValidator
+    {
+        return new ZugferdKositValidator($zugferdDocument);
+    }
 
     /**
      * Constructor
      *
-     * @codeCoverageIgnore
-     * @param              ZugferdDocument|null $document
-     */
-    public function __construct(?ZugferdDocument $document = null)
-    {
-        $this->document = $document;
+     * @param ZugferdDocument|string|null $document
+     */
+    public function __construct($document = null)
+    {
         $this->baseDirectory = sys_get_temp_dir();
+        $this->setDocument($document);
     }
 
@@ -149,9 +191,13 @@
      * Set the ZugferdDocument instance to validate
      *
-     * @param  ZugferdDocument $document
-     * @return ZugferdKositValidator
-     */
-    public function setDocument(ZugferdDocument $document): ZugferdKositValidator
-    {
+     * @param  ZugferdDocument|string $document
+     * @return ZugferdKositValidator
+     */
+    public function setDocument($document): ZugferdKositValidator
+    {
+        if (!is_string($document) && !($document instanceof ZugferdDocument)) {
+            return $this;
+        }
+
         $this->document = $document;
 
@@ -258,17 +304,4 @@
 
     /**
-     * Set the filename of the file which contains the temporary xml data to validate
-     *
-     * @param  string $newFileToValidateFilename
-     * @return ZugferdKositValidator
-     */
-    public function setFileToValidateFilename(string $newFileToValidateFilename): ZugferdKositValidator
-    {
-        $this->fileToValidateFilename = $newFileToValidateFilename;
-
-        return $this;
-    }
-
-    /**
      * Disable cleanup base directory
      *
@@ -292,4 +325,74 @@
 
         return $this;
+    }
+
+    /**
+     * Disable the usage of a remote host validation
+     *
+     * @return ZugferdKositValidator
+     */
+    public function disableRemoteMode(): ZugferdKositValidator
+    {
+        $this->remoteModeEnabled = false;
+
+        return $this;
+    }
+
+    /**
+     * Enable the usage of a remote host validation
+     *
+     * @return ZugferdKositValidator
+     */
+    public function enableRemoteMode(): ZugferdKositValidator
+    {
+        $this->remoteModeEnabled = true;
+
+        return $this;
+    }
+
+    /**
+     * Set the hostname or the ip of the remote host where the validation application
+     * is running in daemon mode
+     *
+     * @param  string $remoteModeHost
+     * @return ZugferdKositValidator
+     */
+    public function setRemoteModeHost(string $remoteModeHost): ZugferdKositValidator
+    {
+        if (StringUtils::stringIsNullOrEmpty($remoteModeHost)) {
+            return $this;
+        }
+
+        $this->remoteModeHost = $remoteModeHost;
+
+        return $this;
+    }
+
+    /**
+     * Set the port of the remote host where the validation application
+     * is running in daemon mode
+     *
+     * @param  integer $remoteModePort
+     * @return ZugferdKositValidator
+     */
+    public function setRemoteModePort(int $remoteModePort): ZugferdKositValidator
+    {
+        if ($remoteModePort <= 0) {
+            return $this;
+        }
+
+        $this->remoteModePort = $remoteModePort;
+
+        return $this;
+    }
+
+    /**
+     * Returns the full remote mode URL
+     *
+     * @return string
+     */
+    public function getRemoteModeUrl(): string
+    {
+        return sprintf("http://%s:%s", $this->remoteModeHost, $this->remoteModePort);
     }
 
@@ -325,4 +428,18 @@
 
     /**
+     * Internal get the content of the document
+     *
+     * @return string
+     */
+    private function getDocumentContent(): string
+    {
+        if (is_string($this->document)) {
+            return $this->document;
+        }
+
+        return $this->document->serializeAsXml();
+    }
+
+    /**
      * Internal get (and create) the directory for downloads and file creation
      *
@@ -357,5 +474,5 @@
      * @return string
      */
-    public function resolveScenatioZipFilename(): string
+    private function resolveScenatioZipFilename(): string
     {
         return PathUtils::combinePathWithFile($this->resolveBaseDirectory(), $this->validatorScenarioZipFilename);
@@ -383,5 +500,15 @@
 
     /**
-     * Get the full filename which contains the xml to validate
+     * Reset the internal filename where data of the PDF to validate are stored
+     *
+     * @return void
+     */
+    private function resetFileToValidateFilename(): void
+    {
+        $this->fileToValidateFilename = "";
+    }
+
+    /**
+     * Get the full filename which contains the PDF to validate
      *
      * @return string
@@ -389,5 +516,9 @@
     private function resolveFileToValidateFilename(): string
     {
-        return PathUtils::combinePathWithFile($this->resolveBaseDirectory(), $this->fileToValidateFilename);
+        if (StringUtils::stringIsNullOrEmpty($this->fileToValidateFilename)) {
+            $this->fileToValidateFilename = PathUtils::combinePathWithFile($this->resolveBaseDirectory(), sprintf('filetovalidate-%s-%s.xml', uniqid(), uniqid()));
+        }
+
+        return $this->fileToValidateFilename;
     }
 
@@ -405,5 +536,5 @@
      * Add message to error bag
      *
-     * @param  string|Exception|Throwable $error
+     * @param  string|Throwable $error
      * @return void
      */
@@ -414,6 +545,4 @@
         if (is_string($error)) {
             $this->messageBag[] = ["type" => $messageType, "message" => $error];
-        } elseif ($error instanceof Exception) {
-            $this->messageBag[] = ["type" => $messageType, "message" => $error->getMessage()];
         } elseif ($error instanceof Throwable) {
             $this->messageBag[] = ["type" => $messageType, "message" => $error->getMessage()];
@@ -424,5 +553,5 @@
      * Get messages from messagebag filtered by message type
      *
-     * @param string $messageType
+     * @param  string $messageType
      * @return array
      */
@@ -459,5 +588,5 @@
     public function hasNoValidationErrors(): bool
     {
-        return empty($this->getValidationErrors());
+        return $this->getValidationErrors() === [];
     }
 
@@ -489,5 +618,5 @@
     public function hasNoValidationWarnings(): bool
     {
-        return empty($this->getValidationWarnings());
+        return $this->getValidationWarnings() === [];
     }
 
@@ -519,5 +648,5 @@
     public function hasNoValidationInformation(): bool
     {
-        return empty($this->getValidationInformation());
+        return $this->getValidationInformation() === [];
     }
 
@@ -549,5 +678,5 @@
     public function hasNoProcessErrors(): bool
     {
-        return empty($this->getProcessErrors());
+        return $this->getProcessErrors() === [];
     }
 
@@ -578,4 +707,22 @@
      */
     private function checkRequirements(): bool
+    {
+        if ($this->checkRequirementsGeneral() === false) {
+            return false;
+        }
+
+        if ($this->remoteModeEnabled === true) {
+            return $this->checkRequirementsRemote();
+        }
+
+        return $this->checkRequirementsLocal();
+    }
+
+    /**
+     * CHeck general requirements (common for local and remote validation)
+     *
+     * @return boolean
+     */
+    private function checkRequirementsGeneral(): bool
     {
         if (is_null($this->document)) {
@@ -584,4 +731,18 @@
         }
 
+        return true;
+    }
+
+    /**
+     * CHeck requirements for usage on a local installation
+     *
+     * @return boolean
+     */
+    private function checkRequirementsLocal(): bool
+    {
+        if ($this->remoteModeEnabled === true) {
+            return true;
+        }
+
         if (!extension_loaded('zip')) {
             $this->addToMessageBag("ZIP extension not installed");
@@ -589,7 +750,7 @@
         }
 
-        $executeableFinder = new ExecutableFinder();
-
-        if (is_null($executeableFinder->find('java'))) {
+        $executableFinder = new ExecutableFinder();
+
+        if (is_null($executableFinder->find('java'))) {
             $this->addToMessageBag("JAVA not installed on this machine");
             return false;
@@ -600,4 +761,67 @@
 
     /**
+     * CHeck requirements for usage on a remote host which is running the application
+     * in daemon mode
+     *
+     * @return boolean
+     */
+    private function checkRequirementsRemote(): bool
+    {
+        if ($this->remoteModeEnabled !== true) {
+            return true;
+        }
+
+        if (!extension_loaded('curl')) {
+            $this->addToMessageBag("PHP-Curl not installed or activated");
+            return false;
+        }
+
+        if (StringUtils::stringIsNullOrEmpty($this->remoteModeHost)) {
+            $this->addToMessageBag("You must specify the hostname or it's IP where the Validator is running in daemon mode");
+            return false;
+        }
+
+        if ($this->remoteModePort <= 0) {
+            $this->addToMessageBag("You must specify the port of the host where the Validator is running in daemon mode");
+            return false;
+        }
+
+        try {
+            $httpConnection = curl_init($this->getRemoteModeUrl());
+
+            curl_setopt($httpConnection, CURLOPT_RETURNTRANSFER, true);
+            curl_setopt($httpConnection, CURLOPT_HEADER, true);
+            curl_setopt($httpConnection, CURLOPT_FOLLOWLOCATION, true);
+            curl_setopt($httpConnection, CURLOPT_ENCODING, '');
+            curl_setopt($httpConnection, CURLOPT_AUTOREFERER, true);
+            curl_setopt($httpConnection, CURLOPT_CONNECTTIMEOUT, 10);
+            curl_setopt($httpConnection, CURLOPT_TIMEOUT, 120);
+
+            $response = curl_exec($httpConnection);
+
+            if ($response === false) {
+                $this->addToMessageBag("Failed to connect to the host where the Validator is running in daemon mode");
+                $this->addToMessageBag(curl_error($httpConnection));
+                return false;
+            }
+
+            $responseStatusCode = curl_getinfo($httpConnection, CURLINFO_HTTP_CODE);
+
+            curl_close($httpConnection);
+
+            if (($responseStatusCode < 200) || ($responseStatusCode >= 400)) {
+                $this->addToMessageBag("Failed to connect to the host where the Validator is running in daemon mode");
+                $this->addToMessageBag(curl_error($httpConnection));
+                return false;
+            }
+        } catch (Throwable $throwable) {
+            $this->addToMessageBag($throwable);
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
      * Download required files
      *
@@ -606,9 +830,15 @@
     private function downloadRequiredFiles(): bool
     {
+        if ($this->remoteModeEnabled === true) {
+            return true;
+        }
+
         if (!$this->runFileDownload($this->validatorDownloadUrl, $this->resolveAppZipFilename())) {
+            $this->addToMessageBag(sprintf("Unable to download from %s containing the JAVA-Application", $this->validatorDownloadUrl));
             return false;
         }
 
         if (!$this->runFileDownload($this->validatorScenarioDownloadUrl, $this->resolveScenatioZipFilename())) {
+            $this->addToMessageBag(sprintf("Unable to download from %s containing the validation scenarios", $this->validatorScenarioDownloadUrl));
             return false;
         }
@@ -624,14 +854,18 @@
     private function unpackRequiredFiles(): bool
     {
+        if ($this->remoteModeEnabled === true) {
+            return true;
+        }
+
         $validatorAppFile = $this->resolveAppZipFilename();
         $validatorScenarioFile = $this->resolveScenatioZipFilename();
 
-        if ($this->unpackRequiredFile($validatorAppFile) !== true) {
-            $this->addToMessageBag("Unable to unpack archive $validatorAppFile containing the JAVA-Application");
-            return false;
-        }
-
-        if ($this->unpackRequiredFile($validatorScenarioFile) !== true) {
-            $this->addToMessageBag("Unable to unpack archive $validatorScenarioFile containing the validation scenarios");
+        if (!$this->unpackRequiredFile($validatorAppFile)) {
+            $this->addToMessageBag(sprintf("Unable to unpack archive %s containing the JAVA-Application", $validatorAppFile));
+            return false;
+        }
+
+        if (!$this->unpackRequiredFile($validatorScenarioFile)) {
+            $this->addToMessageBag(sprintf("Unable to unpack archive %s containing the validation scenarios", $validatorScenarioFile));
             return false;
         }
@@ -648,7 +882,12 @@
     private function unpackRequiredFile(string $filename): bool
     {
-        $zip = new ZipArchive();
-
-        if ($zip->open($filename) !== true) {
+        if ($this->remoteModeEnabled === true) {
+            return true;
+        }
+
+        $zipArchive = new ZipArchive();
+
+        if ($zipArchive->open($filename) !== true) {
+            $this->addToMessageBag(sprintf("Failed to open ZIP archive %s", $filename));
             return false;
         }
@@ -656,6 +895,6 @@
         $numFilesExists = 0;
 
-        for ($i = 0; $i < $zip->numFiles; $i++) {
-            $zipStat = $zip->statIndex($i);
+        for ($i = 0; $i < $zipArchive->numFiles; $i++) {
+            $zipStat = $zipArchive->statIndex($i);
             $realfilename = PathUtils::combinePathWithFile($this->resolveBaseDirectory(), $zipStat['name']);
             if (file_exists($realfilename)) {
@@ -664,14 +903,15 @@
         }
 
-        if ($numFilesExists == $zip->numFiles) {
+        if ($numFilesExists == $zipArchive->numFiles) {
             return true;
         }
 
-        if ($zip->extractTo($this->resolveBaseDirectory()) !== true) {
-            $zip->close();
-            return false;
-        }
-
-        $zip->close();
+        if (!$zipArchive->extractTo($this->resolveBaseDirectory())) {
+            $zipArchive->close();
+            $this->addToMessageBag(sprintf("Failed to extract ZIP archive %s", $filename));
+            return false;
+        }
+
+        $zipArchive->close();
 
         return true;
@@ -685,5 +925,25 @@
     private function performValidation(): bool
     {
-        if (file_put_contents($this->resolveFileToValidateFilename(), $this->document->serializeAsXml()) === false) {
+        if ($this->remoteModeEnabled === true) {
+            return $this->performValidationRemote();
+        }
+
+        return $this->performValidationLocal();
+    }
+
+    /**
+     * Runs the validator java application locally
+     *
+     * @return boolean
+     */
+    private function performValidationLocal(): bool
+    {
+        if ($this->remoteModeEnabled === true) {
+            return true;
+        }
+
+        $this->resetFileToValidateFilename();
+
+        if (file_put_contents($this->resolveFileToValidateFilename(), $this->getDocumentContent()) === false) {
             $this->addToMessageBag("Cannot create temporary file which contains the XML to validate");
             return false;
@@ -702,5 +962,57 @@
 
         if (!$this->runValidationApplication($applicationOptions, $this->resolveBaseDirectory())) {
-            $this->parseValidatorXmlReport();
+            $this->parseValidatorXmlReportByFile();
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Runs the validator java application on the remote host
+     *
+     * @return boolean
+     */
+    private function performValidationRemote(): bool
+    {
+        if ($this->remoteModeEnabled !== true) {
+            return true;
+        }
+
+        try {
+            $httpConnection = curl_init($this->getRemoteModeUrl());
+
+            curl_setopt($httpConnection, CURLOPT_RETURNTRANSFER, true);
+            curl_setopt($httpConnection, CURLOPT_HEADER, true);
+            curl_setopt($httpConnection, CURLOPT_FOLLOWLOCATION, true);
+            curl_setopt($httpConnection, CURLOPT_ENCODING, '');
+            curl_setopt($httpConnection, CURLOPT_AUTOREFERER, true);
+            curl_setopt($httpConnection, CURLOPT_CONNECTTIMEOUT, 10);
+            curl_setopt($httpConnection, CURLOPT_TIMEOUT, 120);
+            curl_setopt($httpConnection, CURLOPT_POST, true);
+            curl_setopt($httpConnection, CURLOPT_POSTFIELDS, $this->getDocumentContent());
+            curl_setopt($httpConnection, CURLOPT_HTTPHEADER, ["Content-Type: application/xml"]);
+
+            $response = curl_exec($httpConnection);
+
+            if ($response === false) {
+                $this->addToMessageBag("Failed to connect to the host where the Validator is running in daemon mode");
+                $this->addToMessageBag(curl_error($httpConnection));
+                return false;
+            }
+
+            $responseStatusCode = curl_getinfo($httpConnection, CURLINFO_HTTP_CODE);
+
+            curl_close($httpConnection);
+
+            if (($responseStatusCode < 200) || ($responseStatusCode >= 400)) {
+                if (preg_match('/<\?xml.*?\?>.*<\/.+>/s', $response, $matches)) {
+                    $this->parseValidatorXmlReportByContent($matches[0]);
+                }
+
+                return false;
+            }
+        } catch (Throwable $throwable) {
+            $this->addToMessageBag($throwable);
             return false;
         }
@@ -715,5 +1027,5 @@
      * @return void
      */
-    private function parseValidatorXmlReport(): void
+    private function parseValidatorXmlReportByFile(): void
     {
         $reportFilename =
@@ -730,4 +1042,35 @@
         $domDocument->load($reportFilename);
 
+        $this->parseValidatorXmlReportByDomDocument($domDocument);
+    }
+
+    /**
+     * Parses the XML content string containing the response from the validation app (JAVA application) and put errors
+     * to messagebag
+     *
+     * @param  string $xmlContent
+     * @return void
+     */
+    private function parseValidatorXmlReportByContent(string $xmlContent): void
+    {
+        if (StringUtils::stringIsNullOrEmpty($xmlContent)) {
+            return;
+        }
+
+        $domDocument = new DOMDocument();
+        $domDocument->loadXML($xmlContent);
+
+        $this->parseValidatorXmlReportByDomDocument($domDocument);
+    }
+
+    /**
+     * Parses the XML DOMDocument containing the response from the validation app (JAVA application) and put errors
+     * to messagebag
+     *
+     * @param  DOMDocument $domDocument
+     * @return void
+     */
+    private function parseValidatorXmlReportByDomDocument(DOMDocument $domDocument): void
+    {
         $domXPath = new DOMXPath($domDocument);
 
@@ -745,8 +1088,8 @@
 
         foreach ($resultAreas as $resultArea) {
-            $queryResult = $domXPath->query("//rep:report/rep:scenarioMatched/rep:validationStepResult[@id='$resultArea']/s:resource/s:name");
+            $queryResult = $domXPath->query(sprintf("//rep:report/rep:scenarioMatched/rep:validationStepResult[@id='%s']/s:resource/s:name", $resultArea));
             $resourceName = isset($queryResult[0]) ? $queryResult[0]->nodeValue : $resultArea;
             foreach ($messageTypeMaps as $messageType => $reportMessageType) {
-                $queryResult = $domXPath->query("//rep:report/rep:scenarioMatched/rep:validationStepResult[@id='$resultArea']/rep:message[@level='$reportMessageType']");
+                $queryResult = $domXPath->query(sprintf("//rep:report/rep:scenarioMatched/rep:validationStepResult[@id='%s']/rep:message[@level='%s']", $resultArea, $reportMessageType));
                 foreach ($queryResult as $queryItem) {
                     $this->addToMessageBag(sprintf("%s: %s", $resourceName, $queryItem->nodeValue), $messageType);
@@ -763,4 +1106,8 @@
     private function cleanupBaseDirectory(): void
     {
+        if ($this->remoteModeEnabled === true) {
+            return;
+        }
+
         if ($this->cleanupBaseDirectoryIsDisabled === true) {
             return;
@@ -782,4 +1129,8 @@
     private function cleanupBaseDirectoryInternal(string $directoryToRemove): void
     {
+        if ($this->remoteModeEnabled === true) {
+            return;
+        }
+
         if (!is_dir($directoryToRemove)) {
             return;
@@ -789,5 +1140,5 @@
 
         foreach ($objects as $object) {
-            if ($object != "." && $object != "..") {
+            if ($object !== "." && $object !== "..") {
                 $fullFilename = PathUtils::combinePathWithFile($directoryToRemove, $object);
                 if (is_dir($fullFilename) && !is_link($fullFilename)) {
@@ -808,5 +1159,4 @@
      * @param  array  $command
      * @param  string $workingdirectory
-     * @param  string $processOutput
      * @return boolean
      */
@@ -827,17 +1177,17 @@
                     $this->addToMessageBag("Parsing error. The commandline arguments specified are incorrect", static::MSG_TYPE_VALIDATIONERROR);
                 }
+
                 if ($process->getExitCode() == -2) {
                     $this->addToMessageBag("Configuration error. There is an error loading the configuration and/or validation targets", static::MSG_TYPE_VALIDATIONERROR);
                 }
+
                 if ($process->getExitCode() > 0) {
                     $this->addToMessageBag("Validation error. One ore more files were rejected", static::MSG_TYPE_VALIDATIONERROR);
                 }
+
                 return false;
             }
-        } catch (Exception $e) {
-            $this->addToMessageBag($e, static::MSG_TYPE_VALIDATIONERROR);
-            return false;
-        } catch (Throwable $e) {
-            $this->addToMessageBag($e, static::MSG_TYPE_VALIDATIONERROR);
+        } catch (Throwable $throwable) {
+            $this->addToMessageBag($throwable, static::MSG_TYPE_VALIDATIONERROR);
             return false;
         }
@@ -860,10 +1210,8 @@
                 return true;
             }
+
             file_put_contents($toFilePath, file_get_contents($url));
-        } catch (Exception $e) {
-            $this->addToMessageBag($e);
-            return false;
-        } catch (Throwable $e) {
-            $this->addToMessageBag($e);
+        } catch (Throwable $throwable) {
+            $this->addToMessageBag($throwable);
             return false;
         }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdObjectHelper.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdObjectHelper.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdObjectHelper.php	(revision 8504)
@@ -15,4 +15,5 @@
 use horstoeko\stringmanagement\StringUtils;
 use horstoeko\zugferd\exception\ZugferdUnknownDateFormatException;
+use horstoeko\zugferd\exception\ZugferdUnsupportedMimetype;
 use horstoeko\zugferd\ZugferdProfileResolver;
 
@@ -45,5 +46,5 @@
      * A list of supported mimetypes by binaryattachments
      */
-    const SUPPORTEDTMIMETYPES = [
+    public const SUPPORTEDTMIMETYPES = [
         "application/pdf",
         "image/png",
@@ -58,6 +59,4 @@
      * Constructor
      *
-     * @codeCoverageIgnore
-     *
      * @param integer $profile
      */
@@ -148,10 +147,10 @@
         }
 
-        $codetype = $this->createClassInstance('udt\CodeType', $value);
-
-        $this->tryCall($codetype, 'setListID', $listID);
-        $this->tryCall($codetype, 'setListVersionID', $listVersionID);
-
-        return $codetype;
+        $codeType = $this->createClassInstance('udt\CodeType', $value);
+
+        $this->tryCall($codeType, 'setListID', $listID);
+        $this->tryCall($codeType, 'setListVersionID', $listVersionID);
+
+        return $codeType;
     }
 
@@ -168,9 +167,9 @@
         }
 
-        $indicator = $this->createClassInstance('udt\IndicatorType');
-
-        $this->tryCall($indicator, 'setIndicator', $value);
-
-        return $indicator;
+        $indicatorType = $this->createClassInstance('udt\IndicatorType');
+
+        $this->tryCall($indicatorType, 'setIndicator', $value);
+
+        return $indicatorType;
     }
 
@@ -188,15 +187,16 @@
             return null;
         }
+
         if (self::isNullOrEmpty($content)) {
             return null;
         }
 
-        $note = $this->createClassInstance('ram\NoteType');
-
-        $this->tryCall($note, 'setContentCode', $this->getCodeType($contentCode));
-        $this->tryCall($note, 'setSubjectCode', $this->getCodeType($subjectCode));
-        $this->tryCall($note, 'setContent', $this->getTextType($content));
-
-        return $note;
+        $noteType = $this->createClassInstance('ram\NoteType');
+
+        $this->tryCall($noteType, 'setContentCode', $this->getCodeType($contentCode));
+        $this->tryCall($noteType, 'setSubjectCode', $this->getCodeType($subjectCode));
+        $this->tryCall($noteType, 'setContent', $this->getTextType($content));
+
+        return $noteType;
     }
 
@@ -204,21 +204,21 @@
      * Get formatted issue date
      *
-     * @param  DateTime|null $datetime
-     * @return object|null
-     */
-    public function getFormattedDateTimeType(?DateTime $datetime = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $date2 = $this->createClassInstance('qdt\FormattedDateTimeType\DateTimeStringAType');
-        $this->tryCall($date2, "value", $datetime->format("Ymd"));
-        $this->tryCall($date2, "setFormat", "102");
-
-        $date = $this->createClassInstance('qdt\FormattedDateTimeType');
-        $this->tryCall($date, "setDateTimeString", $date2);
-
-        return $date;
+     * @param  DateTime|null $dateTime
+     * @return object|null
+     */
+    public function getFormattedDateTimeType(?DateTime $dateTime = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $dateTimeStringAType = $this->createClassInstance('qdt\FormattedDateTimeType\DateTimeStringAType');
+        $this->tryCall($dateTimeStringAType, "value", $dateTime->format("Ymd"));
+        $this->tryCall($dateTimeStringAType, "setFormat", "102");
+
+        $formattedDateTimeType = $this->createClassInstance('qdt\FormattedDateTimeType');
+        $this->tryCall($formattedDateTimeType, "setDateTimeString", $dateTimeStringAType);
+
+        return $formattedDateTimeType;
     }
 
@@ -226,21 +226,21 @@
      * Get formatted issue date
      *
-     * @param  DateTime|null $datetime
-     * @return object|null
-     */
-    public function getDateTimeType(?DateTime $datetime = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $date2 = $this->createClassInstance('udt\DateTimeType\DateTimeStringAType');
-        $this->tryCall($date2, "value", $datetime->format("Ymd"));
-        $this->tryCall($date2, "setFormat", "102");
-
-        $date = $this->createClassInstance('udt\DateTimeType');
-        $this->tryCall($date, "setDateTimeString", $date2);
-
-        return $date;
+     * @param  DateTime|null $dateTime
+     * @return object|null
+     */
+    public function getDateTimeType(?DateTime $dateTime = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $dateTimeStringAType = $this->createClassInstance('udt\DateTimeType\DateTimeStringAType');
+        $this->tryCall($dateTimeStringAType, "value", $dateTime->format("Ymd"));
+        $this->tryCall($dateTimeStringAType, "setFormat", "102");
+
+        $dateTimeType = $this->createClassInstance('udt\DateTimeType');
+        $this->tryCall($dateTimeType, "setDateTimeString", $dateTimeStringAType);
+
+        return $dateTimeType;
     }
 
@@ -248,21 +248,21 @@
      * Get date
      *
-     * @param  DateTime|null $datetime
-     * @return object|null
-     */
-    public function getDateType(?DateTime $datetime = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $date2 = $this->createClassInstance('udt\DateType\DateStringAType');
-        $this->tryCall($date2, "value", $datetime->format("Ymd"));
-        $this->tryCall($date2, "setFormat", "102");
-
-        $date = $this->createClassInstance('udt\DateType');
-        $this->tryCall($date, "setDateString", $date2);
-
-        return $date;
+     * @param  DateTime|null $dateTime
+     * @return object|null
+     */
+    public function getDateType(?DateTime $dateTime = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $dateStringAType = $this->createClassInstance('udt\DateType\DateStringAType');
+        $this->tryCall($dateStringAType, "value", $dateTime->format("Ymd"));
+        $this->tryCall($dateStringAType, "setFormat", "102");
+
+        $dateType = $this->createClassInstance('udt\DateType');
+        $this->tryCall($dateType, "setDateString", $dateStringAType);
+
+        return $dateType;
     }
 
@@ -279,14 +279,15 @@
             return null;
         }
+
         if (self::isNullOrEmpty($value)) {
             return null;
         }
 
-        $amount = $this->createClassInstance('udt\AmountType');
-
-        $this->tryCall($amount, "value", $value);
-        $this->tryCall($amount, "setCurrencyID", $currencyCode);
-
-        return $amount;
+        $amountType = $this->createClassInstance('udt\AmountType');
+
+        $this->tryCall($amountType, "value", $value);
+        $this->tryCall($amountType, "setCurrencyID", $currencyCode);
+
+        return $amountType;
     }
 
@@ -303,9 +304,9 @@
         }
 
-        $amount = $this->createClassInstance('udt\PercentType');
-
-        $this->tryCall($amount, "value", $value);
-
-        return $amount;
+        $percentType = $this->createClassInstance('udt\PercentType');
+
+        $this->tryCall($percentType, "value", $value);
+
+        return $percentType;
     }
 
@@ -322,14 +323,15 @@
             return null;
         }
+
         if (self::isNullOrEmpty($value)) {
             return null;
         }
 
-        $amount = $this->createClassInstance('udt\QuantityType');
-
-        $this->tryCall($amount, "value", $value);
-        $this->tryCall($amount, "setUnitCode", $unitCode);
-
-        return $amount;
+        $quantityType = $this->createClassInstance('udt\QuantityType');
+
+        $this->tryCall($quantityType, "value", $value);
+        $this->tryCall($quantityType, "setUnitCode", $unitCode);
+
+        return $quantityType;
     }
 
@@ -346,14 +348,15 @@
             return null;
         }
+
         if (self::isNullOrEmpty($value)) {
             return null;
         }
 
-        $measure = $this->createClassInstance('udt\MeasureType');
-
-        $this->tryCall($measure, "value", $value);
-        $this->tryCall($measure, "setUnitCode", $unitCode);
-
-        return $measure;
+        $measureType = $this->createClassInstance('udt\MeasureType');
+
+        $this->tryCall($measureType, "value", $value);
+        $this->tryCall($measureType, "setUnitCode", $unitCode);
+
+        return $measureType;
     }
 
@@ -389,9 +392,9 @@
         }
 
-        $category = $this->createClassInstance('qdt\TaxCategoryCodeType');
-
-        $this->tryCall($category, "value", $taxCategoryCode);
-
-        return $category;
+        $taxCategoryCodeType = $this->createClassInstance('qdt\TaxCategoryCodeType');
+
+        $this->tryCall($taxCategoryCodeType, "value", $taxCategoryCode);
+
+        return $taxCategoryCodeType;
     }
 
@@ -408,9 +411,9 @@
         }
 
-        $category = $this->createClassInstance('qdt\TaxTypeCodeType');
-
-        $this->tryCall($category, "value", $taxTypeCode);
-
-        return $category;
+        $taxTypeCodeType = $this->createClassInstance('qdt\TaxTypeCodeType');
+
+        $this->tryCall($taxTypeCodeType, "value", $taxTypeCode);
+
+        return $taxTypeCodeType;
     }
 
@@ -427,9 +430,9 @@
         }
 
-        $category = $this->createClassInstance('qdt\TimeReferenceCodeType');
-
-        $this->tryCall($category, "value", $value);
-
-        return $category;
+        $timeReferenceCodeType = $this->createClassInstance('qdt\TimeReferenceCodeType');
+
+        $this->tryCall($timeReferenceCodeType, "value", $value);
+
+        return $timeReferenceCodeType;
     }
 
@@ -437,24 +440,24 @@
      * Get Specified Period type
      *
-     * @param  DateTime|null $startdate
+     * @param  DateTime|null $startDate
      * @param  DateTime|null $endDate
-     * @param  DateTime|null $completedate
+     * @param  DateTime|null $completeDate
      * @param  string|null   $description
      * @return object|null
      */
-    public function getSpecifiedPeriodType(?DateTime $startdate = null, ?DateTime $endDate = null, ?DateTime $completedate = null, ?string $description = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $period = $this->createClassInstance('ram\SpecifiedPeriodType');
-
-        $this->tryCall($period, 'setDescription', $this->getTextType($description));
-        $this->tryCall($period, 'setStartDateTime', $this->getDateTimeType($startdate));
-        $this->tryCall($period, 'setEndDateTime', $this->getDateTimeType($endDate));
-        $this->tryCall($period, 'setCompleteDateTime', $this->getDateTimeType($completedate));
-
-        return $period;
+    public function getSpecifiedPeriodType(?DateTime $startDate = null, ?DateTime $endDate = null, ?DateTime $completeDate = null, ?string $description = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $specifiedPeriodType = $this->createClassInstance('ram\SpecifiedPeriodType');
+
+        $this->tryCall($specifiedPeriodType, 'setDescription', $this->getTextType($description));
+        $this->tryCall($specifiedPeriodType, 'setStartDateTime', $this->getDateTimeType($startDate));
+        $this->tryCall($specifiedPeriodType, 'setEndDateTime', $this->getDateTimeType($endDate));
+        $this->tryCall($specifiedPeriodType, 'setCompleteDateTime', $this->getDateTimeType($completeDate));
+
+        return $specifiedPeriodType;
     }
 
@@ -462,22 +465,22 @@
      * Get a BinaryObjectType object
      *
-     * @param  string|null $binarydata
+     * @param  string|null $binaryData
      * @param  string|null $mimetype
      * @param  string|null $filename
      * @return object|null
      */
-    public function getBinaryObjectType(?string $binarydata = null, ?string $mimetype = null, ?string $filename = null): ?object
-    {
-        if (self::isNullOrEmpty($binarydata) || self::isNullOrEmpty($mimetype) || self::isNullOrEmpty($filename)) {
-            return null;
-        }
-
-        $binaryobject = $this->createClassInstance('udt\BinaryObjectType');
-
-        $this->tryCall($binaryobject, "value", $binarydata);
-        $this->tryCall($binaryobject, "setMimeCode", $mimetype);
-        $this->tryCall($binaryobject, "setFilename", $filename);
-
-        return $binaryobject;
+    public function getBinaryObjectType(?string $binaryData = null, ?string $mimetype = null, ?string $filename = null): ?object
+    {
+        if (self::isNullOrEmpty($binaryData) || self::isNullOrEmpty($mimetype) || self::isNullOrEmpty($filename)) {
+            return null;
+        }
+
+        $binaryObjectType = $this->createClassInstance('udt\BinaryObjectType');
+
+        $this->tryCall($binaryObjectType, "value", $binaryData);
+        $this->tryCall($binaryObjectType, "setMimeCode", $mimetype);
+        $this->tryCall($binaryObjectType, "setFilename", $filename);
+
+        return $binaryObjectType;
     }
 
@@ -485,53 +488,54 @@
      * Get a reference document object
      *
-     * @param  string|null       $issuerassignedid
-     * @param  string|null       $uriid
-     * @param  string|null       $lineid
-     * @param  string|null       $typecode
+     * @param  string|null       $issuerAssignedId
+     * @param  string|null       $uriId
+     * @param  string|null       $lineId
+     * @param  string|null       $typeCode
      * @param  string|array|null $name
-     * @param  string|null       $reftypecode
-     * @param  DateTime|null     $issueddate
-     * @param  string|null       $binarydatafilename
-     * @return object|null
-     */
-    public function getReferencedDocumentType(?string $issuerassignedid = null, ?string $uriid = null, ?string $lineid = null, ?string $typecode = null, $name = null, ?string $reftypecode = null, ?DateTime $issueddate = null, ?string $binarydatafilename = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $refdoctype = $this->createClassInstance('ram\ReferencedDocumentType', $issuerassignedid);
-
-        $this->tryCall($refdoctype, 'setIssuerAssignedID', $this->getIdType($issuerassignedid));
-        $this->tryCall($refdoctype, 'setURIID', $this->getIdType($uriid));
-        $this->tryCall($refdoctype, 'setLineID', $this->getIdType($lineid));
-        $this->tryCall($refdoctype, 'setTypeCode', $this->getCodeType($typecode));
-        $this->tryCall($refdoctype, 'setReferenceTypeCode', $this->getCodeType($reftypecode));
-        $this->tryCall($refdoctype, 'setFormattedIssueDateTime', $this->getFormattedDateTimeType($issueddate));
+     * @param  string|null       $refTypeCode
+     * @param  DateTime|null     $issueDate
+     * @param  string|null       $binaryDataFilename
+     * @return object|null
+     */
+    public function getReferencedDocumentType(?string $issuerAssignedId = null, ?string $uriId = null, ?string $lineId = null, ?string $typeCode = null, $name = null, ?string $refTypeCode = null, ?DateTime $issueDate = null, ?string $binaryDataFilename = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $referencedDocumentType = $this->createClassInstance('ram\ReferencedDocumentType', $issuerAssignedId);
+
+        $this->tryCall($referencedDocumentType, 'setIssuerAssignedID', $this->getIdType($issuerAssignedId));
+        $this->tryCall($referencedDocumentType, 'setURIID', $this->getIdType($uriId));
+        $this->tryCall($referencedDocumentType, 'setLineID', $this->getIdType($lineId));
+        $this->tryCall($referencedDocumentType, 'setTypeCode', $this->getCodeType($typeCode));
+        $this->tryCall($referencedDocumentType, 'setReferenceTypeCode', $this->getCodeType($refTypeCode));
+        $this->tryCall($referencedDocumentType, 'setFormattedIssueDateTime', $this->getFormattedDateTimeType($issueDate));
 
         foreach ($this->ensureStringArray($name) as $name) {
-            $this->tryCallAll($refdoctype, ['addToName', 'setName'], $this->getTextType($name));
-        }
-
-        if (StringUtils::stringIsNullOrEmpty($binarydatafilename) === false) {
-            if (FileUtils::fileExists($binarydatafilename)) {
-                $mimeDb = new MimeDb();
-                $mimeTypes = $mimeDb->findAllMimeTypesByExtension(FileUtils::getFileExtension($binarydatafilename));
+            $this->tryCallAll($referencedDocumentType, ['addToName', 'setName'], $this->getTextType($name));
+        }
+
+        if (StringUtils::stringIsNullOrEmpty($binaryDataFilename) === false && FileUtils::fileExists($binaryDataFilename)) {
+            $mimeDb = new MimeDb();
+            $mimeTypes = $mimeDb->findAllMimeTypesByExtension(FileUtils::getFileExtension($binaryDataFilename));
+            if (!is_null($mimeTypes)) {
                 $mimeTypesSupported = array_intersect($mimeTypes, self::SUPPORTEDTMIMETYPES);
-
-                if (count($mimeTypesSupported) > 0) {
-                    $content = FileUtils::fileToBase64($binarydatafilename);
+                if ($mimeTypesSupported !== []) {
+                    $content = FileUtils::fileToBase64($binaryDataFilename);
                     $this->tryCall(
-                        $refdoctype,
+                        $referencedDocumentType,
                         'setAttachmentBinaryObject',
-                        $this->getBinaryObjectType($content, $mimeTypesSupported[0], FileUtils::getFilenameWithExtension($binarydatafilename))
+                        $this->getBinaryObjectType($content, $mimeTypesSupported[0], FileUtils::getFilenameWithExtension($binaryDataFilename))
                     );
                 } else {
-                    throw new \Exception(sprintf("Invalid attachment. Mimetype not supported"));
+                    throw new ZugferdUnsupportedMimetype();
                 }
+            } else {
+                throw new ZugferdUnsupportedMimetype();
             }
         }
 
-        return $refdoctype;
+        return $referencedDocumentType;
     }
 
@@ -548,7 +552,5 @@
         }
 
-        $countryId = $this->createClassInstance('qdt\CountryIDType', $id);
-
-        return $countryId;
+        return $this->createClassInstance('qdt\CountryIDType', $id);
     }
 
@@ -565,56 +567,71 @@
         }
 
-        $tradeCountry = $this->createClassInstance('ram\TradeCountryType');
-
-        $this->tryCall($tradeCountry, 'setID', $this->getCountryIDType($id));
-
-        return $tradeCountry;
-    }
-
-    /**
-     * Undocumented function
-     *
-     * @return \horstoeko\zugferd\entities\basic\rsm\CrossIndustryInvoiceType|\horstoeko\zugferd\entities\basicwl\rsm\CrossIndustryInvoiceType|\horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoiceType|\horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoiceType
+        $tradeCountryType = $this->createClassInstance('ram\TradeCountryType');
+
+        $this->tryCall($tradeCountryType, 'setID', $this->getCountryIDType($id));
+
+        return $tradeCountryType;
+    }
+
+    /**
+     * Return the main invoice object
+     *
+     * @return \horstoeko\zugferd\entities\basic\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\basicwl\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice|\horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice
      */
     public function getCrossIndustryInvoice()
     {
-        $result = $this->createClassInstance('rsm\CrossIndustryInvoice');
-        $result->setExchangedDocumentContext($this->createClassInstance('ram\ExchangedDocumentContextType'));
-        $result->setExchangedDocument($this->createClassInstance('ram\ExchangedDocumentType'));
-        $result->setSupplyChainTradeTransaction($this->createClassInstance('ram\SupplyChainTradeTransactionType'));
-        $result->getExchangedDocumentContext()->setGuidelineSpecifiedDocumentContextParameter($this->createClassInstance('ram\DocumentContextParameterType'));
-        $result->getExchangedDocumentContext()->getGuidelineSpecifiedDocumentContextParameter()->setID($this->getIdType($this->profiledef['contextparameter']));
+        $crossIndustryInvoice = $this->createClassInstance('rsm\CrossIndustryInvoice');
+
+        $crossIndustryInvoice->setExchangedDocumentContext($this->createClassInstance('ram\ExchangedDocumentContextType'));
+        $crossIndustryInvoice->setExchangedDocument($this->createClassInstance('ram\ExchangedDocumentType'));
+        $crossIndustryInvoice->setSupplyChainTradeTransaction($this->createClassInstance('ram\SupplyChainTradeTransactionType'));
+        $crossIndustryInvoice->getExchangedDocumentContext()->setGuidelineSpecifiedDocumentContextParameter($this->createClassInstance('ram\DocumentContextParameterType'));
+        $crossIndustryInvoice->getExchangedDocumentContext()->getGuidelineSpecifiedDocumentContextParameter()->setID($this->getIdType($this->profiledef['contextparameter']));
         if ($this->profiledef['businessprocess']) {
-            $result->getExchangedDocumentContext()->setBusinessProcessSpecifiedDocumentContextParameter($this->createClassInstance('ram\DocumentContextParameterType'));
-            $result->getExchangedDocumentContext()->getBusinessProcessSpecifiedDocumentContextParameter()->setID($this->getIdType($this->profiledef['businessprocess']));
-        }
-        $result->getSupplyChainTradeTransaction()->setApplicableHeaderTradeAgreement($this->createClassInstance('ram\HeaderTradeAgreementType'));
-        $result->getSupplyChainTradeTransaction()->setApplicableHeaderTradeDelivery($this->createClassInstance('ram\HeaderTradeDeliveryType'));
-        $result->getSupplyChainTradeTransaction()->setApplicableHeaderTradeSettlement($this->createClassInstance('ram\HeaderTradeSettlementType'));
-
-        return $result;
-    }
-
-    /**
-     * Tradeparty type^^
+            $crossIndustryInvoice->getExchangedDocumentContext()->setBusinessProcessSpecifiedDocumentContextParameter($this->createClassInstance('ram\DocumentContextParameterType'));
+            $crossIndustryInvoice->getExchangedDocumentContext()->getBusinessProcessSpecifiedDocumentContextParameter()->setID($this->getIdType($this->profiledef['businessprocess']));
+        }
+
+        $crossIndustryInvoice->getSupplyChainTradeTransaction()->setApplicableHeaderTradeAgreement($this->createClassInstance('ram\HeaderTradeAgreementType'));
+        $crossIndustryInvoice->getSupplyChainTradeTransaction()->setApplicableHeaderTradeDelivery($this->createClassInstance('ram\HeaderTradeDeliveryType'));
+        $crossIndustryInvoice->getSupplyChainTradeTransaction()->setApplicableHeaderTradeSettlement($this->createClassInstance('ram\HeaderTradeSettlementType'));
+
+        return $crossIndustryInvoice;
+    }
+
+    /**
+     * Tradeparty type
      *
      * @param  string|null $name
-     * @param  string|null $ID
+     * @param  string|null $id
      * @param  string|null $description
      * @return object|null
      */
-    public function getTradeParty(?string $name = null, ?string $ID = null, ?string $description = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $tradeParty = $this->createClassInstance('ram\TradePartyType');
-
-        $this->tryCall($tradeParty, "addToID", $this->getIdType($ID));
-        $this->tryCall($tradeParty, "setName", $this->getTextType($name));
-        $this->tryCall($tradeParty, "setDescription", $this->getTextType($description));
-
-        return $tradeParty;
+    public function getTradeParty(?string $name = null, ?string $id = null, ?string $description = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        return $this->getTradePartyAllowEmpty($name, $id, $description);
+    }
+
+    /**
+     * Tradeparty type (allow all nulls)
+     *
+     * @param  string|null $name
+     * @param  string|null $id
+     * @param  string|null $description
+     * @return object|null
+     */
+    public function getTradePartyAllowEmpty(?string $name = null, ?string $id = null, ?string $description = null): ?object
+    {
+        $tradePartyType = $this->createClassInstance('ram\TradePartyType');
+
+        $this->tryCall($tradePartyType, "addToID", $this->getIdType($id));
+        $this->tryCall($tradePartyType, "setName", $this->getTextType($name));
+        $this->tryCall($tradePartyType, "setDescription", $this->getTextType($description));
+
+        return $tradePartyType;
     }
 
@@ -622,30 +639,30 @@
      * Address type
      *
-     * @param  string|null $lineone
-     * @param  string|null $linetwo
-     * @param  string|null $linethree
-     * @param  string|null $postcode
+     * @param  string|null $lineOne
+     * @param  string|null $lineTwo
+     * @param  string|null $lineThree
+     * @param  string|null $postCode
      * @param  string|null $city
      * @param  string|null $country
-     * @param  string|null $subdivision
-     * @return object|null
-     */
-    public function getTradeAddress(?string $lineone = null, ?string $linetwo = null, ?string $linethree = null, ?string $postcode = null, ?string $city = null, ?string $country = null, ?string $subdivision = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $address = $this->createClassInstance('ram\TradeAddressType');
-
-        $this->tryCall($address, "setLineOne", $this->getTextType($lineone));
-        $this->tryCall($address, "setLineTwo", $this->getTextType($linetwo));
-        $this->tryCall($address, "setLineThree", $this->getTextType($linethree));
-        $this->tryCall($address, "setPostcodeCode", $this->getCodeType($postcode));
-        $this->tryCall($address, "setCityName", $this->getTextType($city));
-        $this->tryCall($address, "setCountryID", $this->getCountryIDType($country));
-        $this->tryCallAll($address, ["addToCountrySubDivisionName", "setCountrySubDivisionName"], $this->getTextType($subdivision));
-
-        return $address;
+     * @param  string|null $subDivision
+     * @return object|null
+     */
+    public function getTradeAddress(?string $lineOne = null, ?string $lineTwo = null, ?string $lineThree = null, ?string $postCode = null, ?string $city = null, ?string $country = null, ?string $subDivision = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $tradeAddressType = $this->createClassInstance('ram\TradeAddressType');
+
+        $this->tryCall($tradeAddressType, "setLineOne", $this->getTextType($lineOne));
+        $this->tryCall($tradeAddressType, "setLineTwo", $this->getTextType($lineTwo));
+        $this->tryCall($tradeAddressType, "setLineThree", $this->getTextType($lineThree));
+        $this->tryCall($tradeAddressType, "setPostcodeCode", $this->getCodeType($postCode));
+        $this->tryCall($tradeAddressType, "setCityName", $this->getTextType($city));
+        $this->tryCall($tradeAddressType, "setCountryID", $this->getCountryIDType($country));
+        $this->tryCall($tradeAddressType, "setCountrySubDivisionName", $this->getTextType($subDivision));
+
+        return $tradeAddressType;
     }
 
@@ -653,21 +670,21 @@
      * Legal organization type
      *
-     * @param  string|null $legalorgid
-     * @param  string|null $legalorgtype
-     * @param  string|null $legalorgname
-     * @return object|null
-     */
-    public function getLegalOrganization(?string $legalorgid = null, ?string $legalorgtype = null, ?string $legalorgname = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $legalorg = $this->createClassInstance('ram\LegalOrganizationType', $legalorgname);
-
-        $this->tryCall($legalorg, "setID", $this->getIdType($legalorgid, $legalorgtype));
-        $this->tryCall($legalorg, "setTradingBusinessName", $this->getTextType($legalorgname));
-
-        return $legalorg;
+     * @param  string|null $legalOrgId
+     * @param  string|null $legalOrgType
+     * @param  string|null $legalOrgName
+     * @return object|null
+     */
+    public function getLegalOrganization(?string $legalOrgId = null, ?string $legalOrgType = null, ?string $legalOrgName = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $legalOrganizationType = $this->createClassInstance('ram\LegalOrganizationType', $legalOrgName);
+
+        $this->tryCall($legalOrganizationType, "setID", $this->getIdType($legalOrgId, $legalOrgType));
+        $this->tryCall($legalOrganizationType, "setTradingBusinessName", $this->getTextType($legalOrgName));
+
+        return $legalOrganizationType;
     }
 
@@ -675,29 +692,30 @@
      * Contact type
      *
-     * @param  string|null $contactpersonname
-     * @param  string|null $contactdepartmentname
-     * @param  string|null $contactphoneno
-     * @param  string|null $contactfaxno
-     * @param  string|null $contactemailaddr
-     * @return object|null
-     */
-    public function getTradeContact(?string $contactpersonname = null, ?string $contactdepartmentname = null, ?string $contactphoneno = null, ?string $contactfaxno = null, ?string $contactemailaddr = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $contact = $this->createClassInstance('ram\TradeContactType', $contactpersonname);
-        $contactphone = $this->getUniversalCommunicationType($contactphoneno, null, null);
-        $contactfax = $this->getUniversalCommunicationType($contactfaxno, null, null);
-        $contactemail = $this->getUniversalCommunicationType(null, $contactemailaddr);
-
-        $this->tryCall($contact, "setPersonName", $this->getTextType($contactpersonname));
-        $this->tryCall($contact, "setDepartmentName", $this->getTextType($contactdepartmentname));
-        $this->tryCall($contact, "setTelephoneUniversalCommunication", $contactphone);
-        $this->tryCall($contact, "setFaxUniversalCommunication", $contactfax);
-        $this->tryCall($contact, "setEmailURIUniversalCommunication", $contactemail);
-
-        return $contact;
+     * @param  string|null $contactPersonName
+     * @param  string|null $contactDepartmentName
+     * @param  string|null $contactPhoneNo
+     * @param  string|null $contactFaxNo
+     * @param  string|null $contactEmailAddress
+     * @return object|null
+     */
+    public function getTradeContact(?string $contactPersonName = null, ?string $contactDepartmentName = null, ?string $contactPhoneNo = null, ?string $contactFaxNo = null, ?string $contactEmailAddress = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $tradeContactType = $this->createClassInstance('ram\TradeContactType', $contactPersonName);
+
+        $contactPhoneNo = $this->getUniversalCommunicationType($contactPhoneNo, null, null);
+        $contactFaxNo = $this->getUniversalCommunicationType($contactFaxNo, null, null);
+        $contactEmailAddress = $this->getUniversalCommunicationType(null, $contactEmailAddress);
+
+        $this->tryCall($tradeContactType, "setPersonName", $this->getTextType($contactPersonName));
+        $this->tryCall($tradeContactType, "setDepartmentName", $this->getTextType($contactDepartmentName));
+        $this->tryCall($tradeContactType, "setTelephoneUniversalCommunication", $contactPhoneNo);
+        $this->tryCall($tradeContactType, "setFaxUniversalCommunication", $contactFaxNo);
+        $this->tryCall($tradeContactType, "setEmailURIUniversalCommunication", $contactEmailAddress);
+
+        return $tradeContactType;
     }
 
@@ -706,20 +724,20 @@
      *
      * @param  string|null $number
-     * @param  string|null $uriid
-     * @param  string|null $urischeme
-     * @return object|null
-     */
-    public function getUniversalCommunicationType(?string $number = null, ?string $uriid = null, ?string $urischeme = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $communication = $this->createClassInstance('ram\UniversalCommunicationType');
-
-        $this->tryCall($communication, "setCompleteNumber", $this->getTextType($number));
-        $this->tryCall($communication, "setURIID", $this->getIdType($uriid, $urischeme));
-
-        return $communication;
+     * @param  string|null $uriId
+     * @param  string|null $uriScheme
+     * @return object|null
+     */
+    public function getUniversalCommunicationType(?string $number = null, ?string $uriId = null, ?string $uriScheme = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $communicationType = $this->createClassInstance('ram\UniversalCommunicationType');
+
+        $this->tryCall($communicationType, "setCompleteNumber", $this->getTextType($number));
+        $this->tryCall($communicationType, "setURIID", $this->getIdType($uriId, $uriScheme));
+
+        return $communicationType;
     }
 
@@ -727,23 +745,23 @@
      * Tax registration type
      *
-     * @param  string|null $taxregtype
-     * @param  string|null $taxregid
-     * @return object|null
-     */
-    public function getTaxRegistrationType(?string $taxregtype = null, ?string $taxregid = null): ?object
-    {
-        if (self::isNullOrEmpty($taxregtype)) {
-            return null;
-        }
-
-        if (self::isNullOrEmpty($taxregid)) {
-            return null;
-        }
-
-        $taxreg = $this->createClassInstance('ram\TaxRegistrationType');
-
-        $this->tryCall($taxreg, "setID", $this->getIdType($taxregid, $taxregtype));
-
-        return $taxreg;
+     * @param  string|null $taxRegType
+     * @param  string|null $taxRegId
+     * @return object|null
+     */
+    public function getTaxRegistrationType(?string $taxRegType = null, ?string $taxRegId = null): ?object
+    {
+        if (self::isNullOrEmpty($taxRegType)) {
+            return null;
+        }
+
+        if (self::isNullOrEmpty($taxRegId)) {
+            return null;
+        }
+
+        $taxRegistrationType = $this->createClassInstance('ram\TaxRegistrationType');
+
+        $this->tryCall($taxRegistrationType, "setID", $this->getIdType($taxRegId, $taxRegType));
+
+        return $taxRegistrationType;
     }
 
@@ -760,9 +778,24 @@
         }
 
-        $deliveryterms = $this->createClassInstance('ram\TradeDeliveryTermsType');
-
-        $this->tryCall($deliveryterms, "setDeliveryTypeCode", $this->getCodeType($code));
-
-        return $deliveryterms;
+        $tradeDeliveryTermsType = $this->createClassInstance('ram\TradeDeliveryTermsType');
+
+        $this->tryCall($tradeDeliveryTermsType, "setDeliveryTypeCode", $this->getTradeDeliveryTermsCodeType($code));
+
+        return $tradeDeliveryTermsType;
+    }
+
+    /**
+     * Delivery terms code type
+     *
+     * @param  string|null $code
+     * @return object|null
+     */
+    public function getTradeDeliveryTermsCodeType(?string $code = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        return $this->createClassInstance('qdt\DeliveryTermsCodeType', $code);
     }
 
@@ -780,10 +813,10 @@
         }
 
-        $procuringproject = $this->createClassInstance('ram\ProcuringProjectType');
-
-        $this->tryCall($procuringproject, "setID", $this->getIdType($id));
-        $this->tryCall($procuringproject, "setName", $this->getTextType($name));
-
-        return $procuringproject;
+        $procuringProjectType = $this->createClassInstance('ram\ProcuringProjectType');
+
+        $this->tryCall($procuringProjectType, "setID", $this->getIdType($id));
+        $this->tryCall($procuringProjectType, "setName", $this->getTextType($name));
+
+        return $procuringProjectType;
     }
 
@@ -800,9 +833,9 @@
         }
 
-        $supplychainevent = $this->createClassInstance('ram\SupplyChainEventType');
-
-        $this->tryCall($supplychainevent, "setOccurrenceDateTime", $this->getDateTimeType($date));
-
-        return $supplychainevent;
+        $supplyChainEventType = $this->createClassInstance('ram\SupplyChainEventType');
+
+        $this->tryCall($supplyChainEventType, "setOccurrenceDateTime", $this->getDateTimeType($date));
+
+        return $supplyChainEventType;
     }
 
@@ -821,10 +854,15 @@
         }
 
-        $card = $this->createClassInstance('ram\TradeSettlementFinancialCardType');
-
-        $this->tryCall($card, "setID", $this->getIdType($id, $type));
-        $this->tryCall($card, "setCardholderName", $this->getTextType($holderName));
-
-        return $card;
+        // At the moment PCI Security Standards Council has defined that the first 6 digits and
+        // last 4 digits are the maximum number of digits to be shown.
+
+        $id = substr($id, 0, 6) . substr($id, -4);
+
+        $tradeSettlementFinancialCardType = $this->createClassInstance('ram\TradeSettlementFinancialCardType');
+
+        $this->tryCall($tradeSettlementFinancialCardType, "setID", $this->getIdType($id, $type));
+        $this->tryCall($tradeSettlementFinancialCardType, "setCardholderName", $this->getTextType($holderName));
+
+        return $tradeSettlementFinancialCardType;
     }
 
@@ -841,9 +879,9 @@
         }
 
-        $card = $this->createClassInstance('ram\DebtorFinancialAccountType');
-
-        $this->tryCall($card, "setIBANID", $this->getIdType($iban));
-
-        return $card;
+        $debtorFinancialAccountType = $this->createClassInstance('ram\DebtorFinancialAccountType');
+
+        $this->tryCall($debtorFinancialAccountType, "setIBANID", $this->getIdType($iban));
+
+        return $debtorFinancialAccountType;
     }
 
@@ -853,20 +891,20 @@
      * @param  string|null $iban
      * @param  string|null $accountName
-     * @param  string|null $proprietaryID
-     * @return object|null
-     */
-    public function getCreditorFinancialAccountType(?string $iban = null, ?string $accountName = null, ?string $proprietaryID = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $account = $this->createClassInstance('ram\CreditorFinancialAccountType');
-
-        $this->tryCall($account, "setIBANID", $this->getIdType($iban));
-        $this->tryCall($account, "setAccountName", $this->getTextType($accountName));
-        $this->tryCall($account, "setProprietaryID", $this->getIdType($proprietaryID));
-
-        return $account;
+     * @param  string|null $proprietaryId
+     * @return object|null
+     */
+    public function getCreditorFinancialAccountType(?string $iban = null, ?string $accountName = null, ?string $proprietaryId = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $creditorFinancialAccountType = $this->createClassInstance('ram\CreditorFinancialAccountType');
+
+        $this->tryCall($creditorFinancialAccountType, "setIBANID", $this->getIdType($iban));
+        $this->tryCall($creditorFinancialAccountType, "setAccountName", $this->getTextType($accountName));
+        $this->tryCall($creditorFinancialAccountType, "setProprietaryID", $this->getIdType($proprietaryId));
+
+        return $creditorFinancialAccountType;
     }
 
@@ -883,9 +921,9 @@
         }
 
-        $institution = $this->createClassInstance('ram\CreditorFinancialInstitutionType');
-
-        $this->tryCall($institution, "setBICID", $this->getIdType($bic));
-
-        return $institution;
+        $creditorFinancialInstitutionType = $this->createClassInstance('ram\CreditorFinancialInstitutionType');
+
+        $this->tryCall($creditorFinancialInstitutionType, "setBICID", $this->getIdType($bic));
+
+        return $creditorFinancialInstitutionType;
     }
 
@@ -893,20 +931,20 @@
      * Get instance of TradeSettlementPaymentMeansType
      *
-     * @param  string|null $typecode
+     * @param  string|null $typeCode
      * @param  string|null $information
      * @return object|null
      */
-    public function getTradeSettlementPaymentMeansType(?string $typecode = null, ?string $information = null): ?object
-    {
-        if (self::isNullOrEmpty($typecode)) {
-            return null;
-        }
-
-        $paymentMeans = $this->createClassInstance('ram\TradeSettlementPaymentMeansType');
-
-        $this->tryCall($paymentMeans, "setTypeCode", $this->getCodeType($typecode));
-        $this->tryCall($paymentMeans, "setInformation", $this->getTextType($information));
-
-        return $paymentMeans;
+    public function getTradeSettlementPaymentMeansType(?string $typeCode = null, ?string $information = null): ?object
+    {
+        if (self::isNullOrEmpty($typeCode)) {
+            return null;
+        }
+
+        $tradeSettlementPaymentMeansType = $this->createClassInstance('ram\TradeSettlementPaymentMeansType');
+
+        $this->tryCall($tradeSettlementPaymentMeansType, "setTypeCode", $this->getCodeType($typeCode));
+        $this->tryCall($tradeSettlementPaymentMeansType, "setInformation", $this->getTextType($information));
+
+        return $tradeSettlementPaymentMeansType;
     }
 
@@ -914,22 +952,24 @@
      * Get instance of TradePaymentTermsType
      *
-     * @param  string|null   $description
-     * @param  DateTime|null $dueDate
-     * @param  string|null   $directDebitMandateID
-     * @return object|null
-     */
-    public function getTradePaymentTermsType(?string $description = null, ?DateTime $dueDate = null, ?string $directDebitMandateID = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $paymentTerms = $this->createClassInstance('ram\TradePaymentTermsType');
-
-        $this->tryCall($paymentTerms, "setDescription", $this->getTextType($description));
-        $this->tryCall($paymentTerms, "setDueDateDateTime", $this->getDateTimeType($dueDate));
-        $this->tryCall($paymentTerms, "setDirectDebitMandateID", $this->getIdType($directDebitMandateID));
-
-        return $paymentTerms;
+     * @param  null|string   $description
+     * @param  null|DateTime $dueDate
+     * @param  null|string   $directDebitMandateID
+     * @param  null|float    $partialPaymentAmount
+     * @return null|object
+     */
+    public function getTradePaymentTermsType(?string $description = null, ?DateTime $dueDate = null, ?string $directDebitMandateID = null, ?float $partialPaymentAmount = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $tradePaymentTermsType = $this->createClassInstance('ram\TradePaymentTermsType');
+
+        $this->tryCall($tradePaymentTermsType, "setDescription", $this->getTextType($description));
+        $this->tryCall($tradePaymentTermsType, "setDueDateDateTime", $this->getDateTimeType($dueDate));
+        $this->tryCall($tradePaymentTermsType, "setDirectDebitMandateID", $this->getIdType($directDebitMandateID));
+        $this->tryCall($tradePaymentTermsType, "setPartialPaymentAmount", $this->getAmountType($partialPaymentAmount));
+
+        return $tradePaymentTermsType;
     }
 
@@ -951,13 +991,41 @@
         }
 
-        $discountTerms = $this->createClassInstance('ram\TradePaymentDiscountTermsType');
-
-        $this->tryCall($discountTerms, "setBasisDateTime", $this->getDateTimeType($basisDateTime));
-        $this->tryCall($discountTerms, "setBasisPeriodMeasure", $this->getMeasureType($basisPeriodMeasureValue, $basisPeriodMeasureUnitCode));
-        $this->tryCall($discountTerms, "setBasisAmount", $this->getAmountType($basisAmount));
-        $this->tryCall($discountTerms, "setCalculationPercent", $this->getPercentType($calculationPercent));
-        $this->tryCall($discountTerms, "setActualDiscountAmount", $this->getAmountType($actualDiscountAmount));
-
-        return $discountTerms;
+        $tradePaymentDiscountTermsType = $this->createClassInstance('ram\TradePaymentDiscountTermsType');
+
+        $this->tryCall($tradePaymentDiscountTermsType, "setBasisDateTime", $this->getDateTimeType($basisDateTime));
+        $this->tryCall($tradePaymentDiscountTermsType, "setBasisPeriodMeasure", $this->getMeasureType($basisPeriodMeasureValue, $basisPeriodMeasureUnitCode));
+        $this->tryCall($tradePaymentDiscountTermsType, "setBasisAmount", $this->getAmountType($basisAmount));
+        $this->tryCall($tradePaymentDiscountTermsType, "setCalculationPercent", $this->getPercentType($calculationPercent));
+        $this->tryCall($tradePaymentDiscountTermsType, "setActualDiscountAmount", $this->getAmountType($actualDiscountAmount));
+
+        return $tradePaymentDiscountTermsType;
+    }
+
+    /**
+     * Get instance of TradePaymentPenaltyTermsType
+     *
+     * @param  DateTime|null $basisDateTime
+     * @param  float|null    $basisPeriodMeasureValue
+     * @param  string|null   $basisPeriodMeasureUnitCode
+     * @param  float|null    $basisAmount
+     * @param  float|null    $calculationPercent
+     * @param  float|null    $actualPenaltyAmount
+     * @return object|null
+     */
+    public function getTradePaymentPenaltyTermsType(?DateTime $basisDateTime = null, ?float $basisPeriodMeasureValue = null, ?string $basisPeriodMeasureUnitCode = null, ?float $basisAmount = null, ?float $calculationPercent = null, ?float $actualPenaltyAmount = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $tradePaymentDiscountTermsType = $this->createClassInstance('ram\TradePaymentPenaltyTermsType');
+
+        $this->tryCall($tradePaymentDiscountTermsType, "setBasisDateTime", $this->getDateTimeType($basisDateTime));
+        $this->tryCall($tradePaymentDiscountTermsType, "setBasisPeriodMeasure", $this->getMeasureType($basisPeriodMeasureValue, $basisPeriodMeasureUnitCode));
+        $this->tryCall($tradePaymentDiscountTermsType, "setBasisAmount", $this->getAmountType($basisAmount));
+        $this->tryCall($tradePaymentDiscountTermsType, "setCalculationPercent", $this->getPercentType($calculationPercent));
+        $this->tryCall($tradePaymentDiscountTermsType, "setActualPenaltyAmount", $this->getAmountType($actualPenaltyAmount));
+
+        return $tradePaymentDiscountTermsType;
     }
 
@@ -985,19 +1053,19 @@
         }
 
-        $taxBreakdown = $this->createClassInstance('ram\TradeTaxType');
-
-        $this->tryCall($taxBreakdown, "setCalculatedAmount", $this->getAmountType($calculatedAmount));
-        $this->tryCall($taxBreakdown, "setTypeCode", $this->getTaxTypeCodeType($typeCode));
-        $this->tryCall($taxBreakdown, "setExemptionReason", $this->getTextType($exemptionReason));
-        $this->tryCall($taxBreakdown, "setBasisAmount", $this->getAmountType($basisAmount));
-        $this->tryCall($taxBreakdown, "setLineTotalBasisAmount", $this->getAmountType($lineTotalBasisAmount));
-        $this->tryCall($taxBreakdown, "setAllowanceChargeBasisAmount", $this->getAmountType($allowanceChargeBasisAmount));
-        $this->tryCall($taxBreakdown, "setCategoryCode", $this->getTaxCategoryCodeType($categoryCode));
-        $this->tryCall($taxBreakdown, "setExemptionReasonCode", $this->getCodeType($exemptionReasonCode));
-        $this->tryCall($taxBreakdown, "setTaxPointDate", $this->getDateType($taxPointDate));
-        $this->tryCall($taxBreakdown, "setDueDateTypeCode", $this->getTimeReferenceCodeType($dueDateTypeCode));
-        $this->tryCall($taxBreakdown, "setRateApplicablePercent", $this->getPercentType($rateApplicablePercent));
-
-        return $taxBreakdown;
+        $tradeTaxType = $this->createClassInstance('ram\TradeTaxType');
+
+        $this->tryCall($tradeTaxType, "setCalculatedAmount", $this->getAmountType($calculatedAmount));
+        $this->tryCall($tradeTaxType, "setTypeCode", $this->getTaxTypeCodeType($typeCode));
+        $this->tryCall($tradeTaxType, "setExemptionReason", $this->getTextType($exemptionReason));
+        $this->tryCall($tradeTaxType, "setBasisAmount", $this->getAmountType($basisAmount));
+        $this->tryCall($tradeTaxType, "setLineTotalBasisAmount", $this->getAmountType($lineTotalBasisAmount));
+        $this->tryCall($tradeTaxType, "setAllowanceChargeBasisAmount", $this->getAmountType($allowanceChargeBasisAmount));
+        $this->tryCall($tradeTaxType, "setCategoryCode", $this->getTaxCategoryCodeType($categoryCode));
+        $this->tryCall($tradeTaxType, "setExemptionReasonCode", $this->getCodeType($exemptionReasonCode));
+        $this->tryCall($tradeTaxType, "setTaxPointDate", $this->getDateType($taxPointDate));
+        $this->tryCall($tradeTaxType, "setDueDateTypeCode", $this->getTimeReferenceCodeType($dueDateTypeCode));
+        $this->tryCall($tradeTaxType, "setRateApplicablePercent", $this->getPercentType($rateApplicablePercent));
+
+        return $tradeTaxType;
     }
 
@@ -1026,20 +1094,20 @@
         }
 
-        $allowanceCharge = $this->createClassInstance('ram\TradeAllowanceChargeType');
-
-        $this->tryCall($allowanceCharge, "setChargeIndicator", $this->getIndicatorType($isCharge));
-        $this->tryCall($allowanceCharge, "setSequenceNumeric", $this->getNumericType($sequence));
-        $this->tryCall($allowanceCharge, "setCalculationPercent", $this->getPercentType($calculationPercent));
-        $this->tryCall($allowanceCharge, "setBasisAmount", $this->getAmountType($basisAmount));
-        $this->tryCall($allowanceCharge, "setBasisQuantity", $this->getQuantityType($basisQuantity, $basisQuantityUnitCode));
-        $this->tryCall($allowanceCharge, "setActualAmount", $this->getAmountType($actualAmount));
-        $this->tryCall($allowanceCharge, "setReasonCode", $this->getCodeType($reasonCode));
-        $this->tryCall($allowanceCharge, "setReason", $this->getTextType($reason));
-
-        if (!is_null($taxCategoryCode) && !is_null($taxTypeCode) && !is_null($rateApplicablePercent)) {
-            $this->tryCall($allowanceCharge, "setCategoryTradeTax", $this->getTradeTaxType($taxCategoryCode, $taxTypeCode, null, null, $rateApplicablePercent));
-        }
-
-        return $allowanceCharge;
+        $tradeAllowanceChargeType = $this->createClassInstance('ram\TradeAllowanceChargeType');
+
+        $this->tryCall($tradeAllowanceChargeType, "setChargeIndicator", $this->getIndicatorType($isCharge));
+        $this->tryCall($tradeAllowanceChargeType, "setSequenceNumeric", $this->getNumericType($sequence));
+        $this->tryCall($tradeAllowanceChargeType, "setCalculationPercent", $this->getPercentType($calculationPercent));
+        $this->tryCall($tradeAllowanceChargeType, "setBasisAmount", $this->getAmountType($basisAmount));
+        $this->tryCall($tradeAllowanceChargeType, "setBasisQuantity", $this->getQuantityType($basisQuantity, $basisQuantityUnitCode));
+        $this->tryCall($tradeAllowanceChargeType, "setActualAmount", $this->getAmountType($actualAmount));
+        $this->tryCall($tradeAllowanceChargeType, "setReasonCode", $this->getCodeType($reasonCode));
+        $this->tryCall($tradeAllowanceChargeType, "setReason", $this->getTextType($reason));
+
+        if (!is_null($taxCategoryCode) && !is_null($taxTypeCode)) {
+            $this->tryCall($tradeAllowanceChargeType, "setCategoryTradeTax", $this->getTradeTaxType($taxCategoryCode, $taxTypeCode, null, null, $rateApplicablePercent));
+        }
+
+        return $tradeAllowanceChargeType;
     }
 
@@ -1060,17 +1128,17 @@
         }
 
-        $logCharge = $this->createClassInstance('ram\LogisticsServiceChargeType');
-
-        $this->tryCall($logCharge, "setDescription", $this->getTextType($description));
-        $this->tryCall($logCharge, "setAppliedAmount", $this->getAmountType($appliedAmount));
+        $logisticsServiceChargeType = $this->createClassInstance('ram\LogisticsServiceChargeType');
+
+        $this->tryCall($logisticsServiceChargeType, "setDescription", $this->getTextType($description));
+        $this->tryCall($logisticsServiceChargeType, "setAppliedAmount", $this->getAmountType($appliedAmount));
 
         if (!is_null($taxCategoryCodes) && !is_null($taxTypeCodes) && !is_null($rateApplicablePercents)) {
             foreach ($rateApplicablePercents as $index => $rateApplicablePercent) {
                 $taxBreakdown = $this->getTradeTaxType($taxCategoryCodes[$index], $taxTypeCodes[$index], null, null, $rateApplicablePercent);
-                $this->tryCall($logCharge, "addToAppliedTradeTax", $taxBreakdown);
+                $this->tryCall($logisticsServiceChargeType, "addToAppliedTradeTax", $taxBreakdown);
             }
         }
 
-        return $logCharge;
+        return $logisticsServiceChargeType;
     }
 
@@ -1095,17 +1163,17 @@
         }
 
-        $summation = $this->createClassInstance('ram\TradeSettlementHeaderMonetarySummationType');
-
-        $this->tryCall($summation, "setLineTotalAmount", $this->getAmountType($lineTotalAmount));
-        $this->tryCall($summation, "setChargeTotalAmount", $this->getAmountType($chargeTotalAmount));
-        $this->tryCall($summation, "setAllowanceTotalAmount", $this->getAmountType($allowanceTotalAmount));
-        $this->tryCallAll($summation, ["addToTaxBasisTotalAmount", "setTaxBasisTotalAmount"], $this->getAmountType($taxBasisTotalAmount));
-        $this->tryCallAll($summation, ["addToTaxTotalAmount", "setTaxTotalAmount"], $this->getAmountType($taxTotalAmount));
-        $this->tryCall($summation, "setRoundingAmount", $this->getAmountType($roundingAmount));
-        $this->tryCallAll($summation, ["addToGrandTotalAmount", "setGrandTotalAmount"], $this->getAmountType($grandTotalAmount));
-        $this->tryCall($summation, "setTotalPrepaidAmount", $this->getAmountType($totalPrepaidAmount));
-        $this->tryCall($summation, "setDuePayableAmount", $this->getAmountType($duePayableAmount));
-
-        return $summation;
+        $tradeSettlementHeaderMonetarySummationType = $this->createClassInstance('ram\TradeSettlementHeaderMonetarySummationType');
+
+        $this->tryCall($tradeSettlementHeaderMonetarySummationType, "setLineTotalAmount", $this->getAmountType($lineTotalAmount));
+        $this->tryCall($tradeSettlementHeaderMonetarySummationType, "setChargeTotalAmount", $this->getAmountType($chargeTotalAmount));
+        $this->tryCall($tradeSettlementHeaderMonetarySummationType, "setAllowanceTotalAmount", $this->getAmountType($allowanceTotalAmount));
+        $this->tryCall($tradeSettlementHeaderMonetarySummationType, "setTaxBasisTotalAmount", $this->getAmountType($taxBasisTotalAmount));
+        $this->tryCallAll($tradeSettlementHeaderMonetarySummationType, ["addToTaxTotalAmount", "setTaxTotalAmount"], $this->getAmountType($taxTotalAmount));
+        $this->tryCall($tradeSettlementHeaderMonetarySummationType, "setRoundingAmount", $this->getAmountType($roundingAmount));
+        $this->tryCall($tradeSettlementHeaderMonetarySummationType, "setGrandTotalAmount", $this->getAmountType($grandTotalAmount));
+        $this->tryCall($tradeSettlementHeaderMonetarySummationType, "setTotalPrepaidAmount", $this->getAmountType($totalPrepaidAmount));
+        $this->tryCall($tradeSettlementHeaderMonetarySummationType, "setDuePayableAmount", $this->getAmountType($duePayableAmount));
+
+        return $tradeSettlementHeaderMonetarySummationType;
     }
 
@@ -1133,10 +1201,10 @@
         }
 
-        $account = $this->createClassInstance('ram\TradeAccountingAccountType');
-
-        $this->tryCall($account, "setID", $this->getIdType($id));
-        $this->tryCall($account, "setTypeCode", $this->getCodeType($typeCode));
-
-        return $account;
+        $tradeAccountingAccountType = $this->createClassInstance('ram\TradeAccountingAccountType');
+
+        $this->tryCall($tradeAccountingAccountType, "setID", $this->getIdType($id));
+        $this->tryCall($tradeAccountingAccountType, "setTypeCode", $this->getCodeType($typeCode));
+
+        return $tradeAccountingAccountType;
     }
 
@@ -1144,18 +1212,18 @@
      * Get Document line
      *
-     * @param  string|null $lineid
-     * @return object|null
-     */
-    public function getDocumentLineDocumentType(?string $lineid = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $doclinedoc = $this->createClassInstance('ram\DocumentLineDocumentType');
-
-        $this->tryCall($doclinedoc, "setLineID", $this->getIdType($lineid));
-
-        return $doclinedoc;
+     * @param  string|null $lineId
+     * @return object|null
+     */
+    public function getDocumentLineDocumentType(?string $lineId = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $documentLineDocumentType = $this->createClassInstance('ram\DocumentLineDocumentType');
+
+        $this->tryCall($documentLineDocumentType, "setLineID", $this->getIdType($lineId));
+
+        return $documentLineDocumentType;
     }
 
@@ -1163,5 +1231,5 @@
      * Get instance of SupplyChainTradeLineItemType
      *
-     * @param  string|null $lineid
+     * @param  string|null $lineId
      * @param  string|null $lineStatusCode
      * @param  string|null $lineStatusReasonCode
@@ -1169,26 +1237,28 @@
      * @return object|null
      */
-    public function getSupplyChainTradeLineItemType(?string $lineid = null, ?string $lineStatusCode = null, ?string $lineStatusReasonCode = null, bool $isTextPosition = false): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $line = $this->createClassInstance('ram\SupplyChainTradeLineItemType');
-        $doclinedoc = $this->getDocumentLineDocumentType($lineid);
-        $lineAgreement = $this->createClassInstance('ram\LineTradeAgreementType');
-        $lineDelivery = $this->createClassInstance('ram\LineTradeDeliveryType');
-        $lineSettlement = $this->createClassInstance('ram\LineTradeSettlementType');
-
-        $this->tryCall($line, "setAssociatedDocumentLineDocument", $doclinedoc);
+    public function getSupplyChainTradeLineItemType(?string $lineId = null, ?string $lineStatusCode = null, ?string $lineStatusReasonCode = null, bool $isTextPosition = false): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $supplyChainTradeLineItemType = $this->createClassInstance('ram\SupplyChainTradeLineItemType');
+
+        $doclinedoc = $this->getDocumentLineDocumentType($lineId);
+        $lineTradeAgreementType = $this->createClassInstance('ram\LineTradeAgreementType');
+        $lineTradeDeliveryType = $this->createClassInstance('ram\LineTradeDeliveryType');
+        $lineTradeSettlementType = $this->createClassInstance('ram\LineTradeSettlementType');
+
+        $this->tryCall($supplyChainTradeLineItemType, "setAssociatedDocumentLineDocument", $doclinedoc);
         $this->tryCall($doclinedoc, "setLineStatusCode", $this->getCodeType($lineStatusCode));
         $this->tryCall($doclinedoc, "setLineStatusReasonCode", $this->getCodeType($lineStatusReasonCode));
         if ($isTextPosition == false) {
-            $this->tryCall($line, "setSpecifiedLineTradeAgreement", $lineAgreement);
-            $this->tryCall($line, "setSpecifiedLineTradeDelivery", $lineDelivery);
-        }
-        $this->tryCall($line, "setSpecifiedLineTradeSettlement", $lineSettlement);
-
-        return $line;
+            $this->tryCall($supplyChainTradeLineItemType, "setSpecifiedLineTradeAgreement", $lineTradeAgreementType);
+            $this->tryCall($supplyChainTradeLineItemType, "setSpecifiedLineTradeDelivery", $lineTradeDeliveryType);
+        }
+
+        $this->tryCall($supplyChainTradeLineItemType, "setSpecifiedLineTradeSettlement", $lineTradeSettlementType);
+
+        return $supplyChainTradeLineItemType;
     }
 
@@ -1202,21 +1272,31 @@
      * @param  string|null $globalIDType
      * @param  string|null $globalID
-     * @return object|null
-     */
-    public function getTradeProductType(?string $name = null, ?string $description = null, ?string $sellerAssignedID = null, ?string $buyerAssignedID = null, ?string $globalIDType = null, ?string $globalID = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $product = $this->createClassInstance('ram\TradeProductType');
-
-        $this->tryCall($product, "setGlobalID", $this->getIdType($globalID, $globalIDType));
-        $this->tryCall($product, "setSellerAssignedID", $this->getIdType($sellerAssignedID));
-        $this->tryCall($product, "setBuyerAssignedID", $this->getIdType($buyerAssignedID));
-        $this->tryCall($product, "setName", $this->getTextType($name));
-        $this->tryCall($product, "setDescription", $this->getTextType($description));
-
-        return $product;
+     * @param  string|null $industryAssignedID
+     * @param  string|null $modelID
+     * @param  string|null $batchID
+     * @param  string|null $brandName
+     * @param  string|null $modelName
+     * @return object|null
+     */
+    public function getTradeProductType(?string $name = null, ?string $description = null, ?string $sellerAssignedID = null, ?string $buyerAssignedID = null, ?string $globalIDType = null, ?string $globalID = null, ?string $industryAssignedID = null, ?string $modelID = null, ?string $batchID = null, ?string $brandName = null, ?string $modelName = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $tradeProductType = $this->createClassInstance('ram\TradeProductType');
+
+        $this->tryCall($tradeProductType, "setGlobalID", $this->getIdType($globalID, $globalIDType));
+        $this->tryCall($tradeProductType, "setSellerAssignedID", $this->getIdType($sellerAssignedID));
+        $this->tryCall($tradeProductType, "setBuyerAssignedID", $this->getIdType($buyerAssignedID));
+        $this->tryCall($tradeProductType, "setName", $this->getTextType($name));
+        $this->tryCall($tradeProductType, "setDescription", $this->getTextType($description));
+        $this->tryCall($tradeProductType, "setIndustryAssignedID", $this->getIdType($industryAssignedID));
+        $this->tryCall($tradeProductType, "setModelID", $this->getIdType($modelID));
+        $this->tryCall($tradeProductType, "addToBatchID", $this->getIdType($batchID));
+        $this->tryCall($tradeProductType, "setBrandName", $this->getTextType($brandName));
+        $this->tryCall($tradeProductType, "setModelName", $this->getTextType($modelName));
+
+        return $tradeProductType;
     }
 
@@ -1237,12 +1317,12 @@
         }
 
-        $productCharacteristic = $this->createClassInstance('ram\ProductCharacteristicType');
-
-        $this->tryCall($productCharacteristic, "setTypeCode", $this->getCodeType($typeCode));
-        $this->tryCall($productCharacteristic, "setDescription", $this->getTextType($description));
-        $this->tryCall($productCharacteristic, "setValueMeasure", $this->getMeasureType($valueMeasure, $valueMeasureUnitCode));
-        $this->tryCall($productCharacteristic, "setValue", $this->getTextType($value));
-
-        return $productCharacteristic;
+        $productCharacteristicType = $this->createClassInstance('ram\ProductCharacteristicType');
+
+        $this->tryCall($productCharacteristicType, "setTypeCode", $this->getCodeType($typeCode));
+        $this->tryCall($productCharacteristicType, "setDescription", $this->getTextType($description));
+        $this->tryCall($productCharacteristicType, "setValueMeasure", $this->getMeasureType($valueMeasure, $valueMeasureUnitCode));
+        $this->tryCall($productCharacteristicType, "setValue", $this->getTextType($value));
+
+        return $productCharacteristicType;
     }
 
@@ -1262,10 +1342,10 @@
         }
 
-        $productClassification = $this->createClassInstance('ram\ProductClassificationType');
-
-        $this->tryCall($productClassification, "setClassCode", $this->getCodeType2($classCode, $listID, $listVersionID));
-        $this->tryCall($productClassification, "setClassName", $this->getTextType($className));
-
-        return $productClassification;
+        $productClassificationType = $this->createClassInstance('ram\ProductClassificationType');
+
+        $this->tryCall($productClassificationType, "setClassCode", $this->getCodeType2($classCode, $listID, $listVersionID));
+        $this->tryCall($productClassificationType, "setClassName", $this->getTextType($className));
+
+        return $productClassificationType;
     }
 
@@ -1277,4 +1357,5 @@
      * @param  string|null $sellerAssignedID
      * @param  string|null $buyerAssignedID
+     * @param  string|null $industryAssignedID
      * @param  string|null $name
      * @param  string|null $description
@@ -1283,20 +1364,21 @@
      * @return object|null
      */
-    public function getReferencedProductType(?string $globalID, ?string $globalIDType, ?string $sellerAssignedID, ?string $buyerAssignedID, ?string $name, ?string $description, ?float $unitQuantity, ?string $unitCode): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $referencedProduct = $this->createClassInstance('ram\ReferencedProductType');
-
-        $this->tryCallAll($referencedProduct, ["addToGlobalID", "setGlobalID"], $this->getIdType($globalID, $globalIDType));
-        $this->tryCall($referencedProduct, "setSellerAssignedID", $this->getIdType($sellerAssignedID));
-        $this->tryCall($referencedProduct, "setBuyerAssignedID", $this->getIdType($buyerAssignedID));
-        $this->tryCall($referencedProduct, "setName", $this->getTextType($name));
-        $this->tryCall($referencedProduct, "setDescription", $this->getTextType($description));
-        $this->tryCall($referencedProduct, "setUnitQuantity", $this->getQuantityType($unitQuantity, $unitCode));
-
-        return $referencedProduct;
+    public function getReferencedProductType(?string $globalID, ?string $globalIDType, ?string $sellerAssignedID, ?string $buyerAssignedID, ?string $industryAssignedID, ?string $name, ?string $description, ?float $unitQuantity, ?string $unitCode): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $referencedProductType = $this->createClassInstance('ram\ReferencedProductType');
+
+        $this->tryCallAll($referencedProductType, ["addToGlobalID", "setGlobalID"], $this->getIdType($globalID, $globalIDType));
+        $this->tryCall($referencedProductType, "setSellerAssignedID", $this->getIdType($sellerAssignedID));
+        $this->tryCall($referencedProductType, "setBuyerAssignedID", $this->getIdType($buyerAssignedID));
+        $this->tryCall($referencedProductType, "setIndustryAssignedID", $this->getIdType($industryAssignedID));
+        $this->tryCall($referencedProductType, "setName", $this->getTextType($name));
+        $this->tryCall($referencedProductType, "setDescription", $this->getTextType($description));
+        $this->tryCall($referencedProductType, "setUnitQuantity", $this->getQuantityType($unitQuantity, $unitCode));
+
+        return $referencedProductType;
     }
 
@@ -1315,10 +1397,10 @@
         }
 
-        $tradePrice = $this->createClassInstance('ram\TradePriceType');
-
-        $this->tryCall($tradePrice, "setChargeAmount", $this->getAmountType($amount));
-        $this->tryCall($tradePrice, "setBasisQuantity", $this->getQuantityType($basisQuantity, $basisQuantityUnitCode));
-
-        return $tradePrice;
+        $tradePriceType = $this->createClassInstance('ram\TradePriceType');
+
+        $this->tryCall($tradePriceType, "setChargeAmount", $this->getAmountType($amount));
+        $this->tryCall($tradePriceType, "setBasisQuantity", $this->getQuantityType($basisQuantity, $basisQuantityUnitCode));
+
+        return $tradePriceType;
     }
 
@@ -1326,20 +1408,28 @@
      * Get Line Summation
      *
-     * @param  float|null $lineTotalAmount
-     * @param  float|null $totalAllowanceChargeAmount
-     * @return object|null
-     */
-    public function getTradeSettlementLineMonetarySummationType(?float $lineTotalAmount = null, ?float $totalAllowanceChargeAmount = null): ?object
-    {
-        if (self::isAllNullOrEmpty(func_get_args())) {
-            return null;
-        }
-
-        $summation = $this->createClassInstance('ram\TradeSettlementLineMonetarySummationType');
-
-        $this->tryCall($summation, "setLineTotalAmount", $this->getAmountType($lineTotalAmount));
-        $this->tryCall($summation, "setTotalAllowanceChargeAmount", $this->getAmountType($totalAllowanceChargeAmount));
-
-        return $summation;
+     * @param  null|float $lineTotalAmount
+     * @param  null|float $chargeTotalAmount
+     * @param  null|float $allowanceTotalAmount
+     * @param  null|float $taxTotalAmount
+     * @param  null|float $grandTotalAmount
+     * @param  null|float $totalAllowanceChargeAmount
+     * @return null|object
+     */
+    public function getTradeSettlementLineMonetarySummationType(?float $lineTotalAmount = null, ?float $chargeTotalAmount = null, ?float $allowanceTotalAmount = null, ?float $taxTotalAmount = null, ?float $grandTotalAmount = null, ?float $totalAllowanceChargeAmount = null): ?object
+    {
+        if (self::isAllNullOrEmpty(func_get_args())) {
+            return null;
+        }
+
+        $tradeSettlementLineMonetarySummationType = $this->createClassInstance('ram\TradeSettlementLineMonetarySummationType');
+
+        $this->tryCall($tradeSettlementLineMonetarySummationType, "setLineTotalAmount", $this->getAmountType($lineTotalAmount));
+        $this->tryCall($tradeSettlementLineMonetarySummationType, "setChargeTotalAmount", $this->getAmountType($chargeTotalAmount));
+        $this->tryCall($tradeSettlementLineMonetarySummationType, "setAllowanceTotalAmount", $this->getAmountType($allowanceTotalAmount));
+        $this->tryCall($tradeSettlementLineMonetarySummationType, "setTaxTotalAmount", $this->getAmountType($taxTotalAmount));
+        $this->tryCall($tradeSettlementLineMonetarySummationType, "setGrandTotalAmount", $this->getAmountType($grandTotalAmount));
+        $this->tryCall($tradeSettlementLineMonetarySummationType, "setTotalAllowanceChargeAmount", $this->getAmountType($totalAllowanceChargeAmount));
+
+        return $tradeSettlementLineMonetarySummationType;
     }
 
@@ -1359,11 +1449,12 @@
         }
 
-        $currencyExchange = $this->createClassInstance('ram\TradeCurrencyExchangeType');
-
-        $this->tryCall($currencyExchange, "setSourceCurrencyCode", $this->getIdType($sourceCurrencyCode));
-        $this->tryCall($currencyExchange, "setTargetCurrencyCode", $this->getIdType($targetCurrencyCode));
-        $this->tryCall($currencyExchange, "setConversionRate", $this->getRateType($rate));
-
-        return $currencyExchange;
+        $tradeCurrencyExchangeType = $this->createClassInstance('ram\TradeCurrencyExchangeType');
+
+        $this->tryCall($tradeCurrencyExchangeType, "setSourceCurrencyCode", $this->getIdType($sourceCurrencyCode));
+        $this->tryCall($tradeCurrencyExchangeType, "setTargetCurrencyCode", $this->getIdType($targetCurrencyCode));
+        $this->tryCall($tradeCurrencyExchangeType, "setConversionRate", $this->getRateType($rate));
+        $this->tryCall($tradeCurrencyExchangeType, "setConversionRateDateTime", $this->getDateTimeType($rateDateTime));
+
+        return $tradeCurrencyExchangeType;
     }
 
@@ -1380,19 +1471,36 @@
             return null;
         }
+
+        $dateTimeString = trim($dateTimeString);
+
         if ($format == "102") {
             return DateTime::createFromFormat("Ymd", $dateTimeString);
-        } elseif ($format == "101") {
+        }
+
+        if ($format == "101") {
             return DateTime::createFromFormat("ymd", $dateTimeString);
-        } elseif ($format == "201") {
+        }
+
+        if ($format == "201") {
             return DateTime::createFromFormat("ymdHi", $dateTimeString);
-        } elseif ($format == "202") {
+        }
+
+        if ($format == "202") {
             return DateTime::createFromFormat("ymdHis", $dateTimeString);
-        } elseif ($format == "203") {
+        }
+
+        if ($format == "203") {
             return DateTime::createFromFormat("YmdHi", $dateTimeString);
-        } elseif ($format == "204") {
+        }
+
+        if ($format == "204") {
             return DateTime::createFromFormat("YmdHis", $dateTimeString);
-        } else {
-            throw new ZugferdUnknownDateFormatException($format);
-        }
+        }
+
+        if ($format == "610") {
+            return DateTime::createFromFormat("Ym", $dateTimeString)->modify('first day of')->modify('midnight');
+        }
+
+        throw new ZugferdUnknownDateFormatException($format);
     }
 
@@ -1405,7 +1513,9 @@
     public function getRateType(?float $rateValue): ?object
     {
-        $rate = $this->createClassInstance('udt\RateType');
-        $this->tryCall($rate, "value", $rateValue);
-        return $rate;
+        $rateType = $this->createClassInstance('udt\RateType');
+
+        $this->tryCall($rateType, "value", $rateValue);
+
+        return $rateType;
     }
 
@@ -1431,9 +1541,8 @@
      * Tries to call a method
      *
-     * @codeCoverageIgnore
-     * @param              object $instance
-     * @param              string $method
-     * @param              mixed  $value
-     * @return             ZugferdObjectHelper
+     * @param  object $instance
+     * @param  string $method
+     * @param  mixed  $value
+     * @return ZugferdObjectHelper
      */
     public function tryCall($instance, string $method, $value): ZugferdObjectHelper
@@ -1442,13 +1551,17 @@
             return $this;
         }
-        if (!$method) {
+
+        if ($method === '') {
             return $this;
         }
+
         if (self::isNullOrEmpty($value)) {
             return $this;
         }
+
         if ($this->methodExists($instance, $method)) {
             $instance->$method($value);
         }
+
         return $this;
     }
@@ -1457,9 +1570,8 @@
      * Try call all methods
      *
-     * @codeCoverageIgnore
-     * @param              object   $instance
-     * @param              string[] $methods
-     * @param              mixed    $value
-     * @return             ZugferdObjectHelper
+     * @param  object   $instance
+     * @param  string[] $methods
+     * @param  mixed    $value
+     * @return ZugferdObjectHelper
      */
     public function tryCallAll($instance, array $methods, $value): ZugferdObjectHelper
@@ -1468,7 +1580,9 @@
             return $this;
         }
+
         if (self::isNullOrEmpty($value)) {
             return $this;
         }
+
         foreach ($methods as $method) {
             if ($this->methodExists($instance, $method)) {
@@ -1477,4 +1591,5 @@
             }
         }
+
         return $this;
     }
@@ -1484,8 +1599,7 @@
      * in object $instance
      *
-     * @codeCoverageIgnore
-     * @param              object $instance
-     * @param              string $method
-     * @return             mixed
+     * @param  object $instance
+     * @param  string $method
+     * @return mixed
      */
     public function tryCallAndReturn($instance, string $method)
@@ -1494,10 +1608,13 @@
             return null;
         }
-        if (!$method) {
-            return null;
-        }
+
+        if ($method === '') {
+            return null;
+        }
+
         if ($this->methodExists($instance, $method)) {
             return $instance->$method();
         }
+
         return null;
     }
@@ -1506,9 +1623,8 @@
      * Try call methods in a form .object.method1.method2.method3
      *
-     * @codeCoverageIgnore
-     * @param              object $instance
-     * @param              string $methods
-     * @param              mixed  $value
-     * @return             void
+     * @param  object $instance
+     * @param  string $methods
+     * @param  mixed  $value
+     * @return void
      */
     public function tryCallByPath($instance, string $methods, $value)
@@ -1528,8 +1644,7 @@
      * Try call methods in a form .object.method1.method2.method3
      *
-     * @codeCoverageIgnore
-     * @param              object $instance
-     * @param              string $methods
-     * @return             mixed
+     * @param  object $instance
+     * @param  string $methods
+     * @return mixed
      */
     public function tryCallByPathAndReturn($instance, string $methods)
@@ -1549,5 +1664,4 @@
      * Call $method if exists, otherwise $method2 is calles with $value
      *
-     * @codeCoverageIgnore
      * @param  object $instance
      * @param  string $methodToLookFor
@@ -1562,13 +1676,17 @@
             return $this;
         }
-        if (!$methodToLookFor) {
+
+        if ($methodToLookFor === '') {
             return $this;
         }
-        if (!$methodToCall) {
+
+        if ($methodToCall === '') {
             return $this;
         }
+
         if (!$this->methodExists($instance, $methodToCall)) {
             return $this;
         }
+
         if ($this->methodExists($instance, $methodToLookFor)) {
             $instance->$methodToCall($value);
@@ -1576,4 +1694,5 @@
             $instance->$methodToCall($value2);
         }
+
         return $this;
     }
@@ -1582,7 +1701,6 @@
      * Ensure that $input is an array
      *
-     * @codeCoverageIgnore
-     * @param              mixed $input
-     * @return             array
+     * @param  mixed $input
+     * @return array
      */
     public function ensureStringArray($input): array
@@ -1591,4 +1709,5 @@
             return $input;
         }
+
         return [(string)$input];
     }
@@ -1596,6 +1715,4 @@
     /**
      * Ensure array
-     *
-     * @codeCoverageIgnore
      *
      * @param  mixed $value
@@ -1608,6 +1725,8 @@
                 return [$value];
             }
+
             return [];
         }
+
         return $value;
     }
@@ -1616,7 +1735,6 @@
      * Test if a value is null or empty
      *
-     * @codeCoverageIgnore
-     * @param              mixed $value
-     * @return             boolean
+     * @param  mixed $value
+     * @return boolean
      */
     public static function isNullOrEmpty($value)
@@ -1625,10 +1743,6 @@
             return true;
         }
-        if (!is_object($value)) {
-            if ((string)$value === "") {
-                return true;
-            }
-        }
-        return false;
+
+        return !is_object($value) && (string)$value === "";
     }
 
@@ -1636,7 +1750,6 @@
      * Checks if all function arguments are null or empty
      *
-     * @codeCoverageIgnore
-     * @param              array $args
-     * @return             boolean
+     * @param  array $args
+     * @return boolean
      */
     public static function isAllNullOrEmpty(array $args): bool
@@ -1645,10 +1758,11 @@
             if ($arg instanceof DateTime) {
                 return false;
-            } else {
-                if (!self::isNullOrEmpty($arg)) {
-                    return false;
-                }
             }
-        }
+
+            if (!self::isNullOrEmpty($arg)) {
+                return false;
+            }
+        }
+
         return true;
     }
@@ -1657,7 +1771,6 @@
      * Checks if all function arguments are null or empty
      *
-     * @codeCoverageIgnore
-     * @param              array $args
-     * @return             boolean
+     * @param  array $args
+     * @return boolean
      */
     public static function isOneNullOrEmpty(array $args): bool
@@ -1668,31 +1781,10 @@
                     return true;
                 }
-            } else {
-                if (self::isNullOrEmpty($arg)) {
-                    return true;
-                }
+            } elseif (self::isNullOrEmpty($arg)) {
+                return true;
             }
         }
+
         return false;
-    }
-
-    /**
-     * If $value is an array and has at least one array element the first
-     * array element is returned otherwise null is returned. If $value is not an
-     * array $value is returned
-     *
-     * @param  mixed $value
-     * @return mixed
-     */
-    public function getFirstFromArrayIfArray($value)
-    {
-        if (is_array($value)) {
-            $first = reset($value);
-            if ($first !== false) {
-                return $first;
-            }
-            return null;
-        }
-        return $value;
     }
 
@@ -1709,7 +1801,9 @@
             return false;
         }
-        if (!(is_object($instance) || is_string($instance))) {
+
+        if (!is_object($instance) && !is_string($instance)) {
             return false;
         }
+
         return method_exists($instance, $method);
     }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdPackageVersion.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdPackageVersion.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdPackageVersion.php	(revision 8504)
@@ -11,4 +11,5 @@
 
 use Composer\InstalledVersions as ComposerInstalledVersions;
+use OutOfBoundsException;
 
 /**
@@ -22,9 +23,28 @@
  * @link     https://github.com/horstoeko/zugferd
  */
-class ZugferdPackageVersion
+final class ZugferdPackageVersion
 {
+    /**
+     * Get the installed version of this library
+     *
+     * @return string
+     */
     public static function getInstalledVersion(): string
     {
-        return ComposerInstalledVersions::getVersion('horstoeko/zugferd');
+        try {
+            return ComposerInstalledVersions::getVersion('horstoeko/zugferd') ?? self::getDefaultVersion();
+        } catch (OutOfBoundsException $outOfBoundsException) {
+            return self::getDefaultVersion();
+        }
+    }
+
+    /**
+     * Return the default version used for this package, when no installation was found
+     *
+     * @return string
+     */
+    private static function getDefaultVersion(): string
+    {
+        return "1.0.x";
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdPdfWriter.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdPdfWriter.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdPdfWriter.php	(revision 8504)
@@ -20,6 +20,4 @@
  * @license  https://opensource.org/licenses/MIT MIT
  * @link     https://github.com/horstoeko/zugferd
- *
- * @codeCoverageIgnore
  */
 class ZugferdPdfWriter extends PdfFpdi
@@ -30,5 +28,5 @@
      * @var array
      */
-    protected $files = array();
+    protected $files = [];
 
     /**
@@ -83,9 +81,16 @@
 
     /**
+     * Internal flag deterministic mode. This mode should only be used
+     * for testing purposes
+     *
+     * @var boolean
+     */
+    protected $deterministicModeEnabled = false;
+
+    /**
      * Set the PDF version.
      *
-     * @param string $version     Contains the PDF version number.
-     * @param bool   $binary_data This is true for binary data
-     *
+     * @param  string $version     Contains the PDF version number.
+     * @param  bool   $binary_data This is true for binary data
      * @return void
      */
@@ -95,10 +100,9 @@
 
         if (true == $binary_data) {
-            $this->PDFVersion .=
-                "\n" . '%' .
-                chr(rand(128, 256)) .
-                chr(rand(128, 256)) .
-                chr(rand(128, 256)) .
-                chr(rand(128, 256));
+            if ($this->deterministicModeEnabled === true) {
+                $this->PDFVersion .= "\n" . '%' . chr(128) . chr(129) . chr(130) . chr(131);
+            } else {
+                $this->PDFVersion .= "\n" . '%' . chr(random_int(128, 255)) . chr(random_int(128, 255)) . chr(random_int(128, 255)) . chr(random_int(128, 255));
+            }
         }
     }
@@ -128,9 +132,6 @@
                 $p = strrpos($file, '\\');
             }
-            if (false !== $p) {
-                $name = substr($file, $p + 1);
-            } else {
-                $name = $file;
-            }
+
+            $name = false !== $p ? substr($file, $p + 1) : $file;
         }
 
@@ -141,5 +142,5 @@
         if ('' == $mimetype) {
             $mimetype = mime_content_type($file);
-            if (!$mimetype) {
+            if ($mimetype === '' || $mimetype === '0' || $mimetype === false) {
                 $mimetype = 'application/octet-stream';
             }
@@ -147,5 +148,5 @@
 
         $mimetype = str_replace('/', '#2F', $mimetype);
-        $this->files[] = array('file' => $file, 'name' => $name, 'desc' => $desc, 'relationship' => $relationship, 'subtype' => $mimetype);
+        $this->files[] = ['file' => $file, 'name' => $name, 'desc' => $desc, 'relationship' => $relationship, 'subtype' => $mimetype];
     }
 
@@ -179,10 +180,27 @@
      * @return void
      */
-    public function setPdfMetadataInfos(array $metaDataInfos): void
-    {
+    public function setPdfMetadataInfos(array &$metaDataInfos): void
+    {
+        if ($this->deterministicModeEnabled === true) {
+            $metaDataInfos['createdDate'] = date('Y-m-d\TH:i:s', strtotime("2000-01-01 23:59:59"));
+            $metaDataInfos['modifiedDate'] = date('Y-m-d\TH:i:s', strtotime("2000-01-01 23:59:59"));
+        }
+
         $this->metaDataInfos = $metaDataInfos;
     }
 
     /**
+     * Set the status of the deterministic mode. This mode should only be used
+     * for testing purposes
+     *
+     * @param  bool $deterministicModeEnabled
+     * @return void
+     */
+    public function setDeterministicModeEnabled(bool $deterministicModeEnabled): void
+    {
+        $this->deterministicModeEnabled = $deterministicModeEnabled;
+    }
+
+    /**
      * Put files.
      *
@@ -193,5 +211,5 @@
     protected function _putfiles(): void
     {
-        foreach ($this->files as $i => &$info) {
+        foreach ($this->files as &$info) {
             $this->putFileSpecification($info);
             $info['file_index'] = $this->n;
@@ -219,7 +237,9 @@
             $this->_put('/AFRelationship /' . $file_info['relationship']);
         }
+
         if ($file_info['desc']) {
             $this->_put('/Desc ' . $this->_textstring($file_info['desc']));
         }
+
         $this->_put('/EF <<');
         $this->_put('/F ' . ($this->n + 1) . ' 0 R');
@@ -243,4 +263,5 @@
             $this->_put('/Subtype /' . $file_info['subtype']);
         }
+
         $this->_put('/Type /EmbeddedFile');
         if (is_string($file_info['file']) && @is_file($file_info['file'])) {
@@ -251,15 +272,20 @@
             $fc = stream_get_contents($stream);
         }
+
         if (false === $fc) {
             $this->Error('Cannot open file: ' . $file_info['file']);
         }
-        if (is_string($file_info['file'])) {
+
+        if ($this->deterministicModeEnabled === true) {
+            $md = @date('YmdHis', strtotime("2000-01-01 23:59:59"));
+        } elseif (is_string($file_info['file'])) {
             $md = @date('YmdHis', filemtime($file_info['file']));
         } else {
             $md = @date('YmdHis');
         }
+
         $fc = gzcompress($fc);
         $this->_put('/Length ' . strlen($fc));
-        $this->_put("/Params <</ModDate (D:$md)>>");
+        $this->_put(sprintf('/Params <</ModDate (D:%s)>>', $md));
         $this->_put('>>');
         $this->_putstream($fc);
@@ -285,4 +311,5 @@
             $s .= sprintf('%s %s 0 R ', $this->_textstring($info['name']), $info['file_index']);
         }
+
         $this->_put(sprintf('/Names [%s]', $s));
         $this->_put('>>');
@@ -302,7 +329,8 @@
         $this->_newobj();
         $this->descriptionIndex = $this->n;
-        foreach ($this->metaDataDescriptions as $i => $desc) {
+        foreach ($this->metaDataDescriptions as $desc) {
             $s .= $desc . "\n";
         }
+
         $s .= '</rdf:RDF>' . "\n";
         $s .= '</x:xmpmeta>' . "\n";
@@ -327,5 +355,5 @@
         parent::_putresources();
 
-        if (!empty($this->files)) {
+        if ($this->files !== []) {
             $this->_putfiles();
         }
@@ -381,13 +409,15 @@
         parent::_putcatalog();
 
-        if (!empty($this->files)) {
+        if ($this->files !== []) {
             if (is_array($this->files)) {
                 $files_ref_str = '';
                 foreach ($this->files as $file) {
-                    if ('' != $files_ref_str) {
+                    if ('' !== $files_ref_str) {
                         $files_ref_str .= ' ';
                     }
+
                     $files_ref_str .= sprintf('%s 0 R', $file['file_index']);
                 }
+
                 $this->_put(sprintf('/AF [%s]', $files_ref_str));
             } else {
@@ -400,5 +430,5 @@
         }
 
-        if (!empty($this->files)) {
+        if ($this->files !== []) {
             $this->_put('/Names <<');
             $this->_put('/EmbeddedFiles ');
@@ -433,4 +463,18 @@
 
     /**
+     * Put general information
+     *
+     * @return void
+     */
+    protected function _putinfo(): void
+    {
+        if ($this->deterministicModeEnabled === true) {
+            $this->CreationDate = strtotime("2000-01-01 23:59:59");
+        }
+
+        parent::_putinfo();
+    }
+
+    /**
      * Generate metadata string.
      *
@@ -453,9 +497,9 @@
         }
 
-        if ($dateType == "modified" && isset($this->metaDataInfos['modifiedDate'])) {
+        if ($dateType === "modified" && isset($this->metaDataInfos['modifiedDate'])) {
             $metaDataString .= $this->metaDataInfos['modifiedDate'];
         }
 
-        if ($dateType == "created" && isset($this->metaDataInfos['createdDate'])) {
+        if ($dateType === "created" && isset($this->metaDataInfos['createdDate'])) {
             $metaDataString .= $this->metaDataInfos['createdDate'];
         }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdProfileResolver.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdProfileResolver.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdProfileResolver.php	(revision 8504)
@@ -10,4 +10,5 @@
 namespace horstoeko\zugferd;
 
+use Throwable;
 use SimpleXMLElement;
 use horstoeko\zugferd\ZugferdProfiles;
@@ -30,11 +31,26 @@
      * Resolve profile id and profile definition by the content of $xmlContent
      *
-     * @param string $xmlContent
+     * @param  string $xmlContent
      * @return array
+     * @throws ZugferdUnknownXmlContentException
+     * @throws ZugferdUnknownProfileException
      */
     public static function resolve(string $xmlContent): array
     {
-        $xmldocument = new SimpleXMLElement($xmlContent);
-        $typeelement = $xmldocument->xpath('/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID');
+        $prevUseInternalErrors = \libxml_use_internal_errors(true);
+
+        try {
+            libxml_clear_errors();
+            $xmldocument = new SimpleXMLElement($xmlContent);
+            $typeelement = $xmldocument->xpath('/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID');
+            if (libxml_get_last_error()) {
+                throw new ZugferdUnknownXmlContentException();
+            }
+        } catch (Throwable $throwable) {
+            throw new ZugferdUnknownXmlContentException();
+        } finally {
+            libxml_clear_errors();
+            libxml_use_internal_errors($prevUseInternalErrors);
+        }
 
         if (!is_array($typeelement) || !isset($typeelement[0])) {
@@ -42,10 +58,10 @@
         }
 
-        /**
-         * @var int $profile
-         * @var array $profiledef
-         */
         foreach (ZugferdProfiles::PROFILEDEF as $profile => $profiledef) {
             if ($typeelement[0] == $profiledef["contextparameter"]) {
+                return [$profile, $profiledef];
+            }
+
+            if (in_array($typeelement[0], $profiledef['alternativecontextparameters'])) {
                 return [$profile, $profiledef];
             }
@@ -58,6 +74,8 @@
      * Resolve profile id by the content of $xmlContent
      *
-     * @param string $xmlContent
+     * @param  string $xmlContent
      * @return int
+     * @throws ZugferdUnknownXmlContentException
+     * @throws ZugferdUnknownProfileException
      */
     public static function resolveProfileId(string $xmlContent): int
@@ -69,6 +87,8 @@
      * Resolve profile definition by the content of $xmlContent
      *
-     * @param string $xmlContent
+     * @param  string $xmlContent
      * @return array
+     * @throws ZugferdUnknownXmlContentException
+     * @throws ZugferdUnknownProfileException
      */
     public static function resolveProfileDef(string $xmlContent): array
@@ -80,7 +100,8 @@
      * Resolve profile id and profile definition by it's id
      *
-     * @param integer $profileId
+     * @param  int $profileId
      * @return array
-    */
+     * @throws ZugferdUnknownProfileIdException
+     */
     public static function resolveById(int $profileId): array
     {
@@ -95,6 +116,7 @@
      * Resolve profile profile definition by it's id
      *
-     * @param int $profileId
+     * @param  int $profileId
      * @return array
+     * @throws ZugferdUnknownProfileIdException
      */
     public static function resolveProfileDefById(int $profileId): array
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdProfiles.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdProfiles.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdProfiles.php	(revision 8504)
@@ -24,60 +24,60 @@
      * Internal constant that identifies the BASIC profile
      */
-    const PROFILE_BASIC = 0;
+    public const PROFILE_BASIC = 0;
 
     /**
      * Internal constant that identifies the BASIC WL profile
      */
-    const PROFILE_BASICWL = 1;
+    public const PROFILE_BASICWL = 1;
 
     /**
      * Internal constant that identifies the EN16931 profile
      */
-    const PROFILE_EN16931 = 2;
+    public const PROFILE_EN16931 = 2;
 
     /**
      * Internal constant that identifies the EXTENDED profile
      */
-    const PROFILE_EXTENDED = 3;
+    public const PROFILE_EXTENDED = 3;
 
     /**
      * Internal constant that identifies the XRECHNUNG profile (germany only)
      */
-    const PROFILE_XRECHNUNG = 4;
+    public const PROFILE_XRECHNUNG = 4;
 
     /**
      * Internal constant that identifies the XRECHNUNG profile version 2.0 (germany only)
      */
-    const PROFILE_XRECHNUNG_2 = 5;
+    public const PROFILE_XRECHNUNG_2 = 5;
 
     /**
      * Internal constant that identifies the XRECHNUNG profile version 2.1 (germany only)
      */
-    const PROFILE_XRECHNUNG_2_1 = 6;
+    public const PROFILE_XRECHNUNG_2_1 = 6;
 
     /**
      * Internal constant that identifies the XRECHNUNG profile version 2.2 (germany only)
      */
-    const PROFILE_XRECHNUNG_2_2 = 7;
+    public const PROFILE_XRECHNUNG_2_2 = 7;
 
     /**
      * Internal constant that identifies the MINIMUM profile
      */
-    const PROFILE_MINIMUM = 8;
+    public const PROFILE_MINIMUM = 8;
 
     /**
      * Internal constant that identifies the XRECHNUNG profile version 2.3 (germany only)
      */
-    const PROFILE_XRECHNUNG_2_3 = 9;
+    public const PROFILE_XRECHNUNG_2_3 = 9;
 
     /**
      * Internal constant that identifies the XRECHNUNG profile version 2.3 (germany only)
      */
-    const PROFILE_XRECHNUNG_3 = 10;
+    public const PROFILE_XRECHNUNG_3 = 10;
 
     /**
      * The definitions of the several profiles
      */
-    const PROFILEDEF = [
+    public const PROFILEDEF = [
         self::PROFILE_BASIC => [
             'name' => 'basic',
@@ -85,9 +85,12 @@
             'description' => 'The BASIC profile is a subset of EN 16931-1 and can be used for simple VAT-compliant invoices.',
             'contextparameter' => 'urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic',
+            'alternativecontextparameters' => ['urn:cen.eu:en16931:2017#compliant#urn:zugferd.de:2p0:basic'],
             'businessprocess' => null,
             'attachmentfilename' => 'factur-x.xml',
             'xmpname' => 'BASIC',
+            'xmpversion' => '1.0',
             'xsdfilename' => 'FACTUR-X_BASIC.xsd',
             'schematronfilename' => 'FACTUR-X_BASIC.sch',
+            'xsltfilename' => 'FACTUR-X_BASIC.xslt'
         ],
         self::PROFILE_BASICWL => [
@@ -98,9 +101,12 @@
                 'It is therefore a booking aid.',
             'contextparameter' => 'urn:factur-x.eu:1p0:basicwl',
+            'alternativecontextparameters' => ['urn:zugferd.de:2p0:basicwl'],
             'businessprocess' => null,
             'attachmentfilename' => 'factur-x.xml',
             'xmpname' => 'BASIC WL',
+            'xmpversion' => '1.0',
             'xsdfilename' => 'FACTUR-X_BASIC-WL.xsd',
             'schematronfilename' => 'FACTUR-X_BASIC-WL.sch',
+            'xsltfilename' => 'FACTUR-X_BASIC-WL.xslt'
         ],
         self::PROFILE_EN16931 => [
@@ -110,9 +116,12 @@
                 'of an electronic invoice.',
             'contextparameter' => 'urn:cen.eu:en16931:2017',
+            'alternativecontextparameters' => [],
             'businessprocess' => null,
             'attachmentfilename' => 'factur-x.xml',
             'xmpname' => 'EN 16931',
-            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
-            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'xmpversion' => '1.0',
+            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
+            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'xsltfilename' => 'FACTUR-X_EN16931.xslt'
         ],
         self::PROFILE_EXTENDED => [
@@ -123,9 +132,12 @@
                 'item level to support warehousing, etc.)',
             'contextparameter' => 'urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended',
-            'businessprocess' => null,
+            'alternativecontextparameters' => ['urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended'],
+            'businessprocess' => 'urn:fdc:peppol.eu:2017:poacc:billing:01:1.0',
             'attachmentfilename' => 'factur-x.xml',
             'xmpname' => 'EXTENDED',
+            'xmpversion' => '1.0',
             'xsdfilename' => 'FACTUR-X_EXTENDED.xsd',
             'schematronfilename' => 'FACTUR-X_EXTENDED.sch',
+            'xsltfilename' => 'FACTUR-X_EXTENDED.xslt'
         ],
         self::PROFILE_XRECHNUNG => [
@@ -136,9 +148,12 @@
                 'specific than the EN 16931 (COMFORT) profile.',
             'contextparameter' => 'urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_1.2',
-            'businessprocess' => null,
-            'attachmentfilename' => 'xrechnung.xml',
-            'xmpname' => 'EN 16931',
-            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
-            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'alternativecontextparameters' => [],
+            'businessprocess' => null,
+            'attachmentfilename' => 'xrechnung.xml',
+            'xmpname' => 'XRECHNUNG',
+            'xmpversion' => '1.2',
+            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
+            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'xsltfilename' => "FACTUR-X_EN16931.xslt"
         ],
         self::PROFILE_XRECHNUNG_2 => [
@@ -149,9 +164,12 @@
                 'specific than the EN 16931 (COMFORT) profile.',
             'contextparameter' => 'urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.0',
-            'businessprocess' => null,
-            'attachmentfilename' => 'xrechnung.xml',
-            'xmpname' => 'EN 16931',
-            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
-            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'alternativecontextparameters' => [],
+            'businessprocess' => null,
+            'attachmentfilename' => 'xrechnung.xml',
+            'xmpname' => 'XRECHNUNG',
+            'xmpversion' => '2.0',
+            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
+            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'xsltfilename' => "FACTUR-X_EN16931.xslt"
         ],
         self::PROFILE_XRECHNUNG_2_1 => [
@@ -162,9 +180,12 @@
                 'specific than the EN 16931 (COMFORT) profile.',
             'contextparameter' => 'urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.1',
-            'businessprocess' => null,
-            'attachmentfilename' => 'xrechnung.xml',
-            'xmpname' => 'EN 16931',
-            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
-            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'alternativecontextparameters' => [],
+            'businessprocess' => null,
+            'attachmentfilename' => 'xrechnung.xml',
+            'xmpname' => 'XRECHNUNG',
+            'xmpversion' => '2.1',
+            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
+            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'xsltfilename' => "FACTUR-X_EN16931.xslt"
         ],
         self::PROFILE_XRECHNUNG_2_2 => [
@@ -175,9 +196,12 @@
                 'specific than the EN 16931 (COMFORT) profile.',
             'contextparameter' => 'urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.2',
-            'businessprocess' => null,
-            'attachmentfilename' => 'xrechnung.xml',
-            'xmpname' => 'EN 16931',
-            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
-            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'alternativecontextparameters' => [],
+            'businessprocess' => null,
+            'attachmentfilename' => 'xrechnung.xml',
+            'xmpname' => 'XRECHNUNG',
+            'xmpversion' => '2.2',
+            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
+            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'xsltfilename' => "FACTUR-X_EN16931.xslt"
         ],
         self::PROFILE_MINIMUM => [
@@ -187,9 +211,12 @@
                 'Only the purchaser s reference can be given at item level. A breakdown of the sales tax (VAT) is not supported. It is therefore a booking aid.',
             'contextparameter' => 'urn:factur-x.eu:1p0:minimum',
+            'alternativecontextparameters' => ['urn:zugferd.de:2p0:minimum'],
             'businessprocess' => null,
             'attachmentfilename' => 'factur-x.xml',
             'xmpname' => 'MINIMUM',
+            'xmpversion' => '1.0',
             'xsdfilename' => 'FACTUR-X_MINIMUM.xsd',
             'schematronfilename' => 'FACTUR-X_MINIMUM.sch',
+            'xsltfilename' => 'FACTUR-X_MINIMUM.xslt'
         ],
         self::PROFILE_XRECHNUNG_2_3 => [
@@ -200,9 +227,12 @@
                 'specific than the EN 16931 (COMFORT) profile.',
             'contextparameter' => 'urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.3',
-            'businessprocess' => null,
-            'attachmentfilename' => 'xrechnung.xml',
-            'xmpname' => 'EN 16931',
-            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
-            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'alternativecontextparameters' => [],
+            'businessprocess' => null,
+            'attachmentfilename' => 'xrechnung.xml',
+            'xmpname' => 'XRECHNUNG',
+            'xmpversion' => '2.3',
+            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
+            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'xsltfilename' => "FACTUR-X_EN16931.xslt"
         ],
         self::PROFILE_XRECHNUNG_3 => [
@@ -213,9 +243,12 @@
                 'specific than the EN 16931 (COMFORT) profile.',
             'contextparameter' => 'urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0',
+            'alternativecontextparameters' => [],
             'businessprocess' => 'urn:fdc:peppol.eu:2017:poacc:billing:01:1.0',
             'attachmentfilename' => 'xrechnung.xml',
-            'xmpname' => 'EN 16931',
-            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
-            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'xmpname' => 'XRECHNUNG',
+            'xmpversion' => '3.0',
+            'xsdfilename' => 'FACTUR-X_EN16931.xsd',
+            'schematronfilename' => 'FACTUR-X_EN16931.sch',
+            'xsltfilename' => "FACTUR-X_EN16931.xslt"
         ],
     ];
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdSettings.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdSettings.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdSettings.php	(revision 8504)
@@ -11,4 +11,5 @@
 
 use horstoeko\stringmanagement\PathUtils;
+use horstoeko\stringmanagement\StringUtils;
 
 /**
@@ -45,4 +46,11 @@
 
     /**
+     * The number of decimals for measure values
+     *
+     * @var integer
+     */
+    protected static $measureDecimals = 2;
+
+    /**
      * The decimal separator
      *
@@ -63,5 +71,5 @@
      * @var string
      */
-    protected static $iccProfileFilename = "sRGB_v4_ICC.icc";
+    protected static $iccProfileFilename = "sRGB2014.icc";
 
     /**
@@ -73,11 +81,18 @@
 
     /**
-     * Node paths which present a unit amount. Used for special amount formatting. See unitAmountDecimals property.
-     *
-     * @var array
+     * Node paths which present an amount. Used for special amount formatting
+     *
+     * @var array<string,integer>
      */
     protected static $specialDecimalPlacesMaps = [];
 
     /**
+     * The configured cache directory for the serializer
+     *
+     * @var string
+     */
+    protected static $serializerCacheDirectory = "";
+
+    /**
      * Get the number of decimals to use for amount values
      *
@@ -143,4 +158,25 @@
 
     /**
+     * Get the number of decimals to use for measure values
+     *
+     * @return integer
+     */
+    public static function getMeasureDecimals(): int
+    {
+        return static::$measureDecimals;
+    }
+
+    /**
+     * Set the number of decimals to use for measure values
+     *
+     * @param  integer $measureDecimals
+     * @return void
+     */
+    public static function setMeasureDecimals(int $measureDecimals): void
+    {
+        static::$measureDecimals = $measureDecimals;
+    }
+
+    /**
      * Get the decimal separator
      *
@@ -218,5 +254,5 @@
      * Set the filename for the XMP meta data
      *
-     * @param string $xmpMetaDataFilename
+     * @param  string $xmpMetaDataFilename
      * @return void
      */
@@ -240,6 +276,6 @@
      * is found then the default value is returns
      *
-     * @param string $nodePath
-     * @param integer $defaultDecimalPlaces
+     * @param  string  $nodePath
+     * @param  integer $defaultDecimalPlaces
      * @return integer
      */
@@ -253,5 +289,5 @@
      * Update the map of node paths which have a special number of decimal places
      *
-     * @param array $specialDecimalPlacesMaps
+     * @param  array $specialDecimalPlacesMaps
      * @return void
      */
@@ -264,6 +300,6 @@
      * Add a new map for a node path with a special number of decimal places
      *
-     * @param string $nodePath
-     * @param integer $defaultDecimalPlaces
+     * @param  string  $nodePath
+     * @param  integer $defaultDecimalPlaces
      * @return void
      */
@@ -277,11 +313,42 @@
      * Set the number of decimals to use for unit single amount (unit prices) values
      *
-     * @param  integer $amountDecimals
-     * @return void
-     */
-    public static function setUnitAmountDecimals(int $amountDecimals): void
-    {
-        ZugferdSettings::addSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', $amountDecimals);
-        ZugferdSettings::addSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount', $amountDecimals);
+     * @param  integer $defaultDecimalPlaces
+     * @return void
+     */
+    public static function setUnitAmountDecimals(int $defaultDecimalPlaces): void
+    {
+        static::addSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', $defaultDecimalPlaces);
+        static::addSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount', $defaultDecimalPlaces);
+    }
+
+    /**
+     * Set the cache directory for the internal serializer
+     *
+     * @param  string $serializerCacheDirectoty
+     * @return void
+     */
+    public static function setSerializerCacheDirectory(string $serializerCacheDirectoty): void
+    {
+        static::$serializerCacheDirectory = $serializerCacheDirectoty;
+    }
+
+    /**
+     * Returns the cache directory for the internal serializer. This might be empty
+     *
+     * @return string
+     */
+    public static function getSerializerCacheDirectory(): string
+    {
+        return static::$serializerCacheDirectory;
+    }
+
+    /**
+     * Returns true if a cache directory for the internal serializer is configured, otherwise false
+     *
+     * @return boolean
+     */
+    public static function hasSerializerCacheDirectory(): bool
+    {
+        return StringUtils::stringIsNullOrEmpty(static::$serializerCacheDirectory) === false;
     }
 
@@ -293,5 +360,5 @@
     public static function getRootDirectory(): string
     {
-        return PathUtils::combineAllPaths(dirname(__FILE__), "..");
+        return PathUtils::combineAllPaths(__DIR__, "..");
     }
 
@@ -347,4 +414,24 @@
 
     /**
+     * Get the directory where all the stylesheets (XSLT) files are located
+     *
+     * @return string
+     */
+    public static function getSchematronDirectory(): string
+    {
+        return PathUtils::combineAllPaths(static::getSchemaDirectory(), "schematron");
+    }
+
+    /**
+     * Get the directory where all the stylesheets (XSLT) files are located
+     *
+     * @return string
+     */
+    public static function getXsltDirectory(): string
+    {
+        return PathUtils::combineAllPaths(static::getSchemaDirectory(), "xslt");
+    }
+
+    /**
      * Get the full filename of the ICC profile to use
      *
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdXsdValidator.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdXsdValidator.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/ZugferdXsdValidator.php	(revision 8504)
@@ -10,13 +10,12 @@
 namespace horstoeko\zugferd;
 
+use DOMDocument;
 use Exception;
-use DOMDocument;
 use LibXMLError;
+use Throwable;
 use horstoeko\stringmanagement\PathUtils;
 use horstoeko\zugferd\exception\ZugferdFileNotFoundException;
 use horstoeko\zugferd\ZugferdDocument;
 use horstoeko\zugferd\ZugferdSettings;
-use PhpParser\Node\Expr\Throw_;
-use Throwable;
 
 /**
@@ -48,5 +47,4 @@
      * Constructor
      *
-     * @codeCoverageIgnore
      * @param ZugferdDocument $document
      */
@@ -82,19 +80,41 @@
      * Returns true if validation passed otherwise false
      *
+     * @deprecated 1.0.65 Use hasNoValidationErrors instead
+     * @return     boolean
+     */
+    public function validationPased(): bool
+    {
+        return $this->errorBag === [];
+    }
+
+    /**
+     * Returns true if validation failed otherwise false
+     *
+     * @deprecated 1.0.65 Use hasValidationErrors instead
+     * @return     boolean
+     */
+    public function validationFailed(): bool
+    {
+        return !$this->validationPased();
+    }
+
+    /**
+     * Returns true if validation passed otherwise false
+     *
      * @return boolean
      */
-    public function validationPased(): bool
-    {
-        return empty($this->errorBag);
-    }
-
-    /**
-     * Returns true if validation failed otherwise false
+    public function hasNoValidationErrors(): bool
+    {
+        return $this->errorBag === [];
+    }
+
+    /**
+     * Returns true if validation errors are present otherwise false
      *
      * @return boolean
      */
-    public function validationFailed(): bool
-    {
-        return !$this->validationPased();
+    public function hasValidationErrors(): bool
+    {
+        return !$this->hasNoValidationErrors();
     }
 
@@ -185,5 +205,5 @@
      * Add message to error bag
      *
-     * @param string|Exception|Throwable|LibXMLError $error
+     * @param  string|Exception|Throwable|LibXMLError $error
      * @return void
      */
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdAccountingAccountsClassificationTypes.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdAccountingAccountsClassificationTypes.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdAccountingAccountsClassificationTypes.php	(revision 8504)
@@ -24,34 +24,34 @@
      * The code indicates a general chart of accounts
      */
-    const GENERAL_ACCOUNT_CHART_OF_ACCOUNTS = '1';
+    public const GENERAL_ACCOUNT_CHART_OF_ACCOUNTS = '1';
 
     /**
      * The code indicates a cost chart of accounts
      */
-    const COST_ACCOUNTING_CHART_OF_ACCOUNTS = '2';
+    public const COST_ACCOUNTING_CHART_OF_ACCOUNTS = '2';
 
     /**
      * The code indicates a budget chart of accounts
      */
-    const BUDGETARY_ACCOUNT_CHART_OF_ACCOUNTS = '3';
+    public const BUDGETARY_ACCOUNT_CHART_OF_ACCOUNTS = '3';
 
     /**
      * The code indicates a payable chart of accounts
      */
-    const PAYABLE_ACCOUNT_CHART_OF_ACCOUNTS = '4';
+    public const PAYABLE_ACCOUNT_CHART_OF_ACCOUNTS = '4';
 
     /**
      * The code indicates a receivable chart of accounts
      */
-    const RECEIVABLE_ACCOUNT_CHART_OF_ACCOUNTS = '5';
+    public const RECEIVABLE_ACCOUNT_CHART_OF_ACCOUNTS = '5';
 
     /**
      * The code indicates a job chart of accounts
      */
-    const JOB_ACCOUNT_CHART_OF_ACCOUNTS = '6';
+    public const JOB_ACCOUNT_CHART_OF_ACCOUNTS = '6';
 
     /**
      * The code indicates a building site chart of accounts
      */
-    const BUILDING_SITE_ACCOUNT_CHART_OF_ACCOUNTS = '7';
+    public const BUILDING_SITE_ACCOUNT_CHART_OF_ACCOUNTS = '7';
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdAllowanceCodes.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdAllowanceCodes.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdAllowanceCodes.php	(revision 8504)
@@ -24,94 +24,94 @@
      * Bonus for works ahead of schedule
      */
-    const BONUS_FOR_WORKS_AHEAD_OF_SCHEDULE = "41";
+    public const BONUS_FOR_WORKS_AHEAD_OF_SCHEDULE = "41";
 
     /**
      * Other bonus
      */
-    const OTHER_BONUS = "42";
+    public const OTHER_BONUS = "42";
 
     /**
      * Manufacturerâs consumer discount
      */
-    const MANUFACTURERS_CONSUMER_DISCOUNT = "60";
+    public const MANUFACTURERS_CONSUMER_DISCOUNT = "60";
 
     /**
      * Due to military status
      */
-    const DUE_TO_MILITARY_STATUS = "62";
+    public const DUE_TO_MILITARY_STATUS = "62";
 
     /**
      * Due to work accident
      */
-    const DUE_TO_WORK_ACCIDENT = "63";
+    public const DUE_TO_WORK_ACCIDENT = "63";
 
     /**
      * Special agreement
      */
-    const SPECIAL_AGREEMENT = "64";
+    public const SPECIAL_AGREEMENT = "64";
 
     /**
      * Production error discount
      */
-    const PRODUCTION_ERROR_DISCOUNT = "65";
+    public const PRODUCTION_ERROR_DISCOUNT = "65";
 
     /**
      * New outlet discount
      */
-    const NEW_OUTLET_DISCOUNT = "66";
+    public const NEW_OUTLET_DISCOUNT = "66";
 
     /**
      * Sample discount
      */
-    const SAMPLE_DISCOUNT = "67";
+    public const SAMPLE_DISCOUNT = "67";
 
     /**
      * End-of-range discount
      */
-    const ENDOFRANGE_DISCOUNT = "68";
+    public const ENDOFRANGE_DISCOUNT = "68";
 
     /**
      * Incoterm discount
      */
-    const INCOTERM_DISCOUNT = "70";
+    public const INCOTERM_DISCOUNT = "70";
 
     /**
      * Point of sales threshold allowance
      */
-    const POINT_OF_SALES_THRESHOLD_ALLOWANCE = "71";
+    public const POINT_OF_SALES_THRESHOLD_ALLOWANCE = "71";
 
     /**
      * Material surcharge/deduction
      */
-    const MATERIAL_SURCHARGE_DEDUCTION = "88";
+    public const MATERIAL_SURCHARGE_DEDUCTION = "88";
 
     /**
      * Discount
      */
-    const DISCOUNT = "95";
+    public const DISCOUNT = "95";
 
     /**
      * Special rebate
      */
-    const SPECIAL_REBATE = "100";
+    public const SPECIAL_REBATE = "100";
 
     /**
      * Fixed long term
      */
-    const FIXED_LONG_TERM = "102";
+    public const FIXED_LONG_TERM = "102";
 
     /**
      * Temporary
      */
-    const TEMPORARY = "103";
+    public const TEMPORARY = "103";
 
     /**
      * Standard
      */
-    const STANDARD = "104";
+    public const STANDARD = "104";
 
     /**
      * Yearly turnover
      */
-    const YEARLY_TURNOVER = "105";
+    public const YEARLY_TURNOVER = "105";
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdChargeCodes.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdChargeCodes.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdChargeCodes.php	(revision 8504)
@@ -24,884 +24,884 @@
      * Advertising
      */
-    const ADVERTISING = "AA";
+    public const ADVERTISING = "AA";
 
     /**
      * Telecommunication
      */
-    const TELECOMMUNICATION = "AAA";
+    public const TELECOMMUNICATION = "AAA";
 
     /**
      * Technical modification
      */
-    const TECHNICAL_MODIFICATION = "AAC";
+    public const TECHNICAL_MODIFICATION = "AAC";
 
     /**
      * Job-order production
      */
-    const JOBORDER_PRODUCTION = "AAD";
+    public const JOBORDER_PRODUCTION = "AAD";
 
     /**
      * Outlays
      */
-    const OUTLAYS = "AAE";
+    public const OUTLAYS = "AAE";
 
     /**
      * Off-premises
      */
-    const OFFPREMISES = "AAF";
+    public const OFFPREMISES = "AAF";
 
     /**
      * Additional processing
      */
-    const ADDITIONAL_PROCESSING = "AAH";
+    public const ADDITIONAL_PROCESSING = "AAH";
 
     /**
      * Attesting
      */
-    const ATTESTING = "AAI";
+    public const ATTESTING = "AAI";
 
     /**
      * Acceptance
      */
-    const ACCEPTANCE = "AAS";
+    public const ACCEPTANCE = "AAS";
 
     /**
      * Rush delivery
      */
-    const RUSH_DELIVERY = "AAT";
+    public const RUSH_DELIVERY = "AAT";
 
     /**
      * Special construction
      */
-    const SPECIAL_CONSTRUCTION = "AAV";
+    public const SPECIAL_CONSTRUCTION = "AAV";
 
     /**
      * Airport facilities
      */
-    const AIRPORT_FACILITIES = "AAY";
+    public const AIRPORT_FACILITIES = "AAY";
 
     /**
      * Concession
      */
-    const CONCESSION = "AAZ";
+    public const CONCESSION = "AAZ";
 
     /**
      * Compulsory storage
      */
-    const COMPULSORY_STORAGE = "ABA";
+    public const COMPULSORY_STORAGE = "ABA";
 
     /**
      * Fuel removal
      */
-    const FUEL_REMOVAL = "ABB";
+    public const FUEL_REMOVAL = "ABB";
 
     /**
      * Into plane
      */
-    const INTO_PLANE = "ABC";
+    public const INTO_PLANE = "ABC";
 
     /**
      * Overtime
      */
-    const OVERTIME = "ABD";
+    public const OVERTIME = "ABD";
 
     /**
      * Tooling
      */
-    const TOOLING = "ABF";
+    public const TOOLING = "ABF";
 
     /**
      * Miscellaneous
      */
-    const MISCELLANEOUS = "ABK";
+    public const MISCELLANEOUS = "ABK";
 
     /**
      * Additional packaging
      */
-    const ADDITIONAL_PACKAGING = "ABL";
+    public const ADDITIONAL_PACKAGING = "ABL";
 
     /**
      * Dunnage
      */
-    const DUNNAGE = "ABN";
+    public const DUNNAGE = "ABN";
 
     /**
      * Containerisation
      */
-    const CONTAINERISATION = "ABR";
+    public const CONTAINERISATION = "ABR";
 
     /**
      * Carton packing
      */
-    const CARTON_PACKING = "ABS";
+    public const CARTON_PACKING = "ABS";
 
     /**
      * Hessian wrapped
      */
-    const HESSIAN_WRAPPED = "ABT";
+    public const HESSIAN_WRAPPED = "ABT";
 
     /**
      * Polyethylene wrap packing
      */
-    const POLYETHYLENE_WRAP_PACKING = "ABU";
+    public const POLYETHYLENE_WRAP_PACKING = "ABU";
 
     /**
      * Miscellaneous treatment
      */
-    const MISCELLANEOUS_TREATMENT = "ACF";
+    public const MISCELLANEOUS_TREATMENT = "ACF";
 
     /**
      * Enamelling treatment
      */
-    const ENAMELLING_TREATMENT = "ACG";
+    public const ENAMELLING_TREATMENT = "ACG";
 
     /**
      * Heat treatment
      */
-    const HEAT_TREATMENT = "ACH";
+    public const HEAT_TREATMENT = "ACH";
 
     /**
      * Plating treatment
      */
-    const PLATING_TREATMENT = "ACI";
+    public const PLATING_TREATMENT = "ACI";
 
     /**
      * Painting
      */
-    const PAINTING = "ACJ";
+    public const PAINTING = "ACJ";
 
     /**
      * Polishing
      */
-    const POLISHING = "ACK";
+    public const POLISHING = "ACK";
 
     /**
      * Priming
      */
-    const PRIMING = "ACL";
+    public const PRIMING = "ACL";
 
     /**
      * Preservation treatment
      */
-    const PRESERVATION_TREATMENT = "ACM";
+    public const PRESERVATION_TREATMENT = "ACM";
 
     /**
      * Fitting
      */
-    const FITTING = "ACS";
+    public const FITTING = "ACS";
 
     /**
      * Consolidation
      */
-    const CONSOLIDATION = "ADC";
+    public const CONSOLIDATION = "ADC";
 
     /**
      * Bill of lading
      */
-    const BILL_OF_LADING = "ADE";
+    public const BILL_OF_LADING = "ADE";
 
     /**
      * Airbag
      */
-    const AIRBAG = "ADJ";
+    public const AIRBAG = "ADJ";
 
     /**
      * Transfer
      */
-    const TRANSFER = "ADK";
+    public const TRANSFER = "ADK";
 
     /**
      * Slipsheet
      */
-    const SLIPSHEET = "ADL";
+    public const SLIPSHEET = "ADL";
 
     /**
      * Binding
      */
-    const BINDING = "ADM";
+    public const BINDING = "ADM";
 
     /**
      * Repair or replacement of broken returnable package
      */
-    const REPAIR_OR_REPLACEMENT_OF_BROKEN_RETURNABLE_PACKAGE = "ADN";
+    public const REPAIR_OR_REPLACEMENT_OF_BROKEN_RETURNABLE_PACKAGE = "ADN";
 
     /**
      * Efficient logistics
      */
-    const EFFICIENT_LOGISTICS = "ADO";
+    public const EFFICIENT_LOGISTICS = "ADO";
 
     /**
      * Merchandising
      */
-    const MERCHANDISING = "ADP";
+    public const MERCHANDISING = "ADP";
 
     /**
      * Product mix
      */
-    const PRODUCT_MIX = "ADQ";
+    public const PRODUCT_MIX = "ADQ";
 
     /**
      * Other services
      */
-    const OTHER_SERVICES = "ADR";
+    public const OTHER_SERVICES = "ADR";
 
     /**
      * Pick-up
      */
-    const PICKUP = "ADT";
+    public const PICKUP = "ADT";
 
     /**
      * Chronic illness
      */
-    const CHRONIC_ILLNESS = "ADW";
+    public const CHRONIC_ILLNESS = "ADW";
 
     /**
      * New product introduction
      */
-    const NEW_PRODUCT_INTRODUCTION = "ADY";
+    public const NEW_PRODUCT_INTRODUCTION = "ADY";
 
     /**
      * Direct delivery
      */
-    const DIRECT_DELIVERY = "ADZ";
+    public const DIRECT_DELIVERY = "ADZ";
 
     /**
      * Diversion
      */
-    const DIVERSION = "AEA";
+    public const DIVERSION = "AEA";
 
     /**
      * Disconnect
      */
-    const DISCONNECT = "AEB";
+    public const DISCONNECT = "AEB";
 
     /**
      * Distribution
      */
-    const DISTRIBUTION = "AEC";
+    public const DISTRIBUTION = "AEC";
 
     /**
      * Handling of hazardous cargo
      */
-    const HANDLING_OF_HAZARDOUS_CARGO = "AED";
+    public const HANDLING_OF_HAZARDOUS_CARGO = "AED";
 
     /**
      * Rents and leases
      */
-    const RENTS_AND_LEASES = "AEF";
+    public const RENTS_AND_LEASES = "AEF";
 
     /**
      * Location differential
      */
-    const LOCATION_DIFFERENTIAL = "AEH";
+    public const LOCATION_DIFFERENTIAL = "AEH";
 
     /**
      * Aircraft refueling
      */
-    const AIRCRAFT_REFUELING = "AEI";
+    public const AIRCRAFT_REFUELING = "AEI";
 
     /**
      * Fuel shipped into storage
      */
-    const FUEL_SHIPPED_INTO_STORAGE = "AEJ";
+    public const FUEL_SHIPPED_INTO_STORAGE = "AEJ";
 
     /**
      * Cash on delivery
      */
-    const CASH_ON_DELIVERY = "AEK";
+    public const CASH_ON_DELIVERY = "AEK";
 
     /**
      * Small order processing service
      */
-    const SMALL_ORDER_PROCESSING_SERVICE = "AEL";
+    public const SMALL_ORDER_PROCESSING_SERVICE = "AEL";
 
     /**
      * Clerical or administrative services
      */
-    const CLERICAL_OR_ADMINISTRATIVE_SERVICES = "AEM";
+    public const CLERICAL_OR_ADMINISTRATIVE_SERVICES = "AEM";
 
     /**
      * Guarantee
      */
-    const GUARANTEE = "AEN";
+    public const GUARANTEE = "AEN";
 
     /**
      * Collection and recycling
      */
-    const COLLECTION_AND_RECYCLING = "AEO";
+    public const COLLECTION_AND_RECYCLING = "AEO";
 
     /**
      * Copyright fee collection
      */
-    const COPYRIGHT_FEE_COLLECTION = "AEP";
+    public const COPYRIGHT_FEE_COLLECTION = "AEP";
 
     /**
      * Veterinary inspection service
      */
-    const VETERINARY_INSPECTION_SERVICE = "AES";
+    public const VETERINARY_INSPECTION_SERVICE = "AES";
 
     /**
      * Pensioner service
      */
-    const PENSIONER_SERVICE = "AET";
+    public const PENSIONER_SERVICE = "AET";
 
     /**
      * Medicine free pass holder
      */
-    const MEDICINE_FREE_PASS_HOLDER = "AEU";
+    public const MEDICINE_FREE_PASS_HOLDER = "AEU";
 
     /**
      * Environmental protection service
      */
-    const ENVIRONMENTAL_PROTECTION_SERVICE = "AEV";
+    public const ENVIRONMENTAL_PROTECTION_SERVICE = "AEV";
 
     /**
      * Environmental clean-up service
      */
-    const ENVIRONMENTAL_CLEANUP_SERVICE = "AEW";
+    public const ENVIRONMENTAL_CLEANUP_SERVICE = "AEW";
 
     /**
      * National cheque processing service outside account area
      */
-    const NATIONAL_CHEQUE_PROCESSING_SERVICE_OUTSIDE_ACCOUNT_AREA = "AEX";
+    public const NATIONAL_CHEQUE_PROCESSING_SERVICE_OUTSIDE_ACCOUNT_AREA = "AEX";
 
     /**
      * National payment service outside account area
      */
-    const NATIONAL_PAYMENT_SERVICE_OUTSIDE_ACCOUNT_AREA = "AEY";
+    public const NATIONAL_PAYMENT_SERVICE_OUTSIDE_ACCOUNT_AREA = "AEY";
 
     /**
      * National payment service within account area
      */
-    const NATIONAL_PAYMENT_SERVICE_WITHIN_ACCOUNT_AREA = "AEZ";
+    public const NATIONAL_PAYMENT_SERVICE_WITHIN_ACCOUNT_AREA = "AEZ";
 
     /**
      * Adjustments
      */
-    const ADJUSTMENTS = "AJ";
+    public const ADJUSTMENTS = "AJ";
 
     /**
      * Authentication
      */
-    const AUTHENTICATION = "AU";
+    public const AUTHENTICATION = "AU";
 
     /**
      * Cataloguing
      */
-    const CATALOGUING = "CA";
+    public const CATALOGUING = "CA";
 
     /**
      * Cartage
      */
-    const CARTAGE = "CAB";
+    public const CARTAGE = "CAB";
 
     /**
      * Certification
      */
-    const CERTIFICATION = "CAD";
+    public const CERTIFICATION = "CAD";
 
     /**
      * Certificate of conformance
      */
-    const CERTIFICATE_OF_CONFORMANCE = "CAE";
+    public const CERTIFICATE_OF_CONFORMANCE = "CAE";
 
     /**
      * Certificate of origin
      */
-    const CERTIFICATE_OF_ORIGIN = "CAF";
+    public const CERTIFICATE_OF_ORIGIN = "CAF";
 
     /**
      * Cutting
      */
-    const CUTTING = "CAI";
+    public const CUTTING = "CAI";
 
     /**
      * Consular service
      */
-    const CONSULAR_SERVICE = "CAJ";
+    public const CONSULAR_SERVICE = "CAJ";
 
     /**
      * Customer collection
      */
-    const CUSTOMER_COLLECTION = "CAK";
+    public const CUSTOMER_COLLECTION = "CAK";
 
     /**
      * Payroll payment service
      */
-    const PAYROLL_PAYMENT_SERVICE = "CAL";
+    public const PAYROLL_PAYMENT_SERVICE = "CAL";
 
     /**
      * Cash transportation
      */
-    const CASH_TRANSPORTATION = "CAM";
+    public const CASH_TRANSPORTATION = "CAM";
 
     /**
      * Home banking service
      */
-    const HOME_BANKING_SERVICE = "CAN";
+    public const HOME_BANKING_SERVICE = "CAN";
 
     /**
      * Bilateral agreement service
      */
-    const BILATERAL_AGREEMENT_SERVICE = "CAO";
+    public const BILATERAL_AGREEMENT_SERVICE = "CAO";
 
     /**
      * Insurance brokerage service
      */
-    const INSURANCE_BROKERAGE_SERVICE = "CAP";
+    public const INSURANCE_BROKERAGE_SERVICE = "CAP";
 
     /**
      * Cheque generation
      */
-    const CHEQUE_GENERATION = "CAQ";
+    public const CHEQUE_GENERATION = "CAQ";
 
     /**
      * Preferential merchandising location
      */
-    const PREFERENTIAL_MERCHANDISING_LOCATION = "CAR";
+    public const PREFERENTIAL_MERCHANDISING_LOCATION = "CAR";
 
     /**
      * Crane
      */
-    const CRANE = "CAS";
+    public const CRANE = "CAS";
 
     /**
      * Special colour service
      */
-    const SPECIAL_COLOUR_SERVICE = "CAT";
+    public const SPECIAL_COLOUR_SERVICE = "CAT";
 
     /**
      * Sorting
      */
-    const SORTING = "CAU";
+    public const SORTING = "CAU";
 
     /**
      * Battery collection and recycling
      */
-    const BATTERY_COLLECTION_AND_RECYCLING = "CAV";
+    public const BATTERY_COLLECTION_AND_RECYCLING = "CAV";
 
     /**
      * Product take back fee
      */
-    const PRODUCT_TAKE_BACK_FEE = "CAW";
+    public const PRODUCT_TAKE_BACK_FEE = "CAW";
 
     /**
      * Quality control released
      */
-    const QUALITY_CONTROL_RELEASED = "CAX";
+    public const QUALITY_CONTROL_RELEASED = "CAX";
 
     /**
      * Quality control held
      */
-    const QUALITY_CONTROL_HELD = "CAY";
+    public const QUALITY_CONTROL_HELD = "CAY";
 
     /**
      * Quality control embargo
      */
-    const QUALITY_CONTROL_EMBARGO = "CAZ";
+    public const QUALITY_CONTROL_EMBARGO = "CAZ";
 
     /**
      * Car loading
      */
-    const CAR_LOADING = "CD";
+    public const CAR_LOADING = "CD";
 
     /**
      * Cleaning
      */
-    const CLEANING = "CG";
+    public const CLEANING = "CG";
 
     /**
      * Cigarette stamping
      */
-    const CIGARETTE_STAMPING = "CS";
+    public const CIGARETTE_STAMPING = "CS";
 
     /**
      * Count and recount
      */
-    const COUNT_AND_RECOUNT = "CT";
+    public const COUNT_AND_RECOUNT = "CT";
 
     /**
      * Layout/design
      */
-    const LAYOUT_DESIGN = "DAB";
+    public const LAYOUT_DESIGN = "DAB";
 
     /**
      * Assortment allowance
      */
-    const ASSORTMENT_ALLOWANCE = "DAC";
+    public const ASSORTMENT_ALLOWANCE = "DAC";
 
     /**
      * Driver assigned unloading
      */
-    const DRIVER_ASSIGNED_UNLOADING = "DAD";
+    public const DRIVER_ASSIGNED_UNLOADING = "DAD";
 
     /**
      * Debtor bound
      */
-    const DEBTOR_BOUND = "DAF";
+    public const DEBTOR_BOUND = "DAF";
 
     /**
      * Dealer allowance
      */
-    const DEALER_ALLOWANCE = "DAG";
+    public const DEALER_ALLOWANCE = "DAG";
 
     /**
      * Allowance transferable to the consumer
      */
-    const ALLOWANCE_TRANSFERABLE_TO_THE_CONSUMER = "DAH";
+    public const ALLOWANCE_TRANSFERABLE_TO_THE_CONSUMER = "DAH";
 
     /**
      * Growth of business
      */
-    const GROWTH_OF_BUSINESS = "DAI";
+    public const GROWTH_OF_BUSINESS = "DAI";
 
     /**
      * Introduction allowance
      */
-    const INTRODUCTION_ALLOWANCE = "DAJ";
+    public const INTRODUCTION_ALLOWANCE = "DAJ";
 
     /**
      * Multi-buy promotion
      */
-    const MULTIBUY_PROMOTION = "DAK";
+    public const MULTIBUY_PROMOTION = "DAK";
 
     /**
      * Partnership
      */
-    const PARTNERSHIP = "DAL";
+    public const PARTNERSHIP = "DAL";
 
     /**
      * Return handling
      */
-    const RETURN_HANDLING = "DAM";
+    public const RETURN_HANDLING = "DAM";
 
     /**
      * Minimum order not fulfilled charge
      */
-    const MINIMUM_ORDER_NOT_FULFILLED_CHARGE = "DAN";
+    public const MINIMUM_ORDER_NOT_FULFILLED_CHARGE = "DAN";
 
     /**
      * Point of sales threshold allowance
      */
-    const POINT_OF_SALES_THRESHOLD_ALLOWANCE = "DAO";
+    public const POINT_OF_SALES_THRESHOLD_ALLOWANCE = "DAO";
 
     /**
      * Wholesaling discount
      */
-    const WHOLESALING_DISCOUNT = "DAP";
+    public const WHOLESALING_DISCOUNT = "DAP";
 
     /**
      * Documentary credits transfer commission
      */
-    const DOCUMENTARY_CREDITS_TRANSFER_COMMISSION = "DAQ";
+    public const DOCUMENTARY_CREDITS_TRANSFER_COMMISSION = "DAQ";
 
     /**
      * Delivery
      */
-    const DELIVERY = "DL";
+    public const DELIVERY = "DL";
 
     /**
      * Engraving
      */
-    const ENGRAVING = "EG";
+    public const ENGRAVING = "EG";
 
     /**
      * Expediting
      */
-    const EXPEDITING = "EP";
+    public const EXPEDITING = "EP";
 
     /**
      * Exchange rate guarantee
      */
-    const EXCHANGE_RATE_GUARANTEE = "ER";
+    public const EXCHANGE_RATE_GUARANTEE = "ER";
 
     /**
      * Fabrication
      */
-    const FABRICATION = "FAA";
+    public const FABRICATION = "FAA";
 
     /**
      * Freight equalization
      */
-    const FREIGHT_EQUALIZATION = "FAB";
+    public const FREIGHT_EQUALIZATION = "FAB";
 
     /**
      * Freight extraordinary handling
      */
-    const FREIGHT_EXTRAORDINARY_HANDLING = "FAC";
+    public const FREIGHT_EXTRAORDINARY_HANDLING = "FAC";
 
     /**
      * Freight service
      */
-    const FREIGHT_SERVICE = "FC";
+    public const FREIGHT_SERVICE = "FC";
 
     /**
      * Filling/handling
      */
-    const FILLING_HANDLING = "FH";
+    public const FILLING_HANDLING = "FH";
 
     /**
      * Financing
      */
-    const FINANCING = "FI";
+    public const FINANCING = "FI";
 
     /**
      * Grinding
      */
-    const GRINDING = "GAA";
+    public const GRINDING = "GAA";
 
     /**
      * Hose
      */
-    const HOSE = "HAA";
+    public const HOSE = "HAA";
 
     /**
      * Handling
      */
-    const HANDLING = "HD";
+    public const HANDLING = "HD";
 
     /**
      * Hoisting and hauling
      */
-    const HOISTING_AND_HAULING = "HH";
+    public const HOISTING_AND_HAULING = "HH";
 
     /**
      * Installation
      */
-    const INSTALLATION = "IAA";
+    public const INSTALLATION = "IAA";
 
     /**
      * Installation and warranty
      */
-    const INSTALLATION_AND_WARRANTY = "IAB";
+    public const INSTALLATION_AND_WARRANTY = "IAB";
 
     /**
      * Inside delivery
      */
-    const INSIDE_DELIVERY = "ID";
+    public const INSIDE_DELIVERY = "ID";
 
     /**
      * Inspection
      */
-    const INSPECTION = "IF";
+    public const INSPECTION = "IF";
 
     /**
      * Installation and training
      */
-    const INSTALLATION_AND_TRAINING = "IR";
+    public const INSTALLATION_AND_TRAINING = "IR";
 
     /**
      * Invoicing
      */
-    const INVOICING = "IS";
+    public const INVOICING = "IS";
 
     /**
      * Koshering
      */
-    const KOSHERING = "KO";
+    public const KOSHERING = "KO";
 
     /**
      * Carrier count
      */
-    const CARRIER_COUNT = "L1";
+    public const CARRIER_COUNT = "L1";
 
     /**
      * Labelling
      */
-    const LABELLING = "LA";
+    public const LABELLING = "LA";
 
     /**
      * Labour
      */
-    const LABOUR = "LAA";
+    public const LABOUR = "LAA";
 
     /**
      * Repair and return
      */
-    const REPAIR_AND_RETURN = "LAB";
+    public const REPAIR_AND_RETURN = "LAB";
 
     /**
      * Legalisation
      */
-    const LEGALISATION = "LF";
+    public const LEGALISATION = "LF";
 
     /**
      * Mounting
      */
-    const MOUNTING = "MAE";
+    public const MOUNTING = "MAE";
 
     /**
      * Mail invoice
      */
-    const MAIL_INVOICE = "MI";
+    public const MAIL_INVOICE = "MI";
 
     /**
      * Mail invoice to each location
      */
-    const MAIL_INVOICE_TO_EACH_LOCATION = "ML";
+    public const MAIL_INVOICE_TO_EACH_LOCATION = "ML";
 
     /**
      * Non-returnable containers
      */
-    const NONRETURNABLE_CONTAINERS = "NAA";
+    public const NONRETURNABLE_CONTAINERS = "NAA";
 
     /**
      * Outside cable connectors
      */
-    const OUTSIDE_CABLE_CONNECTORS = "OA";
+    public const OUTSIDE_CABLE_CONNECTORS = "OA";
 
     /**
      * Invoice with shipment
      */
-    const INVOICE_WITH_SHIPMENT = "PA";
+    public const INVOICE_WITH_SHIPMENT = "PA";
 
     /**
      * Phosphatizing (steel treatment)
      */
-    const PHOSPHATIZING_STEEL_TREATMENT = "PAA";
+    public const PHOSPHATIZING_STEEL_TREATMENT = "PAA";
 
     /**
      * Packing
      */
-    const PACKING = "PC";
+    public const PACKING = "PC";
 
     /**
      * Palletizing
      */
-    const PALLETIZING = "PL";
+    public const PALLETIZING = "PL";
 
     /**
      * Repacking
      */
-    const REPACKING = "RAB";
+    public const REPACKING = "RAB";
 
     /**
      * Repair
      */
-    const REPAIR = "RAC";
+    public const REPAIR = "RAC";
 
     /**
      * Returnable container
      */
-    const RETURNABLE_CONTAINER = "RAD";
+    public const RETURNABLE_CONTAINER = "RAD";
 
     /**
      * Restocking
      */
-    const RESTOCKING = "RAF";
+    public const RESTOCKING = "RAF";
 
     /**
      * Re-delivery
      */
-    const REDELIVERY = "RE";
+    public const REDELIVERY = "RE";
 
     /**
      * Refurbishing
      */
-    const REFURBISHING = "RF";
+    public const REFURBISHING = "RF";
 
     /**
      * Rail wagon hire
      */
-    const RAIL_WAGON_HIRE = "RH";
+    public const RAIL_WAGON_HIRE = "RH";
 
     /**
      * Loading
      */
-    const LOADING = "RV";
+    public const LOADING = "RV";
 
     /**
      * Salvaging
      */
-    const SALVAGING = "SA";
+    public const SALVAGING = "SA";
 
     /**
      * Shipping and handling
      */
-    const SHIPPING_AND_HANDLING = "SAA";
+    public const SHIPPING_AND_HANDLING = "SAA";
 
     /**
      * Special packaging
      */
-    const SPECIAL_PACKAGING = "SAD";
+    public const SPECIAL_PACKAGING = "SAD";
 
     /**
      * Stamping
      */
-    const STAMPING = "SAE";
+    public const STAMPING = "SAE";
 
     /**
      * Consignee unload
      */
-    const CONSIGNEE_UNLOAD = "SAI";
+    public const CONSIGNEE_UNLOAD = "SAI";
 
     /**
      * Shrink-wrap
      */
-    const SHRINKWRAP = "SG";
+    public const SHRINKWRAP = "SG";
 
     /**
      * Special handling
      */
-    const SPECIAL_HANDLING = "SH";
+    public const SPECIAL_HANDLING = "SH";
 
     /**
      * Special finish
      */
-    const SPECIAL_FINISH = "SM";
+    public const SPECIAL_FINISH = "SM";
 
     /**
      * Set-up
      */
-    const SETUP = "SU";
+    public const SETUP = "SU";
 
     /**
      * Tank renting
      */
-    const TANK_RENTING = "TAB";
+    public const TANK_RENTING = "TAB";
 
     /**
      * Testing
      */
-    const TESTING = "TAC";
+    public const TESTING = "TAC";
 
     /**
      * Transportation - third party billing
      */
-    const TRANSPORTATION__THIRD_PARTY_BILLING = "TT";
+    public const TRANSPORTATION__THIRD_PARTY_BILLING = "TT";
 
     /**
      * Transportation by vendor
      */
-    const TRANSPORTATION_BY_VENDOR = "TV";
+    public const TRANSPORTATION_BY_VENDOR = "TV";
 
     /**
      * Drop yard
      */
-    const DROP_YARD = "V1";
+    public const DROP_YARD = "V1";
 
     /**
      * Drop dock
      */
-    const DROP_DOCK = "V2";
+    public const DROP_DOCK = "V2";
 
     /**
      * Warehousing
      */
-    const WAREHOUSING = "WH";
+    public const WAREHOUSING = "WH";
 
     /**
      * Combine all same day shipment
      */
-    const COMBINE_ALL_SAME_DAY_SHIPMENT = "XAA";
+    public const COMBINE_ALL_SAME_DAY_SHIPMENT = "XAA";
 
     /**
      * Split pick-up
      */
-    const SPLIT_PICKUP = "YY";
+    public const SPLIT_PICKUP = "YY";
 
     /**
      * Mutually defined
      */
-    const MUTUALLY_DEFINED = "ZZZ";
+    public const MUTUALLY_DEFINED = "ZZZ";
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdCountryCodes.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdCountryCodes.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdCountryCodes.php	(revision 8504)
@@ -24,70 +24,70 @@
      * Andorra
      */
-    const ANDORRA = "AD";
+    public const ANDORRA = "AD";
 
     /**
      * United Arab Emirates (the)
      */
-    const UNITED_ARAB_EMIRATES_THE = "AE";
+    public const UNITED_ARAB_EMIRATES_THE = "AE";
 
     /**
      * Afghanistan
      */
-    const AFGHANISTAN = "AF";
+    public const AFGHANISTAN = "AF";
 
     /**
      * Antigua and Barbuda
      */
-    const ANTIGUA_AND_BARBUDA = "AG";
+    public const ANTIGUA_AND_BARBUDA = "AG";
 
     /**
      * Anguilla
      */
-    const ANGUILLA = "AI";
+    public const ANGUILLA = "AI";
 
     /**
      * Albania
      */
-    const ALBANIA = "AL";
+    public const ALBANIA = "AL";
 
     /**
      * Armenia
      */
-    const ARMENIA = "AM";
+    public const ARMENIA = "AM";
 
     /**
      * Angola
      */
-    const ANGOLA = "AO";
+    public const ANGOLA = "AO";
 
     /**
      * Antarctica
      */
-    const ANTARCTICA = "AQ";
+    public const ANTARCTICA = "AQ";
 
     /**
      * Argentina
      */
-    const ARGENTINA = "AR";
+    public const ARGENTINA = "AR";
 
     /**
      * American Samoa
      */
-    const AMERICAN_SAMOA = "AS";
+    public const AMERICAN_SAMOA = "AS";
 
     /**
      * Austria
      */
-    const AUSTRIA = "AT";
+    public const AUSTRIA = "AT";
 
     /**
      * Australia
      */
-    const AUSTRALIA = "AU";
+    public const AUSTRALIA = "AU";
 
     /**
      * Aruba
      */
-    const ARUBA = "AW";
+    public const ARUBA = "AW";
 
     /**
@@ -95,1179 +95,1179 @@
 land Islands
      */
-    const LAND_ISLANDS = "AX";
+    public const LAND_ISLANDS = "AX";
 
     /**
      * Azerbaijan
      */
-    const AZERBAIJAN = "AZ";
+    public const AZERBAIJAN = "AZ";
 
     /**
      * Bosnia and Herzegovina
      */
-    const BOSNIA_AND_HERZEGOVINA = "BA";
+    public const BOSNIA_AND_HERZEGOVINA = "BA";
 
     /**
      * Barbados
      */
-    const BARBADOS = "BB";
+    public const BARBADOS = "BB";
 
     /**
      * Bangladesh
      */
-    const BANGLADESH = "BD";
+    public const BANGLADESH = "BD";
 
     /**
      * Belgium
      */
-    const BELGIUM = "BE";
+    public const BELGIUM = "BE";
 
     /**
      * Burkina Faso
      */
-    const BURKINA_FASO = "BF";
+    public const BURKINA_FASO = "BF";
 
     /**
      * Bulgaria
      */
-    const BULGARIA = "BG";
+    public const BULGARIA = "BG";
 
     /**
      * Bahrain
      */
-    const BAHRAIN = "BH";
+    public const BAHRAIN = "BH";
 
     /**
      * Burundi
      */
-    const BURUNDI = "BI";
+    public const BURUNDI = "BI";
 
     /**
      * Benin
      */
-    const BENIN = "BJ";
+    public const BENIN = "BJ";
 
     /**
      * Saint BarthÃ©lemy
      */
-    const SAINT_BARTHLEMY = "BL";
+    public const SAINT_BARTHLEMY = "BL";
 
     /**
      * Bermuda
      */
-    const BERMUDA = "BM";
+    public const BERMUDA = "BM";
 
     /**
      * Brunei Darussalam
      */
-    const BRUNEI_DARUSSALAM = "BN";
+    public const BRUNEI_DARUSSALAM = "BN";
 
     /**
      * Bolivia (Plurinational State of)
      */
-    const BOLIVIA_PLURINATIONAL_STATE_OF = "BO";
+    public const BOLIVIA_PLURINATIONAL_STATE_OF = "BO";
 
     /**
      * Bonaire, Sint Eustatius and Saba
      */
-    const BONAIRE_SINT_EUSTATIUS_AND_SABA = "BQ";
+    public const BONAIRE_SINT_EUSTATIUS_AND_SABA = "BQ";
 
     /**
      * Brazil
      */
-    const BRAZIL = "BR";
+    public const BRAZIL = "BR";
 
     /**
      * Bahamas (the)
      */
-    const BAHAMAS_THE = "BS";
+    public const BAHAMAS_THE = "BS";
 
     /**
      * Bhutan
      */
-    const BHUTAN = "BT";
+    public const BHUTAN = "BT";
 
     /**
      * Bouvet Island
      */
-    const BOUVET_ISLAND = "BV";
+    public const BOUVET_ISLAND = "BV";
 
     /**
      * Botswana
      */
-    const BOTSWANA = "BW";
+    public const BOTSWANA = "BW";
 
     /**
      * Belarus
      */
-    const BELARUS = "BY";
+    public const BELARUS = "BY";
 
     /**
      * Belize
      */
-    const BELIZE = "BZ";
+    public const BELIZE = "BZ";
 
     /**
      * Canada
      */
-    const CANADA = "CA";
+    public const CANADA = "CA";
 
     /**
      * Cocos (Keeling) Islands (the)
      */
-    const COCOS_KEELING_ISLANDS_THE = "CC";
+    public const COCOS_KEELING_ISLANDS_THE = "CC";
 
     /**
      * Congo (the Democratic Republic of the)
      */
-    const CONGO_THE_DEMOCRATIC_REPUBLIC_OF_THE = "CD";
+    public const CONGO_THE_DEMOCRATIC_REPUBLIC_OF_THE = "CD";
 
     /**
      * Central African Republic (the)
      */
-    const CENTRAL_AFRICAN_REPUBLIC_THE = "CF";
+    public const CENTRAL_AFRICAN_REPUBLIC_THE = "CF";
 
     /**
      * Congo (the)
      */
-    const CONGO_THE = "CG";
+    public const CONGO_THE = "CG";
 
     /**
      * Switzerland
      */
-    const SWITZERLAND = "CH";
+    public const SWITZERLAND = "CH";
 
     /**
      * CÃŽte d'Ivoire
      */
-    const CTE_DIVOIRE = "CI";
+    public const CTE_DIVOIRE = "CI";
 
     /**
      * Cook Islands (the)
      */
-    const COOK_ISLANDS_THE = "CK";
+    public const COOK_ISLANDS_THE = "CK";
 
     /**
      * Chile
      */
-    const CHILE = "CL";
+    public const CHILE = "CL";
 
     /**
      * Cameroon
      */
-    const CAMEROON = "CM";
+    public const CAMEROON = "CM";
 
     /**
      * China
      */
-    const CHINA = "CN";
+    public const CHINA = "CN";
 
     /**
      * Colombia
      */
-    const COLOMBIA = "CO";
+    public const COLOMBIA = "CO";
 
     /**
      * Costa Rica
      */
-    const COSTA_RICA = "CR";
+    public const COSTA_RICA = "CR";
 
     /**
      * Cuba
      */
-    const CUBA = "CU";
+    public const CUBA = "CU";
 
     /**
      * Cabo Verde
      */
-    const CABO_VERDE = "CV";
+    public const CABO_VERDE = "CV";
 
     /**
      * CuraÃ§ao
      */
-    const CURAAO = "CW";
+    public const CURAAO = "CW";
 
     /**
      * Christmas Island
      */
-    const CHRISTMAS_ISLAND = "CX";
+    public const CHRISTMAS_ISLAND = "CX";
 
     /**
      * Cyprus
      */
-    const CYPRUS = "CY";
+    public const CYPRUS = "CY";
 
     /**
      * Czechia
      */
-    const CZECHIA = "CZ";
+    public const CZECHIA = "CZ";
 
     /**
      * Germany
      */
-    const GERMANY = "DE";
+    public const GERMANY = "DE";
 
     /**
      * Djibouti
      */
-    const DJIBOUTI = "DJ";
+    public const DJIBOUTI = "DJ";
 
     /**
      * Denmark
      */
-    const DENMARK = "DK";
+    public const DENMARK = "DK";
 
     /**
      * Dominica
      */
-    const DOMINICA = "DM";
+    public const DOMINICA = "DM";
 
     /**
      * Dominican Republic (the)
      */
-    const DOMINICAN_REPUBLIC_THE = "DO";
+    public const DOMINICAN_REPUBLIC_THE = "DO";
 
     /**
      * Algeria
      */
-    const ALGERIA = "DZ";
+    public const ALGERIA = "DZ";
 
     /**
      * Ecuador
      */
-    const ECUADOR = "EC";
+    public const ECUADOR = "EC";
 
     /**
      * Estonia
      */
-    const ESTONIA = "EE";
+    public const ESTONIA = "EE";
 
     /**
      * Egypt
      */
-    const EGYPT = "EG";
+    public const EGYPT = "EG";
 
     /**
      * Western Sahara*
      */
-    const WESTERN_SAHARA = "EH";
+    public const WESTERN_SAHARA = "EH";
 
     /**
      * Eritrea
      */
-    const ERITREA = "ER";
+    public const ERITREA = "ER";
 
     /**
      * Spain
      */
-    const SPAIN = "ES";
+    public const SPAIN = "ES";
 
     /**
      * Ethiopia
      */
-    const ETHIOPIA = "ET";
+    public const ETHIOPIA = "ET";
 
     /**
      * Finland
      */
-    const FINLAND = "FI";
+    public const FINLAND = "FI";
 
     /**
      * Fiji
      */
-    const FIJI = "FJ";
+    public const FIJI = "FJ";
 
     /**
      * Falkland Islands (the) [Malvinas]
      */
-    const FALKLAND_ISLANDS_THE_MALVINAS = "FK";
+    public const FALKLAND_ISLANDS_THE_MALVINAS = "FK";
 
     /**
      * Micronesia (Federated States of)
      */
-    const MICRONESIA_FEDERATED_STATES_OF = "FM";
+    public const MICRONESIA_FEDERATED_STATES_OF = "FM";
 
     /**
      * Faroe Islands (the)
      */
-    const FAROE_ISLANDS_THE = "FO";
+    public const FAROE_ISLANDS_THE = "FO";
 
     /**
      * France
      */
-    const FRANCE = "FR";
+    public const FRANCE = "FR";
 
     /**
      * Gabon
      */
-    const GABON = "GA";
+    public const GABON = "GA";
 
     /**
      * United Kingdom of Great Britain and Northern Ireland (the)
      */
-    const UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_THE = "GB";
+    public const UNITED_KINGDOM_OF_GREAT_BRITAIN_AND_NORTHERN_IRELAND_THE = "GB";
 
     /**
      * Grenada
      */
-    const GRENADA = "GD";
+    public const GRENADA = "GD";
 
     /**
      * Georgia
      */
-    const GEORGIA = "GE";
+    public const GEORGIA = "GE";
 
     /**
      * French Guiana
      */
-    const FRENCH_GUIANA = "GF";
+    public const FRENCH_GUIANA = "GF";
 
     /**
      * Guernsey
      */
-    const GUERNSEY = "GG";
+    public const GUERNSEY = "GG";
 
     /**
      * Ghana
      */
-    const GHANA = "GH";
+    public const GHANA = "GH";
 
     /**
      * Gibraltar
      */
-    const GIBRALTAR = "GI";
+    public const GIBRALTAR = "GI";
 
     /**
      * Greenland
      */
-    const GREENLAND = "GL";
+    public const GREENLAND = "GL";
 
     /**
      * Gambia (the)
      */
-    const GAMBIA_THE = "GM";
+    public const GAMBIA_THE = "GM";
 
     /**
      * Guinea
      */
-    const GUINEA = "GN";
+    public const GUINEA = "GN";
 
     /**
      * Guadeloupe
      */
-    const GUADELOUPE = "GP";
+    public const GUADELOUPE = "GP";
 
     /**
      * Equatorial Guinea
      */
-    const EQUATORIAL_GUINEA = "GQ";
+    public const EQUATORIAL_GUINEA = "GQ";
 
     /**
      * Greece
      */
-    const GREECE = "GR";
+    public const GREECE = "GR";
 
     /**
      * South Georgia and the South Sandwich Islands
      */
-    const SOUTH_GEORGIA_AND_THE_SOUTH_SANDWICH_ISLANDS = "GS";
+    public const SOUTH_GEORGIA_AND_THE_SOUTH_SANDWICH_ISLANDS = "GS";
 
     /**
      * Guatemala
      */
-    const GUATEMALA = "GT";
+    public const GUATEMALA = "GT";
 
     /**
      * Guam
      */
-    const GUAM = "GU";
+    public const GUAM = "GU";
 
     /**
      * Guinea-Bissau
      */
-    const GUINEABISSAU = "GW";
+    public const GUINEABISSAU = "GW";
 
     /**
      * Guyana
      */
-    const GUYANA = "GY";
+    public const GUYANA = "GY";
 
     /**
      * Hong Kong
      */
-    const HONG_KONG = "HK";
+    public const HONG_KONG = "HK";
 
     /**
      * Heard Island and McDonald Islands
      */
-    const HEARD_ISLAND_AND_MCDONALD_ISLANDS = "HM";
+    public const HEARD_ISLAND_AND_MCDONALD_ISLANDS = "HM";
 
     /**
      * Honduras
      */
-    const HONDURAS = "HN";
+    public const HONDURAS = "HN";
 
     /**
      * Croatia
      */
-    const CROATIA = "HR";
+    public const CROATIA = "HR";
 
     /**
      * Haiti
      */
-    const HAITI = "HT";
+    public const HAITI = "HT";
 
     /**
      * Hungary
      */
-    const HUNGARY = "HU";
+    public const HUNGARY = "HU";
 
     /**
      * Indonesia
      */
-    const INDONESIA = "ID";
+    public const INDONESIA = "ID";
 
     /**
      * Ireland
      */
-    const IRELAND = "IE";
+    public const IRELAND = "IE";
 
     /**
      * Israel
      */
-    const ISRAEL = "IL";
+    public const ISRAEL = "IL";
 
     /**
      * Isle of Man
      */
-    const ISLE_OF_MAN = "IM";
+    public const ISLE_OF_MAN = "IM";
 
     /**
      * India
      */
-    const INDIA = "IN";
+    public const INDIA = "IN";
 
     /**
      * British Indian Ocean Territory (the)
      */
-    const BRITISH_INDIAN_OCEAN_TERRITORY_THE = "IO";
+    public const BRITISH_INDIAN_OCEAN_TERRITORY_THE = "IO";
 
     /**
      * Iraq
      */
-    const IRAQ = "IQ";
+    public const IRAQ = "IQ";
 
     /**
      * Iran (Islamic Republic of)
      */
-    const IRAN_ISLAMIC_REPUBLIC_OF = "IR";
+    public const IRAN_ISLAMIC_REPUBLIC_OF = "IR";
 
     /**
      * Iceland
      */
-    const ICELAND = "IS";
+    public const ICELAND = "IS";
 
     /**
      * Italy
      */
-    const ITALY = "IT";
+    public const ITALY = "IT";
 
     /**
      * Jersey
      */
-    const JERSEY = "JE";
+    public const JERSEY = "JE";
 
     /**
      * Jamaica
      */
-    const JAMAICA = "JM";
+    public const JAMAICA = "JM";
 
     /**
      * Jordan
      */
-    const JORDAN = "JO";
+    public const JORDAN = "JO";
 
     /**
      * Japan
      */
-    const JAPAN = "JP";
+    public const JAPAN = "JP";
 
     /**
      * Kenya
      */
-    const KENYA = "KE";
+    public const KENYA = "KE";
 
     /**
      * Kyrgyzstan
      */
-    const KYRGYZSTAN = "KG";
+    public const KYRGYZSTAN = "KG";
 
     /**
      * Cambodia
      */
-    const CAMBODIA = "KH";
+    public const CAMBODIA = "KH";
 
     /**
      * Kiribati
      */
-    const KIRIBATI = "KI";
+    public const KIRIBATI = "KI";
 
     /**
      * Comoros (the)
      */
-    const COMOROS_THE = "KM";
+    public const COMOROS_THE = "KM";
 
     /**
      * Saint Kitts and Nevis
      */
-    const SAINT_KITTS_AND_NEVIS = "KN";
+    public const SAINT_KITTS_AND_NEVIS = "KN";
 
     /**
      * Korea (the Democratic People's Republic of)
      */
-    const KOREA_THE_DEMOCRATIC_PEOPLES_REPUBLIC_OF = "KP";
+    public const KOREA_THE_DEMOCRATIC_PEOPLES_REPUBLIC_OF = "KP";
 
     /**
      * Korea (the Republic of)
      */
-    const KOREA_THE_REPUBLIC_OF = "KR";
+    public const KOREA_THE_REPUBLIC_OF = "KR";
 
     /**
      * Kuwait
      */
-    const KUWAIT = "KW";
+    public const KUWAIT = "KW";
 
     /**
      * Cayman Islands (the)
      */
-    const CAYMAN_ISLANDS_THE = "KY";
+    public const CAYMAN_ISLANDS_THE = "KY";
 
     /**
      * Kazakhstan
      */
-    const KAZAKHSTAN = "KZ";
+    public const KAZAKHSTAN = "KZ";
 
     /**
      * Lao People's Democratic Republic (the)
      */
-    const LAO_PEOPLES_DEMOCRATIC_REPUBLIC_THE = "LA";
+    public const LAO_PEOPLES_DEMOCRATIC_REPUBLIC_THE = "LA";
 
     /**
      * Lebanon
      */
-    const LEBANON = "LB";
+    public const LEBANON = "LB";
 
     /**
      * Saint Lucia
      */
-    const SAINT_LUCIA = "LC";
+    public const SAINT_LUCIA = "LC";
 
     /**
      * Liechtenstein
      */
-    const LIECHTENSTEIN = "LI";
+    public const LIECHTENSTEIN = "LI";
 
     /**
      * Sri Lanka
      */
-    const SRI_LANKA = "LK";
+    public const SRI_LANKA = "LK";
 
     /**
      * Liberia
      */
-    const LIBERIA = "LR";
+    public const LIBERIA = "LR";
 
     /**
      * Lesotho
      */
-    const LESOTHO = "LS";
+    public const LESOTHO = "LS";
 
     /**
      * Lithuania
      */
-    const LITHUANIA = "LT";
+    public const LITHUANIA = "LT";
 
     /**
      * Luxembourg
      */
-    const LUXEMBOURG = "LU";
+    public const LUXEMBOURG = "LU";
 
     /**
      * Latvia
      */
-    const LATVIA = "LV";
+    public const LATVIA = "LV";
 
     /**
      * Libya
      */
-    const LIBYA = "LY";
+    public const LIBYA = "LY";
 
     /**
      * Morocco
      */
-    const MOROCCO = "MA";
+    public const MOROCCO = "MA";
 
     /**
      * Monaco
      */
-    const MONACO = "MC";
+    public const MONACO = "MC";
 
     /**
      * Moldova (the Republic of)
      */
-    const MOLDOVA_THE_REPUBLIC_OF = "MD";
+    public const MOLDOVA_THE_REPUBLIC_OF = "MD";
 
     /**
      * Montenegro
      */
-    const MONTENEGRO = "ME";
+    public const MONTENEGRO = "ME";
 
     /**
      * Saint Martin (French part)
      */
-    const SAINT_MARTIN_FRENCH_PART = "MF";
+    public const SAINT_MARTIN_FRENCH_PART = "MF";
 
     /**
      * Madagascar
      */
-    const MADAGASCAR = "MG";
+    public const MADAGASCAR = "MG";
 
     /**
      * Marshall Islands (the)
      */
-    const MARSHALL_ISLANDS_THE = "MH";
+    public const MARSHALL_ISLANDS_THE = "MH";
 
     /**
      * North Macedonia
      */
-    const NORTH_MACEDONIA = "MK";
+    public const NORTH_MACEDONIA = "MK";
 
     /**
      * Mali
      */
-    const MALI = "ML";
+    public const MALI = "ML";
 
     /**
      * Myanmar
      */
-    const MYANMAR = "MM";
+    public const MYANMAR = "MM";
 
     /**
      * Mongolia
      */
-    const MONGOLIA = "MN";
+    public const MONGOLIA = "MN";
 
     /**
      * Macao
      */
-    const MACAO = "MO";
+    public const MACAO = "MO";
 
     /**
      * Northern Mariana Islands (the)
      */
-    const NORTHERN_MARIANA_ISLANDS_THE = "MP";
+    public const NORTHERN_MARIANA_ISLANDS_THE = "MP";
 
     /**
      * Martinique
      */
-    const MARTINIQUE = "MQ";
+    public const MARTINIQUE = "MQ";
 
     /**
      * Mauritania
      */
-    const MAURITANIA = "MR";
+    public const MAURITANIA = "MR";
 
     /**
      * Montserrat
      */
-    const MONTSERRAT = "MS";
+    public const MONTSERRAT = "MS";
 
     /**
      * Malta
      */
-    const MALTA = "MT";
+    public const MALTA = "MT";
 
     /**
      * Mauritius
      */
-    const MAURITIUS = "MU";
+    public const MAURITIUS = "MU";
 
     /**
      * Maldives
      */
-    const MALDIVES = "MV";
+    public const MALDIVES = "MV";
 
     /**
      * Malawi
      */
-    const MALAWI = "MW";
+    public const MALAWI = "MW";
 
     /**
      * Mexico
      */
-    const MEXICO = "MX";
+    public const MEXICO = "MX";
 
     /**
      * Malaysia
      */
-    const MALAYSIA = "MY";
+    public const MALAYSIA = "MY";
 
     /**
      * Mozambique
      */
-    const MOZAMBIQUE = "MZ";
+    public const MOZAMBIQUE = "MZ";
 
     /**
      * Namibia
      */
-    const NAMIBIA = "NA";
+    public const NAMIBIA = "NA";
 
     /**
      * New Caledonia
      */
-    const NEW_CALEDONIA = "NC";
+    public const NEW_CALEDONIA = "NC";
 
     /**
      * Niger (the)
      */
-    const NIGER_THE = "NE";
+    public const NIGER_THE = "NE";
 
     /**
      * Norfolk Island
      */
-    const NORFOLK_ISLAND = "NF";
+    public const NORFOLK_ISLAND = "NF";
 
     /**
      * Nigeria
      */
-    const NIGERIA = "NG";
+    public const NIGERIA = "NG";
 
     /**
      * Nicaragua
      */
-    const NICARAGUA = "NI";
+    public const NICARAGUA = "NI";
 
     /**
      * Netherlands (the)
      */
-    const NETHERLANDS_THE = "NL";
+    public const NETHERLANDS_THE = "NL";
 
     /**
      * Norway
      */
-    const NORWAY = "NO";
+    public const NORWAY = "NO";
 
     /**
      * Nepal
      */
-    const NEPAL = "NP";
+    public const NEPAL = "NP";
 
     /**
      * Nauru
      */
-    const NAURU = "NR";
+    public const NAURU = "NR";
 
     /**
      * Niue
      */
-    const NIUE = "NU";
+    public const NIUE = "NU";
 
     /**
      * New Zealand
      */
-    const NEW_ZEALAND = "NZ";
+    public const NEW_ZEALAND = "NZ";
 
     /**
      * Oman
      */
-    const OMAN = "OM";
+    public const OMAN = "OM";
 
     /**
      * Panama
      */
-    const PANAMA = "PA";
+    public const PANAMA = "PA";
 
     /**
      * Peru
      */
-    const PERU = "PE";
+    public const PERU = "PE";
 
     /**
      * French Polynesia
      */
-    const FRENCH_POLYNESIA = "PF";
+    public const FRENCH_POLYNESIA = "PF";
 
     /**
      * Papua New Guinea
      */
-    const PAPUA_NEW_GUINEA = "PG";
+    public const PAPUA_NEW_GUINEA = "PG";
 
     /**
      * Philippines (the)
      */
-    const PHILIPPINES_THE = "PH";
+    public const PHILIPPINES_THE = "PH";
 
     /**
      * Pakistan
      */
-    const PAKISTAN = "PK";
+    public const PAKISTAN = "PK";
 
     /**
      * Poland
      */
-    const POLAND = "PL";
+    public const POLAND = "PL";
 
     /**
      * Saint Pierre and Miquelon
      */
-    const SAINT_PIERRE_AND_MIQUELON = "PM";
+    public const SAINT_PIERRE_AND_MIQUELON = "PM";
 
     /**
      * Pitcairn
      */
-    const PITCAIRN = "PN";
+    public const PITCAIRN = "PN";
 
     /**
      * Puerto Rico
      */
-    const PUERTO_RICO = "PR";
+    public const PUERTO_RICO = "PR";
 
     /**
      * Palestine, State of
      */
-    const PALESTINE_STATE_OF = "PS";
+    public const PALESTINE_STATE_OF = "PS";
 
     /**
      * Portugal
      */
-    const PORTUGAL = "PT";
+    public const PORTUGAL = "PT";
 
     /**
      * Palau
      */
-    const PALAU = "PW";
+    public const PALAU = "PW";
 
     /**
      * Paraguay
      */
-    const PARAGUAY = "PY";
+    public const PARAGUAY = "PY";
 
     /**
      * Qatar
      */
-    const QATAR = "QA";
+    public const QATAR = "QA";
 
     /**
      * RÃ©union
      */
-    const RUNION = "RE";
+    public const RUNION = "RE";
 
     /**
      * Romania
      */
-    const ROMANIA = "RO";
+    public const ROMANIA = "RO";
 
     /**
      * Serbia
      */
-    const SERBIA = "RS";
+    public const SERBIA = "RS";
 
     /**
      * Russian Federation (the)
      */
-    const RUSSIAN_FEDERATION_THE = "RU";
+    public const RUSSIAN_FEDERATION_THE = "RU";
 
     /**
      * Rwanda
      */
-    const RWANDA = "RW";
+    public const RWANDA = "RW";
 
     /**
      * Saudi Arabia
      */
-    const SAUDI_ARABIA = "SA";
+    public const SAUDI_ARABIA = "SA";
 
     /**
      * Solomon Islands
      */
-    const SOLOMON_ISLANDS = "SB";
+    public const SOLOMON_ISLANDS = "SB";
 
     /**
      * Seychelles
      */
-    const SEYCHELLES = "SC";
+    public const SEYCHELLES = "SC";
 
     /**
      * Sudan (the)
      */
-    const SUDAN_THE = "SD";
+    public const SUDAN_THE = "SD";
 
     /**
      * Sweden
      */
-    const SWEDEN = "SE";
+    public const SWEDEN = "SE";
 
     /**
      * Singapore
      */
-    const SINGAPORE = "SG";
+    public const SINGAPORE = "SG";
 
     /**
      * Saint Helena, Ascension and Tristan da Cunha
      */
-    const SAINT_HELENA_ASCENSION_AND_TRISTAN_DA_CUNHA = "SH";
+    public const SAINT_HELENA_ASCENSION_AND_TRISTAN_DA_CUNHA = "SH";
 
     /**
      * Slovenia
      */
-    const SLOVENIA = "SI";
+    public const SLOVENIA = "SI";
 
     /**
      * Svalbard and Jan Mayen
      */
-    const SVALBARD_AND_JAN_MAYEN = "SJ";
+    public const SVALBARD_AND_JAN_MAYEN = "SJ";
 
     /**
      * Slovakia
      */
-    const SLOVAKIA = "SK";
+    public const SLOVAKIA = "SK";
 
     /**
      * Sierra Leone
      */
-    const SIERRA_LEONE = "SL";
+    public const SIERRA_LEONE = "SL";
 
     /**
      * San Marino
      */
-    const SAN_MARINO = "SM";
+    public const SAN_MARINO = "SM";
 
     /**
      * Senegal
      */
-    const SENEGAL = "SN";
+    public const SENEGAL = "SN";
 
     /**
      * Somalia
      */
-    const SOMALIA = "SO";
+    public const SOMALIA = "SO";
 
     /**
      * Suriname
      */
-    const SURINAME = "SR";
+    public const SURINAME = "SR";
 
     /**
      * South Sudan
      */
-    const SOUTH_SUDAN = "SS";
+    public const SOUTH_SUDAN = "SS";
 
     /**
      * Sao Tome and Principe
      */
-    const SAO_TOME_AND_PRINCIPE = "ST";
+    public const SAO_TOME_AND_PRINCIPE = "ST";
 
     /**
      * El Salvador
      */
-    const EL_SALVADOR = "SV";
+    public const EL_SALVADOR = "SV";
 
     /**
      * Sint Maarten (Dutch part)
      */
-    const SINT_MAARTEN_DUTCH_PART = "SX";
+    public const SINT_MAARTEN_DUTCH_PART = "SX";
 
     /**
      * Syrian Arab Republic (the)
      */
-    const SYRIAN_ARAB_REPUBLIC_THE = "SY";
+    public const SYRIAN_ARAB_REPUBLIC_THE = "SY";
 
     /**
      * Eswatini
      */
-    const ESWATINI = "SZ";
+    public const ESWATINI = "SZ";
 
     /**
      * Turks and Caicos Islands (the)
      */
-    const TURKS_AND_CAICOS_ISLANDS_THE = "TC";
+    public const TURKS_AND_CAICOS_ISLANDS_THE = "TC";
 
     /**
      * Chad
      */
-    const CHAD = "TD";
+    public const CHAD = "TD";
 
     /**
      * French Southern Territories (the)
      */
-    const FRENCH_SOUTHERN_TERRITORIES_THE = "TF";
+    public const FRENCH_SOUTHERN_TERRITORIES_THE = "TF";
 
     /**
      * Togo
      */
-    const TOGO = "TG";
+    public const TOGO = "TG";
 
     /**
      * Thailand
      */
-    const THAILAND = "TH";
+    public const THAILAND = "TH";
 
     /**
      * Tajikistan
      */
-    const TAJIKISTAN = "TJ";
+    public const TAJIKISTAN = "TJ";
 
     /**
      * Tokelau
      */
-    const TOKELAU = "TK";
+    public const TOKELAU = "TK";
 
     /**
      * Timor-Leste
      */
-    const TIMORLESTE = "TL";
+    public const TIMORLESTE = "TL";
 
     /**
      * Turkmenistan
      */
-    const TURKMENISTAN = "TM";
+    public const TURKMENISTAN = "TM";
 
     /**
      * Tunisia
      */
-    const TUNISIA = "TN";
+    public const TUNISIA = "TN";
 
     /**
      * Tonga
      */
-    const TONGA = "TO";
+    public const TONGA = "TO";
 
     /**
      * Turkey
      */
-    const TURKEY = "TR";
+    public const TURKEY = "TR";
 
     /**
      * Trinidad and Tobago
      */
-    const TRINIDAD_AND_TOBAGO = "TT";
+    public const TRINIDAD_AND_TOBAGO = "TT";
 
     /**
      * Tuvalu
      */
-    const TUVALU = "TV";
+    public const TUVALU = "TV";
 
     /**
      * Taiwan (Province of China)
      */
-    const TAIWAN_PROVINCE_OF_CHINA = "TW";
+    public const TAIWAN_PROVINCE_OF_CHINA = "TW";
 
     /**
      * Tanzania, the United Republic of
      */
-    const TANZANIA_THE_UNITED_REPUBLIC_OF = "TZ";
+    public const TANZANIA_THE_UNITED_REPUBLIC_OF = "TZ";
 
     /**
      * Ukraine
      */
-    const UKRAINE = "UA";
+    public const UKRAINE = "UA";
 
     /**
      * Uganda
      */
-    const UGANDA = "UG";
+    public const UGANDA = "UG";
 
     /**
      * United States Minor Outlying Islands (the)
      */
-    const UNITED_STATES_MINOR_OUTLYING_ISLANDS_THE = "UM";
+    public const UNITED_STATES_MINOR_OUTLYING_ISLANDS_THE = "UM";
 
     /**
      * United States of America (the)
      */
-    const UNITED_STATES_OF_AMERICA_THE = "US";
+    public const UNITED_STATES_OF_AMERICA_THE = "US";
 
     /**
      * Uruguay
      */
-    const URUGUAY = "UY";
+    public const URUGUAY = "UY";
 
     /**
      * Uzbekistan
      */
-    const UZBEKISTAN = "UZ";
+    public const UZBEKISTAN = "UZ";
 
     /**
      * Holy See (the)
      */
-    const HOLY_SEE_THE = "VA";
+    public const HOLY_SEE_THE = "VA";
 
     /**
      * Saint Vincent and the Grenadines
      */
-    const SAINT_VINCENT_AND_THE_GRENADINES = "VC";
+    public const SAINT_VINCENT_AND_THE_GRENADINES = "VC";
 
     /**
      * Venezuela (Bolivarian Republic of)
      */
-    const VENEZUELA_BOLIVARIAN_REPUBLIC_OF = "VE";
+    public const VENEZUELA_BOLIVARIAN_REPUBLIC_OF = "VE";
 
     /**
      * Virgin Islands (British)
      */
-    const VIRGIN_ISLANDS_BRITISH = "VG";
+    public const VIRGIN_ISLANDS_BRITISH = "VG";
 
     /**
      * Virgin Islands (U.S.)
      */
-    const VIRGIN_ISLANDS_US = "VI";
+    public const VIRGIN_ISLANDS_US = "VI";
 
     /**
      * Viet Nam
      */
-    const VIET_NAM = "VN";
+    public const VIET_NAM = "VN";
 
     /**
      * Vanuatu
      */
-    const VANUATU = "VU";
+    public const VANUATU = "VU";
 
     /**
      * Wallis and Futuna
      */
-    const WALLIS_AND_FUTUNA = "WF";
+    public const WALLIS_AND_FUTUNA = "WF";
 
     /**
      * Samoa
      */
-    const SAMOA = "WS";
+    public const SAMOA = "WS";
 
     /**
      * Yemen
      */
-    const YEMEN = "YE";
+    public const YEMEN = "YE";
 
     /**
      * Mayotte
      */
-    const MAYOTTE = "YT";
+    public const MAYOTTE = "YT";
 
     /**
      * South Africa
      */
-    const SOUTH_AFRICA = "ZA";
+    public const SOUTH_AFRICA = "ZA";
 
     /**
      * Zambia
      */
-    const ZAMBIA = "ZM";
+    public const ZAMBIA = "ZM";
 
     /**
      * Zimbabwe
      */
-    const ZIMBABWE = "ZW";
+    public const ZIMBABWE = "ZW";
 
     /**
      * Kosovo
      */
-    const KOSOVO = "1A";
+    public const KOSOVO = "1A";
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdCurrencyCodes.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdCurrencyCodes.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdCurrencyCodes.php	(revision 8504)
@@ -24,894 +24,894 @@
      * UAE Dirham
      */
-    const UAE_DIRHAM = "AED";
+    public const UAE_DIRHAM = "AED";
 
     /**
      * Afghani
      */
-    const AFGHANI = "AFN";
+    public const AFGHANI = "AFN";
 
     /**
      * Lek
      */
-    const LEK = "ALL";
+    public const LEK = "ALL";
 
     /**
      * Armenian Dram
      */
-    const ARMENIAN_DRAM = "AMD";
+    public const ARMENIAN_DRAM = "AMD";
 
     /**
      * Netherlands Antillean Guilder
      */
-    const NETHERLANDS_ANTILLEAN_GUILDER = "ANG";
+    public const NETHERLANDS_ANTILLEAN_GUILDER = "ANG";
 
     /**
      * Kwanza
      */
-    const KWANZA = "AOA";
+    public const KWANZA = "AOA";
 
     /**
      * Argentine Peso
      */
-    const ARGENTINE_PESO = "ARS";
+    public const ARGENTINE_PESO = "ARS";
 
     /**
      * Australian Dollar
      */
-    const AUSTRALIAN_DOLLAR = "AUD";
+    public const AUSTRALIAN_DOLLAR = "AUD";
 
     /**
      * Aruban Florin
      */
-    const ARUBAN_FLORIN = "AWG";
+    public const ARUBAN_FLORIN = "AWG";
 
     /**
      * Azerbaijan Manat
      */
-    const AZERBAIJAN_MANAT = "AZN";
+    public const AZERBAIJAN_MANAT = "AZN";
 
     /**
      * Convertible Mark
      */
-    const CONVERTIBLE_MARK = "BAM";
+    public const CONVERTIBLE_MARK = "BAM";
 
     /**
      * Barbados Dollar
      */
-    const BARBADOS_DOLLAR = "BBD";
+    public const BARBADOS_DOLLAR = "BBD";
 
     /**
      * Taka
      */
-    const TAKA = "BDT";
+    public const TAKA = "BDT";
 
     /**
      * Bulgarian Lev
      */
-    const BULGARIAN_LEV = "BGN";
+    public const BULGARIAN_LEV = "BGN";
 
     /**
      * Bahraini Dinar
      */
-    const BAHRAINI_DINAR = "BHD";
+    public const BAHRAINI_DINAR = "BHD";
 
     /**
      * Burundi Franc
      */
-    const BURUNDI_FRANC = "BIF";
+    public const BURUNDI_FRANC = "BIF";
 
     /**
      * Bermudian Dollar
      */
-    const BERMUDIAN_DOLLAR = "BMD";
+    public const BERMUDIAN_DOLLAR = "BMD";
 
     /**
      * Brunei Dollar
      */
-    const BRUNEI_DOLLAR = "BND";
+    public const BRUNEI_DOLLAR = "BND";
 
     /**
      * Boliviano
      */
-    const BOLIVIANO = "BOB";
+    public const BOLIVIANO = "BOB";
 
     /**
      * Mvdol
      */
-    const MVDOL = "BOV";
+    public const MVDOL = "BOV";
 
     /**
      * Brazilian Real
      */
-    const BRAZILIAN_REAL = "BRL";
+    public const BRAZILIAN_REAL = "BRL";
 
     /**
      * Bahamian Dollar
      */
-    const BAHAMIAN_DOLLAR = "BSD";
+    public const BAHAMIAN_DOLLAR = "BSD";
 
     /**
      * Ngultrum
      */
-    const NGULTRUM = "BTN";
+    public const NGULTRUM = "BTN";
 
     /**
      * Pula
      */
-    const PULA = "BWP";
+    public const PULA = "BWP";
 
     /**
      * Belarusian Ruble
      */
-    const BELARUSIAN_RUBLE = "BYN";
+    public const BELARUSIAN_RUBLE = "BYN";
 
     /**
      * Belize Dollar
      */
-    const BELIZE_DOLLAR = "BZD";
+    public const BELIZE_DOLLAR = "BZD";
 
     /**
      * Canadian Dollar
      */
-    const CANADIAN_DOLLAR = "CAD";
+    public const CANADIAN_DOLLAR = "CAD";
 
     /**
      * Congolese Franc
      */
-    const CONGOLESE_FRANC = "CDF";
+    public const CONGOLESE_FRANC = "CDF";
 
     /**
      * WIR Euro
      */
-    const WIR_EURO = "CHE";
+    public const WIR_EURO = "CHE";
 
     /**
      * Swiss Franc
      */
-    const SWISS_FRANC = "CHF";
+    public const SWISS_FRANC = "CHF";
 
     /**
      * WIR Franc
      */
-    const WIR_FRANC = "CHW";
+    public const WIR_FRANC = "CHW";
 
     /**
      * Unidad de Fomento
      */
-    const UNIDAD_DE_FOMENTO = "CLF";
+    public const UNIDAD_DE_FOMENTO = "CLF";
 
     /**
      * Chilean Peso
      */
-    const CHILEAN_PESO = "CLP";
+    public const CHILEAN_PESO = "CLP";
 
     /**
      * Yuan Renminbi
      */
-    const YUAN_RENMINBI = "CNY";
+    public const YUAN_RENMINBI = "CNY";
 
     /**
      * Colombian Peso
      */
-    const COLOMBIAN_PESO = "COP";
+    public const COLOMBIAN_PESO = "COP";
 
     /**
      * Unidad de Valor Real
      */
-    const UNIDAD_DE_VALOR_REAL = "COU";
+    public const UNIDAD_DE_VALOR_REAL = "COU";
 
     /**
      * Costa Rican Colon
      */
-    const COSTA_RICAN_COLON = "CRC";
+    public const COSTA_RICAN_COLON = "CRC";
 
     /**
      * Peso Convertible
      */
-    const PESO_CONVERTIBLE = "CUC";
+    public const PESO_CONVERTIBLE = "CUC";
 
     /**
      * Cuban Peso
      */
-    const CUBAN_PESO = "CUP";
+    public const CUBAN_PESO = "CUP";
 
     /**
      * Cabo Verde Escudo
      */
-    const CABO_VERDE_ESCUDO = "CVE";
+    public const CABO_VERDE_ESCUDO = "CVE";
 
     /**
      * Czech Koruna
      */
-    const CZECH_KORUNA = "CZK";
+    public const CZECH_KORUNA = "CZK";
 
     /**
      * Djibouti Franc
      */
-    const DJIBOUTI_FRANC = "DJF";
+    public const DJIBOUTI_FRANC = "DJF";
 
     /**
      * Danish Krone
      */
-    const DANISH_KRONE = "DKK";
+    public const DANISH_KRONE = "DKK";
 
     /**
      * Dominican Peso
      */
-    const DOMINICAN_PESO = "DOP";
+    public const DOMINICAN_PESO = "DOP";
 
     /**
      * Algerian Dinar
      */
-    const ALGERIAN_DINAR = "DZD";
+    public const ALGERIAN_DINAR = "DZD";
 
     /**
      * Egyptian Pound
      */
-    const EGYPTIAN_POUND = "EGP";
+    public const EGYPTIAN_POUND = "EGP";
 
     /**
      * Nakfa
      */
-    const NAKFA = "ERN";
+    public const NAKFA = "ERN";
 
     /**
      * Ethiopian Birr
      */
-    const ETHIOPIAN_BIRR = "ETB";
+    public const ETHIOPIAN_BIRR = "ETB";
 
     /**
      * Euro
      */
-    const EURO = "EUR";
+    public const EURO = "EUR";
 
     /**
      * Fiji Dollar
      */
-    const FIJI_DOLLAR = "FJD";
+    public const FIJI_DOLLAR = "FJD";
 
     /**
      * Falkland Islands Pound
      */
-    const FALKLAND_ISLANDS_POUND = "FKP";
+    public const FALKLAND_ISLANDS_POUND = "FKP";
 
     /**
      * Pound Sterling
      */
-    const POUND_STERLING = "GBP";
+    public const POUND_STERLING = "GBP";
 
     /**
      * Lari
      */
-    const LARI = "GEL";
+    public const LARI = "GEL";
 
     /**
      * Ghana Cedi
      */
-    const GHANA_CEDI = "GHS";
+    public const GHANA_CEDI = "GHS";
 
     /**
      * Gibraltar Pound
      */
-    const GIBRALTAR_POUND = "GIP";
+    public const GIBRALTAR_POUND = "GIP";
 
     /**
      * Dalasi
      */
-    const DALASI = "GMD";
+    public const DALASI = "GMD";
 
     /**
      * Guinean Franc
      */
-    const GUINEAN_FRANC = "GNF";
+    public const GUINEAN_FRANC = "GNF";
 
     /**
      * Quetzal
      */
-    const QUETZAL = "GTQ";
+    public const QUETZAL = "GTQ";
 
     /**
      * Guyana Dollar
      */
-    const GUYANA_DOLLAR = "GYD";
+    public const GUYANA_DOLLAR = "GYD";
 
     /**
      * Hong Kong Dollar
      */
-    const HONG_KONG_DOLLAR = "HKD";
+    public const HONG_KONG_DOLLAR = "HKD";
 
     /**
      * Lempira
      */
-    const LEMPIRA = "HNL";
+    public const LEMPIRA = "HNL";
 
     /**
      * Kuna
      */
-    const KUNA = "HRK";
+    public const KUNA = "HRK";
 
     /**
      * Gourde
      */
-    const GOURDE = "HTG";
+    public const GOURDE = "HTG";
 
     /**
      * Forint
      */
-    const FORINT = "HUF";
+    public const FORINT = "HUF";
 
     /**
      * Rupiah
      */
-    const RUPIAH = "IDR";
+    public const RUPIAH = "IDR";
 
     /**
      * New Israeli Sheqel
      */
-    const NEW_ISRAELI_SHEQEL = "ILS";
+    public const NEW_ISRAELI_SHEQEL = "ILS";
 
     /**
      * Indian Rupee
      */
-    const INDIAN_RUPEE = "INR";
+    public const INDIAN_RUPEE = "INR";
 
     /**
      * Iraqi Dinar
      */
-    const IRAQI_DINAR = "IQD";
+    public const IRAQI_DINAR = "IQD";
 
     /**
      * Iranian Rial
      */
-    const IRANIAN_RIAL = "IRR";
+    public const IRANIAN_RIAL = "IRR";
 
     /**
      * Iceland Krona
      */
-    const ICELAND_KRONA = "ISK";
+    public const ICELAND_KRONA = "ISK";
 
     /**
      * Jamaican Dollar
      */
-    const JAMAICAN_DOLLAR = "JMD";
+    public const JAMAICAN_DOLLAR = "JMD";
 
     /**
      * Jordanian Dinar
      */
-    const JORDANIAN_DINAR = "JOD";
+    public const JORDANIAN_DINAR = "JOD";
 
     /**
      * Yen
      */
-    const YEN = "JPY";
+    public const YEN = "JPY";
 
     /**
      * Kenyan Shilling
      */
-    const KENYAN_SHILLING = "KES";
+    public const KENYAN_SHILLING = "KES";
 
     /**
      * Som
      */
-    const SOM = "KGS";
+    public const SOM = "KGS";
 
     /**
      * Riel
      */
-    const RIEL = "KHR";
+    public const RIEL = "KHR";
 
     /**
      * Comorian Franc
      */
-    const COMORIAN_FRANC = "KMF";
+    public const COMORIAN_FRANC = "KMF";
 
     /**
      * North Korean Won
      */
-    const NORTH_KOREAN_WON = "KPW";
+    public const NORTH_KOREAN_WON = "KPW";
 
     /**
      * Won
      */
-    const WON = "KRW";
+    public const WON = "KRW";
 
     /**
      * Kuwaiti Dinar
      */
-    const KUWAITI_DINAR = "KWD";
+    public const KUWAITI_DINAR = "KWD";
 
     /**
      * Cayman Islands Dollar
      */
-    const CAYMAN_ISLANDS_DOLLAR = "KYD";
+    public const CAYMAN_ISLANDS_DOLLAR = "KYD";
 
     /**
      * Tenge
      */
-    const TENGE = "KZT";
+    public const TENGE = "KZT";
 
     /**
      * Lao Kip
      */
-    const LAO_KIP = "LAK";
+    public const LAO_KIP = "LAK";
 
     /**
      * Lebanese Pound
      */
-    const LEBANESE_POUND = "LBP";
+    public const LEBANESE_POUND = "LBP";
 
     /**
      * Sri Lanka Rupee
      */
-    const SRI_LANKA_RUPEE = "LKR";
+    public const SRI_LANKA_RUPEE = "LKR";
 
     /**
      * Liberian Dollar
      */
-    const LIBERIAN_DOLLAR = "LRD";
+    public const LIBERIAN_DOLLAR = "LRD";
 
     /**
      * Loti
      */
-    const LOTI = "LSL";
+    public const LOTI = "LSL";
 
     /**
      * Libyan Dinar
      */
-    const LIBYAN_DINAR = "LYD";
+    public const LIBYAN_DINAR = "LYD";
 
     /**
      * Moroccan Dirham
      */
-    const MOROCCAN_DIRHAM = "MAD";
+    public const MOROCCAN_DIRHAM = "MAD";
 
     /**
      * Moldovan Leu
      */
-    const MOLDOVAN_LEU = "MDL";
+    public const MOLDOVAN_LEU = "MDL";
 
     /**
      * Malagasy Ariary
      */
-    const MALAGASY_ARIARY = "MGA";
+    public const MALAGASY_ARIARY = "MGA";
 
     /**
      * Denar
      */
-    const DENAR = "MKD";
+    public const DENAR = "MKD";
 
     /**
      * Kyat
      */
-    const KYAT = "MMK";
+    public const KYAT = "MMK";
 
     /**
      * Tugrik
      */
-    const TUGRIK = "MNT";
+    public const TUGRIK = "MNT";
 
     /**
      * Pataca
      */
-    const PATACA = "MOP";
+    public const PATACA = "MOP";
 
     /**
      * Ouguiya
      */
-    const OUGUIYA = "MRU";
+    public const OUGUIYA = "MRU";
 
     /**
      * Mauritius Rupee
      */
-    const MAURITIUS_RUPEE = "MUR";
+    public const MAURITIUS_RUPEE = "MUR";
 
     /**
      * Rufiyaa
      */
-    const RUFIYAA = "MVR";
+    public const RUFIYAA = "MVR";
 
     /**
      * Malawi Kwacha
      */
-    const MALAWI_KWACHA = "MWK";
+    public const MALAWI_KWACHA = "MWK";
 
     /**
      * Mexican Peso
      */
-    const MEXICAN_PESO = "MXN";
+    public const MEXICAN_PESO = "MXN";
 
     /**
      * Mexican Unidad de Inversion (UDI)
      */
-    const MEXICAN_UNIDAD_DE_INVERSION_UDI = "MXV";
+    public const MEXICAN_UNIDAD_DE_INVERSION_UDI = "MXV";
 
     /**
      * Malaysian Ringgit
      */
-    const MALAYSIAN_RINGGIT = "MYR";
+    public const MALAYSIAN_RINGGIT = "MYR";
 
     /**
      * Mozambique Metical
      */
-    const MOZAMBIQUE_METICAL = "MZN";
+    public const MOZAMBIQUE_METICAL = "MZN";
 
     /**
      * Namibia Dollar
      */
-    const NAMIBIA_DOLLAR = "NAD";
+    public const NAMIBIA_DOLLAR = "NAD";
 
     /**
      * Naira
      */
-    const NAIRA = "NGN";
+    public const NAIRA = "NGN";
 
     /**
      * Cordoba Oro
      */
-    const CORDOBA_ORO = "NIO";
+    public const CORDOBA_ORO = "NIO";
 
     /**
      * Norwegian Krone
      */
-    const NORWEGIAN_KRONE = "NOK";
+    public const NORWEGIAN_KRONE = "NOK";
 
     /**
      * Nepalese Rupee
      */
-    const NEPALESE_RUPEE = "NPR";
+    public const NEPALESE_RUPEE = "NPR";
 
     /**
      * New Zealand Dollar
      */
-    const NEW_ZEALAND_DOLLAR = "NZD";
+    public const NEW_ZEALAND_DOLLAR = "NZD";
 
     /**
      * Rial Omani
      */
-    const RIAL_OMANI = "OMR";
+    public const RIAL_OMANI = "OMR";
 
     /**
      * Balboa
      */
-    const BALBOA = "PAB";
+    public const BALBOA = "PAB";
 
     /**
      * Sol
      */
-    const SOL = "PEN";
+    public const SOL = "PEN";
 
     /**
      * Kina
      */
-    const KINA = "PGK";
+    public const KINA = "PGK";
 
     /**
      * Philippine Peso
      */
-    const PHILIPPINE_PESO = "PHP";
+    public const PHILIPPINE_PESO = "PHP";
 
     /**
      * Pakistan Rupee
      */
-    const PAKISTAN_RUPEE = "PKR";
+    public const PAKISTAN_RUPEE = "PKR";
 
     /**
      * Zloty
      */
-    const ZLOTY = "PLN";
+    public const ZLOTY = "PLN";
 
     /**
      * Guarani
      */
-    const GUARANI = "PYG";
+    public const GUARANI = "PYG";
 
     /**
      * Qatari Rial
      */
-    const QATARI_RIAL = "QAR";
+    public const QATARI_RIAL = "QAR";
 
     /**
      * Romanian Leu
      */
-    const ROMANIAN_LEU = "RON";
+    public const ROMANIAN_LEU = "RON";
 
     /**
      * Serbian Dinar
      */
-    const SERBIAN_DINAR = "RSD";
+    public const SERBIAN_DINAR = "RSD";
 
     /**
      * Russian Ruble
      */
-    const RUSSIAN_RUBLE = "RUB";
+    public const RUSSIAN_RUBLE = "RUB";
 
     /**
      * Rwanda Franc
      */
-    const RWANDA_FRANC = "RWF";
+    public const RWANDA_FRANC = "RWF";
 
     /**
      * Saudi Riyal
      */
-    const SAUDI_RIYAL = "SAR";
+    public const SAUDI_RIYAL = "SAR";
 
     /**
      * Solomon Islands Dollar
      */
-    const SOLOMON_ISLANDS_DOLLAR = "SBD";
+    public const SOLOMON_ISLANDS_DOLLAR = "SBD";
 
     /**
      * Seychelles Rupee
      */
-    const SEYCHELLES_RUPEE = "SCR";
+    public const SEYCHELLES_RUPEE = "SCR";
 
     /**
      * Sudanese Pound
      */
-    const SUDANESE_POUND = "SDG";
+    public const SUDANESE_POUND = "SDG";
 
     /**
      * Swedish Krona
      */
-    const SWEDISH_KRONA = "SEK";
+    public const SWEDISH_KRONA = "SEK";
 
     /**
      * Singapore Dollar
      */
-    const SINGAPORE_DOLLAR = "SGD";
+    public const SINGAPORE_DOLLAR = "SGD";
 
     /**
      * Saint Helena Pound
      */
-    const SAINT_HELENA_POUND = "SHP";
+    public const SAINT_HELENA_POUND = "SHP";
 
     /**
      * Leone
      */
-    const LEONE = "SLL";
+    public const LEONE = "SLL";
 
     /**
      * Somali Shilling
      */
-    const SOMALI_SHILLING = "SOS";
+    public const SOMALI_SHILLING = "SOS";
 
     /**
      * Surinam Dollar
      */
-    const SURINAM_DOLLAR = "SRD";
+    public const SURINAM_DOLLAR = "SRD";
 
     /**
      * South Sudanese Pound
      */
-    const SOUTH_SUDANESE_POUND = "SSP";
+    public const SOUTH_SUDANESE_POUND = "SSP";
 
     /**
      * Dobra
      */
-    const DOBRA = "STN";
+    public const DOBRA = "STN";
 
     /**
      * El Salvador Colon
      */
-    const EL_SALVADOR_COLON = "SVC";
+    public const EL_SALVADOR_COLON = "SVC";
 
     /**
      * Syrian Pound
      */
-    const SYRIAN_POUND = "SYP";
+    public const SYRIAN_POUND = "SYP";
 
     /**
      * Lilangeni
      */
-    const LILANGENI = "SZL";
+    public const LILANGENI = "SZL";
 
     /**
      * Baht
      */
-    const BAHT = "THB";
+    public const BAHT = "THB";
 
     /**
      * Somoni
      */
-    const SOMONI = "TJS";
+    public const SOMONI = "TJS";
 
     /**
      * Turkmenistan New Manat
      */
-    const TURKMENISTAN_NEW_MANAT = "TMT";
+    public const TURKMENISTAN_NEW_MANAT = "TMT";
 
     /**
      * Tunisian Dinar
      */
-    const TUNISIAN_DINAR = "TND";
+    public const TUNISIAN_DINAR = "TND";
 
     /**
      * Paâanga
      */
-    const PAANGA = "TOP";
+    public const PAANGA = "TOP";
 
     /**
      * Turkish Lira
      */
-    const TURKISH_LIRA = "TRY";
+    public const TURKISH_LIRA = "TRY";
 
     /**
      * Trinidad and Tobago Dollar
      */
-    const TRINIDAD_AND_TOBAGO_DOLLAR = "TTD";
+    public const TRINIDAD_AND_TOBAGO_DOLLAR = "TTD";
 
     /**
      * New Taiwan Dollar
      */
-    const NEW_TAIWAN_DOLLAR = "TWD";
+    public const NEW_TAIWAN_DOLLAR = "TWD";
 
     /**
      * Tanzanian Shilling
      */
-    const TANZANIAN_SHILLING = "TZS";
+    public const TANZANIAN_SHILLING = "TZS";
 
     /**
      * Hryvnia
      */
-    const HRYVNIA = "UAH";
+    public const HRYVNIA = "UAH";
 
     /**
      * Uganda Shilling
      */
-    const UGANDA_SHILLING = "UGX";
+    public const UGANDA_SHILLING = "UGX";
 
     /**
      * US Dollar
      */
-    const US_DOLLAR = "USD";
+    public const US_DOLLAR = "USD";
 
     /**
      * US Dollar (Next day)
      */
-    const US_DOLLAR_NEXT_DAY = "USN";
+    public const US_DOLLAR_NEXT_DAY = "USN";
 
     /**
      * Uruguay Peso en Unidades Indexadas (UI)
      */
-    const URUGUAY_PESO_EN_UNIDADES_INDEXADAS_UI = "UYI";
+    public const URUGUAY_PESO_EN_UNIDADES_INDEXADAS_UI = "UYI";
 
     /**
      * Peso Uruguayo
      */
-    const PESO_URUGUAYO = "UYU";
+    public const PESO_URUGUAYO = "UYU";
 
     /**
      * Unidad Previsional
      */
-    const UNIDAD_PREVISIONAL = "UYW";
+    public const UNIDAD_PREVISIONAL = "UYW";
 
     /**
      * Uzbekistan Sum
      */
-    const UZBEKISTAN_SUM = "UZS";
+    public const UZBEKISTAN_SUM = "UZS";
 
     /**
      * BolÃ­var Soberano
      */
-    const BOLVAR_SOBERANO = "VES";
+    public const BOLVAR_SOBERANO = "VES";
 
     /**
      * Dong
      */
-    const DONG = "VND";
+    public const DONG = "VND";
 
     /**
      * Vatu
      */
-    const VATU = "VUV";
+    public const VATU = "VUV";
 
     /**
      * Tala
      */
-    const TALA = "WST";
+    public const TALA = "WST";
 
     /**
      * CFA Franc BEAC
      */
-    const CFA_FRANC_BEAC = "XAF";
+    public const CFA_FRANC_BEAC = "XAF";
 
     /**
      * Silver
      */
-    const SILVER = "XAG";
+    public const SILVER = "XAG";
 
     /**
      * Gold
      */
-    const GOLD = "XAU";
+    public const GOLD = "XAU";
 
     /**
      * Bond Markets Unit European Composite Unit (EURCO)
      */
-    const BOND_MARKETS_UNIT_EUROPEAN_COMPOSITE_UNIT_EURCO = "XBA";
+    public const BOND_MARKETS_UNIT_EUROPEAN_COMPOSITE_UNIT_EURCO = "XBA";
 
     /**
      * Bond Markets Unit European Monetary Unit (E.M.U.-6)
      */
-    const BOND_MARKETS_UNIT_EUROPEAN_MONETARY_UNIT_EMU6 = "XBB";
+    public const BOND_MARKETS_UNIT_EUROPEAN_MONETARY_UNIT_EMU6 = "XBB";
 
     /**
      * Bond Markets Unit European Unit of Account 9 (E.U.A.-9)
      */
-    const BOND_MARKETS_UNIT_EUROPEAN_UNIT_OF_ACCOUNT_9_EUA9 = "XBC";
+    public const BOND_MARKETS_UNIT_EUROPEAN_UNIT_OF_ACCOUNT_9_EUA9 = "XBC";
 
     /**
      * Bond Markets Unit European Unit of Account 17 (E.U.A.-17)
      */
-    const BOND_MARKETS_UNIT_EUROPEAN_UNIT_OF_ACCOUNT_17_EUA17 = "XBD";
+    public const BOND_MARKETS_UNIT_EUROPEAN_UNIT_OF_ACCOUNT_17_EUA17 = "XBD";
 
     /**
      * East Caribbean Dollar
      */
-    const EAST_CARIBBEAN_DOLLAR = "XCD";
+    public const EAST_CARIBBEAN_DOLLAR = "XCD";
 
     /**
      * SDR (Special Drawing Right)
      */
-    const SDR_SPECIAL_DRAWING_RIGHT = "XDR";
+    public const SDR_SPECIAL_DRAWING_RIGHT = "XDR";
 
     /**
      * CFA Franc BCEAO
      */
-    const CFA_FRANC_BCEAO = "XOF";
+    public const CFA_FRANC_BCEAO = "XOF";
 
     /**
      * Palladium
      */
-    const PALLADIUM = "XPD";
+    public const PALLADIUM = "XPD";
 
     /**
      * CFP Franc
      */
-    const CFP_FRANC = "XPF";
+    public const CFP_FRANC = "XPF";
 
     /**
      * Platinum
      */
-    const PLATINUM = "XPT";
+    public const PLATINUM = "XPT";
 
     /**
      * Sucre
      */
-    const SUCRE = "XSU";
+    public const SUCRE = "XSU";
 
     /**
      * Codes specifically reserved for testing purposes
      */
-    const CODES_SPECIFICALLY_RESERVED_FOR_TESTING_PURPOSES = "XTS";
+    public const CODES_SPECIFICALLY_RESERVED_FOR_TESTING_PURPOSES = "XTS";
 
     /**
      * ADB Unit of Account
      */
-    const ADB_UNIT_OF_ACCOUNT = "XUA";
+    public const ADB_UNIT_OF_ACCOUNT = "XUA";
 
     /**
      * The codes assigned for transactions where no currency is involved
      */
-    const THE_CODES_ASSIGNED_FOR_TRANSACTIONS_WHERE_NO_CURRENCY_IS_INVOLVED = "XXX";
+    public const THE_CODES_ASSIGNED_FOR_TRANSACTIONS_WHERE_NO_CURRENCY_IS_INVOLVED = "XXX";
 
     /**
      * Yemeni Rial
      */
-    const YEMENI_RIAL = "YER";
+    public const YEMENI_RIAL = "YER";
 
     /**
      * Rand
      */
-    const RAND = "ZAR";
+    public const RAND = "ZAR";
 
     /**
      * Zambian Kwacha
      */
-    const ZAMBIAN_KWACHA = "ZMW";
+    public const ZAMBIAN_KWACHA = "ZMW";
 
     /**
      * Zimbabwe Dollar
      */
-    const ZIMBABWE_DOLLAR = "ZWL";
+    public const ZIMBABWE_DOLLAR = "ZWL";
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdDutyTaxFeeCategories.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdDutyTaxFeeCategories.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdDutyTaxFeeCategories.php	(revision 8504)
@@ -24,44 +24,44 @@
      * Standard rate
      */
-    const STANDARD_RATE = "S";
+    public const STANDARD_RATE = "S";
 
     /**
      * Zero rated goods
      */
-    const ZERO_RATED_GOODS = "Z";
+    public const ZERO_RATED_GOODS = "Z";
 
     /**
      * Exempt from tax
      */
-    const EXEMPT_FROM_TAX = "E";
+    public const EXEMPT_FROM_TAX = "E";
 
     /**
      * VAT Reverse charge
      */
-    const VAT_REVERSE_CHARGE = "AE";
+    public const VAT_REVERSE_CHARGE = "AE";
 
     /**
      * VAT exempt for EEA intra-community supply of goods and services
      */
-    const VAT_EXEMPT_FOR_EEA_INTRACOMMUNITY_SUPPLY_OF_GOODS_AND_SERVICES = "K";
+    public const VAT_EXEMPT_FOR_EEA_INTRACOMMUNITY_SUPPLY_OF_GOODS_AND_SERVICES = "K";
 
     /**
      * Free export item, tax not charged
      */
-    const FREE_EXPORT_ITEM_TAX_NOT_CHARGED = "G";
+    public const FREE_EXPORT_ITEM_TAX_NOT_CHARGED = "G";
 
     /**
      * Service outside scope of tax
      */
-    const SERVICE_OUTSIDE_SCOPE_OF_TAX = "O";
+    public const SERVICE_OUTSIDE_SCOPE_OF_TAX = "O";
 
     /**
      * Canary Islands general indirect tax
      */
-    const CANARY_ISLANDS_GENERAL_INDIRECT_TAX = "L";
+    public const CANARY_ISLANDS_GENERAL_INDIRECT_TAX = "L";
 
     /**
      * Tax for production, services and importation in Ceuta and Melilla
      */
-    const TAX_FOR_PRODUCTION_SERVICES_AND_IMPORTATION_IN_CEUTA_AND_MELILLA = "M";
+    public const TAX_FOR_PRODUCTION_SERVICES_AND_IMPORTATION_IN_CEUTA_AND_MELILLA = "M";
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdElectronicAddressScheme.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdElectronicAddressScheme.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdElectronicAddressScheme.php	(revision 8504)
@@ -21,458 +21,459 @@
  */
 
-class ZugferdElectronicAddressScheme {
+class ZugferdElectronicAddressScheme
+{
     /**
      * O.F.T.P. (ODETTE File Transfer Protocol)
      */
-    const UNECE3155_AN = "AN";
+    public const UNECE3155_AN = "AN";
 
     /**
      * X.400 address for mail text
      */
-    const UNECE3155_AQ = "AQ";
+    public const UNECE3155_AQ = "AQ";
 
     /**
      * AS2 exchange
      */
-    const UNECE3155_AS = "AS";
+    public const UNECE3155_AS = "AS";
 
     /**
      * File Transfer Protocol
      */
-    const UNECE3155_AU = "AU";
+    public const UNECE3155_AU = "AU";
 
     /**
      * Electronic mail (SMTP)
      */
-    const UNECE3155_EM = "EM";
+    public const UNECE3155_EM = "EM";
 
     /**
      * System Information et Repertoire des Entreprise et des Etablissements: SIRENE
      */
-    const ICD_0002 = "0002";
+    public const ICD_0002 = "0002";
 
     /**
      * Organisationsnummer
      */
-    const ICD_0007 = "0007";
+    public const ICD_0007 = "0007";
 
     /**
      * SIRET-CODE
      */
-    const ICD_0009 = "0009";
+    public const ICD_0009 = "0009";
 
     /**
      * LY-tunnus
      */
-    const ICD_0037 = "0037";
+    public const ICD_0037 = "0037";
 
     /**
      * Data Universal Numbering System (D-U-N-S Number)
      */
-    const ICD_0060 = "0060";
+    public const ICD_0060 = "0060";
 
     /**
      * EAN Location Code
      */
-    const ICD_0088 = "0088";
+    public const ICD_0088 = "0088";
 
     /**
      * DANISH CHAMBER OF COMMERCE Scheme (EDIRA compliant)
      */
-    const ICD_0096 = "0096";
+    public const ICD_0096 = "0096";
 
     /**
      * FTI - Ediforum Italia, (EDIRA compliant)
      */
-    const ICD_0097 = "0097";
+    public const ICD_0097 = "0097";
 
     /**
      * Vereniging van Kamers van Koophandel en Fabrieken in Nederland (Association of Chambers of Commerce and Industry in the Netherlands), Scheme (EDIRA compliant)
      */
-    const ICD_0106 = "0106";
+    public const ICD_0106 = "0106";
 
     /**
      * Directorates of the European Commission
      */
-    const ICD_0130 = "0130";
+    public const ICD_0130 = "0130";
 
     /**
      * SIA Object Identifiers
      */
-    const ICD_0135 = "0135";
+    public const ICD_0135 = "0135";
 
     /**
      * SECETI Object Identifiers
      */
-    const ICD_0142 = "0142";
+    public const ICD_0142 = "0142";
 
     /**
      * Australian Business Number (ABN) Scheme
      */
-    const ICD_0151 = "0151";
+    public const ICD_0151 = "0151";
 
     /**
      * NumÃ©ro d'identification suisse des enterprises (IDE), Swiss Unique Business Identification Number (UIDB)
      */
-    const ICD_0183 = "0183";
+    public const ICD_0183 = "0183";
 
     /**
      * DIGSTORG
      */
-    const ICD_0184 = "0184";
+    public const ICD_0184 = "0184";
 
     /**
      * Dutch Originator's Identification Number
      */
-    const ICD_0190 = "0190";
+    public const ICD_0190 = "0190";
 
     /**
      * Centre of Registers and Information Systems of the Ministry of Justice
      */
-    const ICD_0191 = "0191";
+    public const ICD_0191 = "0191";
 
     /**
      * Enhetsregisteret ved Bronnoysundregisterne
      */
-    const ICD_0192 = "0192";
+    public const ICD_0192 = "0192";
 
     /**
      * UBL.BE party identifier
      */
-    const ICD_0193 = "0193";
+    public const ICD_0193 = "0193";
 
     /**
      * KOIOS Open Technical Dictionary
      */
-    const ICD_0194 = "0194";
+    public const ICD_0194 = "0194";
 
     /**
      * Singapore UEN identifier
      */
-    const ICD_0195 = "0195";
+    public const ICD_0195 = "0195";
 
     /**
      * Kennitala - Iceland legal id for individuals and legal entities
      */
-    const ICD_0196 = "0196";
+    public const ICD_0196 = "0196";
 
     /**
      * ERSTORG
      */
-    const ICD_0198 = "0198";
+    public const ICD_0198 = "0198";
 
     /**
      * Legal Entity Identifier (LEI)
      */
-    const ICD_0199 = "0199";
+    public const ICD_0199 = "0199";
 
     /**
      * Legal entity code (Lithuania)
      */
-    const ICD_0200 = "0200";
+    public const ICD_0200 = "0200";
 
     /**
      * Codice Univoco UnitÃ  Organizzativa iPA
      */
-    const ICD_0201 = "0201";
+    public const ICD_0201 = "0201";
 
     /**
      * Indirizzo di Posta Elettronica Certificata
      */
-    const ICD_0202 = "0202";
+    public const ICD_0202 = "0202";
 
     /**
      * eDelivery Network Participant identifier
      */
-    const ICD_0203 = "0203";
+    public const ICD_0203 = "0203";
 
     /**
      * Leitweg-ID
      */
-    const ICD_0204 = "0204";
+    public const ICD_0204 = "0204";
 
     /**
      * Numero d'entreprise / ondernemingsnummer / Unternehmensnummer
      */
-    const ICD_0208 = "0208";
+    public const ICD_0208 = "0208";
 
     /**
      * GS1 identification keys
      */
-    const ICD_0209 = "0209";
+    public const ICD_0209 = "0209";
 
     /**
      * CODICE FISCALE
      */
-    const ICD_0210 = "0210";
+    public const ICD_0210 = "0210";
 
     /**
      * PARTITA IVA
      */
-    const ICD_0211 = "0211";
+    public const ICD_0211 = "0211";
 
     /**
      * Finnish Organization Identifier
      */
-    const ICD_0212 = "0212";
+    public const ICD_0212 = "0212";
 
     /**
      * Finnish Organization Value Add Tax Identifier
      */
-    const ICD_0213 = "0213";
+    public const ICD_0213 = "0213";
 
     /**
      * Danish Ministry of the Interior and Health
      */
-    const PEPPOL_9901 = "9901";
+    public const PEPPOL_9901 = "9901";
 
     /**
      * The Danish Commerce and Companies Agency
      */
-    const PEPPOL_9902 = "9902";
+    public const PEPPOL_9902 = "9902";
 
     /**
      * Danish Ministry of Taxation, Central Customs and Tax Administration
      */
-    const PEPPOL_9904 = "9904";
+    public const PEPPOL_9904 = "9904";
 
     /**
      * Danish VANS providers
      */
-    const PEPPOL_9905 = "9905";
+    public const PEPPOL_9905 = "9905";
 
     /**
      * Ufficio responsabile gestione partite IVA
      */
-    const PEPPOL_9906 = "9906";
+    public const PEPPOL_9906 = "9906";
 
     /**
      * TAX Authority
      */
-    const PEPPOL_9907 = "9907";
+    public const PEPPOL_9907 = "9907";
 
     /**
      * Hungary VAT number
      */
-    const PEPPOL_9910 = "9910";
+    public const PEPPOL_9910 = "9910";
 
     /**
      * Business Registers Network
      */
-    const PEPPOL_9913 = "9913";
+    public const PEPPOL_9913 = "9913";
 
     /**
      * Ãsterreichische Umsatzsteuer-Identifikationsnummer
      */
-    const PEPPOL_9914 = "9914";
+    public const PEPPOL_9914 = "9914";
 
     /**
      * Ãsterreichisches Verwaltungs bzw. Organisationskennzeichen
      */
-    const PEPPOL_9915 = "9915";
+    public const PEPPOL_9915 = "9915";
 
     /**
      * Kennitala - Iceland legal id for organizations and individuals
      */
-    const PEPPOL_9917 = "9917";
+    public const PEPPOL_9917 = "9917";
 
     /**
      * SOCIETY FOR WORLDWIDE INTERBANK FINANCIAL, TELECOMMUNICATION S.W.I.F.T
      */
-    const PEPPOL_9918 = "9918";
+    public const PEPPOL_9918 = "9918";
 
     /**
      * Kennziffer des Unternehmensregisters
      */
-    const PEPPOL_9919 = "9919";
+    public const PEPPOL_9919 = "9919";
 
     /**
      * Agencia EspaÃ±ola de AdministraciÃ³n Tributaria
      */
-    const PEPPOL_9920 = "9920";
+    public const PEPPOL_9920 = "9920";
 
     /**
      * Indice delle Pubbliche Amministrazioni
      */
-    const PEPPOL_9921 = "9921";
+    public const PEPPOL_9921 = "9921";
 
     /**
      * Andorra VAT number
      */
-    const PEPPOL_9922 = "9922";
+    public const PEPPOL_9922 = "9922";
 
     /**
      * Albania VAT number
      */
-    const PEPPOL_9923 = "9923";
+    public const PEPPOL_9923 = "9923";
 
     /**
      * Bosnia and Herzegovina VAT number
      */
-    const PEPPOL_9924 = "9924";
+    public const PEPPOL_9924 = "9924";
 
     /**
      * Belgium VAT number
      */
-    const PEPPOL_9925 = "9925";
+    public const PEPPOL_9925 = "9925";
 
     /**
      * Bulgaria VAT number
      */
-    const PEPPOL_9926 = "9926";
+    public const PEPPOL_9926 = "9926";
 
     /**
      * Switzerland VAT number
      */
-    const PEPPOL_9927 = "9927";
+    public const PEPPOL_9927 = "9927";
 
     /**
      * Cyprus VAT number
      */
-    const PEPPOL_9928 = "9928";
+    public const PEPPOL_9928 = "9928";
 
     /**
      * Czech Republic VAT number
      */
-    const PEPPOL_9929 = "9929";
+    public const PEPPOL_9929 = "9929";
 
     /**
      * Germany VAT number
      */
-    const PEPPOL_9930 = "9930";
+    public const PEPPOL_9930 = "9930";
 
     /**
      * Estonia VAT number
      */
-    const PEPPOL_9931 = "9931";
+    public const PEPPOL_9931 = "9931";
 
     /**
      * United Kingdom VAT number
      */
-    const PEPPOL_9932 = "9932";
+    public const PEPPOL_9932 = "9932";
 
     /**
      * Greece VAT number
      */
-    const PEPPOL_9933 = "9933";
+    public const PEPPOL_9933 = "9933";
 
     /**
      * Croatia VAT number
      */
-    const PEPPOL_9934 = "9934";
+    public const PEPPOL_9934 = "9934";
 
     /**
      * Ireland VAT number
      */
-    const PEPPOL_9935 = "9935";
+    public const PEPPOL_9935 = "9935";
 
     /**
      * Liechtenstein VAT number
      */
-    const PEPPOL_9936 = "9936";
+    public const PEPPOL_9936 = "9936";
 
     /**
      * Lithuania VAT number
      */
-    const PEPPOL_9937 = "9937";
+    public const PEPPOL_9937 = "9937";
 
     /**
      * Luxemburg VAT number
      */
-    const PEPPOL_9938 = "9938";
+    public const PEPPOL_9938 = "9938";
 
     /**
      * Latvia VAT number
      */
-    const PEPPOL_9939 = "9939";
+    public const PEPPOL_9939 = "9939";
 
     /**
      * Monaco VAT number
      */
-    const PEPPOL_9940 = "9940";
+    public const PEPPOL_9940 = "9940";
 
     /**
      * Montenegro VAT number
      */
-    const PEPPOL_9941 = "9941";
+    public const PEPPOL_9941 = "9941";
 
     /**
      * Macedonia, the former Yugoslav Republic of VAT number
      */
-    const PEPPOL_9942 = "9942";
+    public const PEPPOL_9942 = "9942";
 
     /**
      * Malta VAT number
      */
-    const PEPPOL_9943 = "9943";
+    public const PEPPOL_9943 = "9943";
 
     /**
      * Netherlands VAT number
      */
-    const PEPPOL_9944 = "9944";
+    public const PEPPOL_9944 = "9944";
 
     /**
      * Poland VAT number
      */
-    const PEPPOL_9945 = "9945";
+    public const PEPPOL_9945 = "9945";
 
     /**
      * Portugal VAT number
      */
-    const PEPPOL_9946 = "9946";
+    public const PEPPOL_9946 = "9946";
 
     /**
      * Romania VAT number
      */
-    const PEPPOL_9947 = "9947";
+    public const PEPPOL_9947 = "9947";
 
     /**
      * Serbia VAT number
      */
-    const PEPPOL_9948 = "9948";
+    public const PEPPOL_9948 = "9948";
 
     /**
      * Slovenia VAT number
      */
-    const PEPPOL_9949 = "9949";
+    public const PEPPOL_9949 = "9949";
 
     /**
      * Slovakia VAT number
      */
-    const PEPPOL_9950 = "9950";
+    public const PEPPOL_9950 = "9950";
 
     /**
      * San Marino VAT number
      */
-    const PEPPOL_9951 = "9951";
+    public const PEPPOL_9951 = "9951";
 
     /**
      * Turkey VAT number
      */
-    const PEPPOL_9952 = "9952";
+    public const PEPPOL_9952 = "9952";
 
     /**
      * Holy See (Vatican City State) VAT number
      */
-    const PEPPOL_9953 = "9953";
+    public const PEPPOL_9953 = "9953";
 
     /**
      * Swedish VAT number
      */
-    const PEPPOL_9955 = "9955";
+    public const PEPPOL_9955 = "9955";
 
     /**
      * Belgian Crossroad Bank of Enterprises
      */
-    const PEPPOL_9956 = "9956";
+    public const PEPPOL_9956 = "9956";
 
     /**
      * French VAT number
      */
-    const PEPPOL_9957 = "9957";
+    public const PEPPOL_9957 = "9957";
 
     /**
      * German Leitweg ID
      */
-    const PEPPOL_9958 = "9958";
+    public const PEPPOL_9958 = "9958";
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdItemTypeIdentificationCodes.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdItemTypeIdentificationCodes.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdItemTypeIdentificationCodes.php	(revision 8504)
@@ -24,904 +24,904 @@
      * Product version number
      */
-    const UNTDID_7143_AA = 'AA';
+    public const UNTDID_7143_AA = 'AA';
 
     /**
      * Assembly
      */
-    const UNTDID_7143_AB = 'AB';
+    public const UNTDID_7143_AB = 'AB';
 
     /**
      * HIBC (Health Industry Bar Code)
      */
-    const UNTDID_7143_AC = 'AC';
+    public const UNTDID_7143_AC = 'AC';
 
     /**
      * Cold roll number
      */
-    const UNTDID_7143_AD = 'AD';
+    public const UNTDID_7143_AD = 'AD';
 
     /**
      * Hot roll number
      */
-    const UNTDID_7143_AE = 'AE';
+    public const UNTDID_7143_AE = 'AE';
 
     /**
      * Slab number
      */
-    const UNTDID_7143_AF = 'AF';
+    public const UNTDID_7143_AF = 'AF';
 
     /**
      * Software revision number
      */
-    const UNTDID_7143_AG = 'AG';
+    public const UNTDID_7143_AG = 'AG';
 
     /**
      * UPC (Universal Product Code) Consumer package code (1-5-5)
      */
-    const UNTDID_7143_AH = 'AH';
+    public const UNTDID_7143_AH = 'AH';
 
     /**
      * UPC (Universal Product Code) Consumer package code (1-5-5-
      */
-    const UNTDID_7143_AI = 'AI';
+    public const UNTDID_7143_AI = 'AI';
 
     /**
      * Sample number
      */
-    const UNTDID_7143_AJ = 'AJ';
+    public const UNTDID_7143_AJ = 'AJ';
 
     /**
      * Pack number
      */
-    const UNTDID_7143_AK = 'AK';
+    public const UNTDID_7143_AK = 'AK';
 
     /**
      * UPC (Universal Product Code) Shipping container code (1-2-
      */
-    const UNTDID_7143_AL = 'AL';
+    public const UNTDID_7143_AL = 'AL';
 
     /**
      * UPC (Universal Product Code)/EAN (European article number)
      */
-    const UNTDID_7143_AM = 'AM';
+    public const UNTDID_7143_AM = 'AM';
 
     /**
      * UPC (Universal Product Code) suffix
      */
-    const UNTDID_7143_AN = 'AN';
+    public const UNTDID_7143_AN = 'AN';
 
     /**
      * State label code
      */
-    const UNTDID_7143_AO = 'AO';
+    public const UNTDID_7143_AO = 'AO';
 
     /**
      * Heat number
      */
-    const UNTDID_7143_AP = 'AP';
+    public const UNTDID_7143_AP = 'AP';
 
     /**
      * Coupon number
      */
-    const UNTDID_7143_AQ = 'AQ';
+    public const UNTDID_7143_AQ = 'AQ';
 
     /**
      * Resource number
      */
-    const UNTDID_7143_AR = 'AR';
+    public const UNTDID_7143_AR = 'AR';
 
     /**
      * Work task number
      */
-    const UNTDID_7143_AS = 'AS';
+    public const UNTDID_7143_AS = 'AS';
 
     /**
      * Price look up number
      */
-    const UNTDID_7143_AT = 'AT';
+    public const UNTDID_7143_AT = 'AT';
 
     /**
      * NSN (North Atlantic Treaty Organization Stock Number)
      */
-    const UNTDID_7143_AU = 'AU';
+    public const UNTDID_7143_AU = 'AU';
 
     /**
      * Refined product code
      */
-    const UNTDID_7143_AV = 'AV';
+    public const UNTDID_7143_AV = 'AV';
 
     /**
      * Exhibit
      */
-    const UNTDID_7143_AW = 'AW';
+    public const UNTDID_7143_AW = 'AW';
 
     /**
      * End item
      */
-    const UNTDID_7143_AX = 'AX';
+    public const UNTDID_7143_AX = 'AX';
 
     /**
      * Federal supply classification
      */
-    const UNTDID_7143_AY = 'AY';
+    public const UNTDID_7143_AY = 'AY';
 
     /**
      * Engineering data list
      */
-    const UNTDID_7143_AZ = 'AZ';
+    public const UNTDID_7143_AZ = 'AZ';
 
     /**
      * Milestone event number
      */
-    const UNTDID_7143_BA = 'BA';
+    public const UNTDID_7143_BA = 'BA';
 
     /**
      * Lot number
      */
-    const UNTDID_7143_BB = 'BB';
+    public const UNTDID_7143_BB = 'BB';
 
     /**
      * National drug code 4-4-2 format
      */
-    const UNTDID_7143_BC = 'BC';
+    public const UNTDID_7143_BC = 'BC';
 
     /**
      * National drug code 5-3-2 format
      */
-    const UNTDID_7143_BD = 'BD';
+    public const UNTDID_7143_BD = 'BD';
 
     /**
      * National drug code 5-4-1 format
      */
-    const UNTDID_7143_BE = 'BE';
+    public const UNTDID_7143_BE = 'BE';
 
     /**
      * National drug code 5-4-2 format
      */
-    const UNTDID_7143_BF = 'BF';
+    public const UNTDID_7143_BF = 'BF';
 
     /**
      * National drug code
      */
-    const UNTDID_7143_BG = 'BG';
+    public const UNTDID_7143_BG = 'BG';
 
     /**
      * Part number
      */
-    const UNTDID_7143_BH = 'BH';
+    public const UNTDID_7143_BH = 'BH';
 
     /**
      * Local Stock Number (LSN)
      */
-    const UNTDID_7143_BI = 'BI';
+    public const UNTDID_7143_BI = 'BI';
 
     /**
      * Next higher assembly number
      */
-    const UNTDID_7143_BJ = 'BJ';
+    public const UNTDID_7143_BJ = 'BJ';
 
     /**
      * Data category
      */
-    const UNTDID_7143_BK = 'BK';
+    public const UNTDID_7143_BK = 'BK';
 
     /**
      * Control number
      */
-    const UNTDID_7143_BL = 'BL';
+    public const UNTDID_7143_BL = 'BL';
 
     /**
      * Special material identification code
      */
-    const UNTDID_7143_BM = 'BM';
+    public const UNTDID_7143_BM = 'BM';
 
     /**
      * Locally assigned control number
      */
-    const UNTDID_7143_BN = 'BN';
+    public const UNTDID_7143_BN = 'BN';
 
     /**
      * Buyer's colour
      */
-    const UNTDID_7143_BO = 'BO';
+    public const UNTDID_7143_BO = 'BO';
 
     /**
      * Buyer's part number
      */
-    const UNTDID_7143_BP = 'BP';
+    public const UNTDID_7143_BP = 'BP';
 
     /**
      * Variable measure product code
      */
-    const UNTDID_7143_BQ = 'BQ';
+    public const UNTDID_7143_BQ = 'BQ';
 
     /**
      * Financial phase
      */
-    const UNTDID_7143_BR = 'BR';
+    public const UNTDID_7143_BR = 'BR';
 
     /**
      * Contract breakdown
      */
-    const UNTDID_7143_BS = 'BS';
+    public const UNTDID_7143_BS = 'BS';
 
     /**
      * Technical phase
      */
-    const UNTDID_7143_BT = 'BT';
+    public const UNTDID_7143_BT = 'BT';
 
     /**
      * Dye lot number
      */
-    const UNTDID_7143_BU = 'BU';
+    public const UNTDID_7143_BU = 'BU';
 
     /**
      * Daily statement of activities
      */
-    const UNTDID_7143_BV = 'BV';
+    public const UNTDID_7143_BV = 'BV';
 
     /**
      * Periodical statement of activities within a bilaterally
      */
-    const UNTDID_7143_BW = 'BW';
+    public const UNTDID_7143_BW = 'BW';
 
     /**
      * Calendar week statement of activities
      */
-    const UNTDID_7143_BX = 'BX';
+    public const UNTDID_7143_BX = 'BX';
 
     /**
      * Calendar month statement of activities
      */
-    const UNTDID_7143_BY = 'BY';
+    public const UNTDID_7143_BY = 'BY';
 
     /**
      * Original equipment number
      */
-    const UNTDID_7143_BZ = 'BZ';
+    public const UNTDID_7143_BZ = 'BZ';
 
     /**
      * Industry commodity code
      */
-    const UNTDID_7143_CC = 'CC';
+    public const UNTDID_7143_CC = 'CC';
 
     /**
      * Commodity grouping
      */
-    const UNTDID_7143_CG = 'CG';
+    public const UNTDID_7143_CG = 'CG';
 
     /**
      * Colour number
      */
-    const UNTDID_7143_CL = 'CL';
+    public const UNTDID_7143_CL = 'CL';
 
     /**
      * Contract number
      */
-    const UNTDID_7143_CR = 'CR';
+    public const UNTDID_7143_CR = 'CR';
 
     /**
      * Customs article number
      */
-    const UNTDID_7143_CV = 'CV';
+    public const UNTDID_7143_CV = 'CV';
 
     /**
      * Drawing revision number
      */
-    const UNTDID_7143_DR = 'DR';
+    public const UNTDID_7143_DR = 'DR';
 
     /**
      * Drawing
      */
-    const UNTDID_7143_DW = 'DW';
+    public const UNTDID_7143_DW = 'DW';
 
     /**
      * Engineering change level
      */
-    const UNTDID_7143_EC = 'EC';
+    public const UNTDID_7143_EC = 'EC';
 
     /**
      * Material code
      */
-    const UNTDID_7143_EF = 'EF';
+    public const UNTDID_7143_EF = 'EF';
 
     /**
      * International Article Numbering Association (EAN)
      */
-    const UNTDID_7143_EN = 'EN';
+    public const UNTDID_7143_EN = 'EN';
 
     /**
      * Fish species
      */
-    const UNTDID_7143_FS = 'FS';
+    public const UNTDID_7143_FS = 'FS';
 
     /**
      * Buyer's internal product group code
      */
-    const UNTDID_7143_GB = 'GB';
+    public const UNTDID_7143_GB = 'GB';
 
     /**
      * National product group code
      */
-    const UNTDID_7143_GN = 'GN';
+    public const UNTDID_7143_GN = 'GN';
 
     /**
      * General specification number
      */
-    const UNTDID_7143_GS = 'GS';
+    public const UNTDID_7143_GS = 'GS';
 
     /**
      * Harmonised system
      */
-    const UNTDID_7143_HS = 'HS';
+    public const UNTDID_7143_HS = 'HS';
 
     /**
      * ISBN (International Standard Book Number)
      */
-    const UNTDID_7143_IB = 'IB';
+    public const UNTDID_7143_IB = 'IB';
 
     /**
      * Buyer's item number
      */
-    const UNTDID_7143_IN = 'IN';
+    public const UNTDID_7143_IN = 'IN';
 
     /**
      * ISSN (International Standard Serial Number)
      */
-    const UNTDID_7143_IS = 'IS';
+    public const UNTDID_7143_IS = 'IS';
 
     /**
      * Buyer's style number
      */
-    const UNTDID_7143_IT = 'IT';
+    public const UNTDID_7143_IT = 'IT';
 
     /**
      * Buyer's size code
      */
-    const UNTDID_7143_IZ = 'IZ';
+    public const UNTDID_7143_IZ = 'IZ';
 
     /**
      * Machine number
      */
-    const UNTDID_7143_MA = 'MA';
+    public const UNTDID_7143_MA = 'MA';
 
     /**
      * Manufacturer's (producer's) article number
      */
-    const UNTDID_7143_MF = 'MF';
+    public const UNTDID_7143_MF = 'MF';
 
     /**
      * Model number
      */
-    const UNTDID_7143_MN = 'MN';
+    public const UNTDID_7143_MN = 'MN';
 
     /**
      * Product/service identification number
      */
-    const UNTDID_7143_MP = 'MP';
+    public const UNTDID_7143_MP = 'MP';
 
     /**
      * Batch number
      */
-    const UNTDID_7143_NB = 'NB';
+    public const UNTDID_7143_NB = 'NB';
 
     /**
      * Customer order number
      */
-    const UNTDID_7143_ON = 'ON';
+    public const UNTDID_7143_ON = 'ON';
 
     /**
      * Part number description
      */
-    const UNTDID_7143_PD = 'PD';
+    public const UNTDID_7143_PD = 'PD';
 
     /**
      * Purchaser's order line number
      */
-    const UNTDID_7143_PL = 'PL';
+    public const UNTDID_7143_PL = 'PL';
 
     /**
      * Purchase order number
      */
-    const UNTDID_7143_PO = 'PO';
+    public const UNTDID_7143_PO = 'PO';
 
     /**
      * Promotional variant number
      */
-    const UNTDID_7143_PV = 'PV';
+    public const UNTDID_7143_PV = 'PV';
 
     /**
      * Buyer's qualifier for size
      */
-    const UNTDID_7143_QS = 'QS';
+    public const UNTDID_7143_QS = 'QS';
 
     /**
      * Returnable container number
      */
-    const UNTDID_7143_RC = 'RC';
+    public const UNTDID_7143_RC = 'RC';
 
     /**
      * Release number
      */
-    const UNTDID_7143_RN = 'RN';
+    public const UNTDID_7143_RN = 'RN';
 
     /**
      * Run number
      */
-    const UNTDID_7143_RU = 'RU';
+    public const UNTDID_7143_RU = 'RU';
 
     /**
      * Record keeping of model year
      */
-    const UNTDID_7143_RY = 'RY';
+    public const UNTDID_7143_RY = 'RY';
 
     /**
      * Supplier's article number
      */
-    const UNTDID_7143_SA = 'SA';
+    public const UNTDID_7143_SA = 'SA';
 
     /**
      * Standard group of products (mixed assortment)
      */
-    const UNTDID_7143_SG = 'SG';
+    public const UNTDID_7143_SG = 'SG';
 
     /**
      * SKU (Stock keeping unit)
      */
-    const UNTDID_7143_SK = 'SK';
+    public const UNTDID_7143_SK = 'SK';
 
     /**
      * Serial number
      */
-    const UNTDID_7143_SN = 'SN';
+    public const UNTDID_7143_SN = 'SN';
 
     /**
      * RSK number
      */
-    const UNTDID_7143_SRS = 'SRS';
+    public const UNTDID_7143_SRS = 'SRS';
 
     /**
      * IFLS (Institut Francais du Libre Service) 5 digit product
      */
-    const UNTDID_7143_SRT = 'SRT';
+    public const UNTDID_7143_SRT = 'SRT';
 
     /**
      * IFLS (Institut Francais du Libre Service) 9 digit product
      */
-    const UNTDID_7143_SRU = 'SRU';
+    public const UNTDID_7143_SRU = 'SRU';
 
     /**
      * GS1 Global Trade Item Number
      */
-    const UNTDID_7143_SRV = 'SRV';
+    public const UNTDID_7143_SRV = 'SRV';
 
     /**
      * EDIS (Energy Data Identification System)
      */
-    const UNTDID_7143_SRW = 'SRW';
+    public const UNTDID_7143_SRW = 'SRW';
 
     /**
      * Slaughter number
      */
-    const UNTDID_7143_SRX = 'SRX';
+    public const UNTDID_7143_SRX = 'SRX';
 
     /**
      * Official animal number
      */
-    const UNTDID_7143_SRY = 'SRY';
+    public const UNTDID_7143_SRY = 'SRY';
 
     /**
      * Harmonized tariff schedule
      */
-    const UNTDID_7143_SRZ = 'SRZ';
+    public const UNTDID_7143_SRZ = 'SRZ';
 
     /**
      * Supplier's supplier article number
      */
-    const UNTDID_7143_SS = 'SS';
+    public const UNTDID_7143_SS = 'SS';
 
     /**
      * 46 Level DOT Code
      */
-    const UNTDID_7143_SSA = 'SSA';
+    public const UNTDID_7143_SSA = 'SSA';
 
     /**
      * Airline Tariff 6D
      */
-    const UNTDID_7143_SSB = 'SSB';
+    public const UNTDID_7143_SSB = 'SSB';
 
     /**
      * Title 49 Code of Federal Regulations
      */
-    const UNTDID_7143_SSC = 'SSC';
+    public const UNTDID_7143_SSC = 'SSC';
 
     /**
      * International Civil Aviation Administration code
      */
-    const UNTDID_7143_SSD = 'SSD';
+    public const UNTDID_7143_SSD = 'SSD';
 
     /**
      * Hazardous Materials ID DOT
      */
-    const UNTDID_7143_SSE = 'SSE';
+    public const UNTDID_7143_SSE = 'SSE';
 
     /**
      * Endorsement
      */
-    const UNTDID_7143_SSF = 'SSF';
+    public const UNTDID_7143_SSF = 'SSF';
 
     /**
      * Air Force Regulation 71-4
      */
-    const UNTDID_7143_SSG = 'SSG';
+    public const UNTDID_7143_SSG = 'SSG';
 
     /**
      * Breed
      */
-    const UNTDID_7143_SSH = 'SSH';
+    public const UNTDID_7143_SSH = 'SSH';
 
     /**
      * Chemical Abstract Service (CAS) registry number
      */
-    const UNTDID_7143_SSI = 'SSI';
+    public const UNTDID_7143_SSI = 'SSI';
 
     /**
      * Engine model designation
      */
-    const UNTDID_7143_SSJ = 'SSJ';
+    public const UNTDID_7143_SSJ = 'SSJ';
 
     /**
      * Institutional Meat Purchase Specifications (IMPS) Number
      */
-    const UNTDID_7143_SSK = 'SSK';
+    public const UNTDID_7143_SSK = 'SSK';
 
     /**
      * Price Look-Up code (PLU)
      */
-    const UNTDID_7143_SSL = 'SSL';
+    public const UNTDID_7143_SSL = 'SSL';
 
     /**
      * International Maritime Organization (IMO) Code
      */
-    const UNTDID_7143_SSM = 'SSM';
+    public const UNTDID_7143_SSM = 'SSM';
 
     /**
      * Bureau of Explosives 600-A (rail)
      */
-    const UNTDID_7143_SSN = 'SSN';
+    public const UNTDID_7143_SSN = 'SSN';
 
     /**
      * United Nations Dangerous Goods List
      */
-    const UNTDID_7143_SSO = 'SSO';
+    public const UNTDID_7143_SSO = 'SSO';
 
     /**
      * International Code of Botanical Nomenclature (ICBN)
      */
-    const UNTDID_7143_SSP = 'SSP';
+    public const UNTDID_7143_SSP = 'SSP';
 
     /**
      * International Code of Zoological Nomenclature (ICZN)
      */
-    const UNTDID_7143_SSQ = 'SSQ';
+    public const UNTDID_7143_SSQ = 'SSQ';
 
     /**
      * International Code of Nomenclature for Cultivated Plants
      */
-    const UNTDID_7143_SSR = 'SSR';
+    public const UNTDID_7143_SSR = 'SSR';
 
     /**
      * Distributorâs article identifier
      */
-    const UNTDID_7143_SSS = 'SSS';
+    public const UNTDID_7143_SSS = 'SSS';
 
     /**
      * Norwegian Classification system ENVA
      */
-    const UNTDID_7143_SST = 'SST';
+    public const UNTDID_7143_SST = 'SST';
 
     /**
      * Supplier assigned classification
      */
-    const UNTDID_7143_SSU = 'SSU';
+    public const UNTDID_7143_SSU = 'SSU';
 
     /**
      * Mexican classification system AMECE
      */
-    const UNTDID_7143_SSV = 'SSV';
+    public const UNTDID_7143_SSV = 'SSV';
 
     /**
      * German classification system CCG
      */
-    const UNTDID_7143_SSW = 'SSW';
+    public const UNTDID_7143_SSW = 'SSW';
 
     /**
      * Finnish classification system EANFIN
      */
-    const UNTDID_7143_SSX = 'SSX';
+    public const UNTDID_7143_SSX = 'SSX';
 
     /**
      * Canadian classification system ICC
      */
-    const UNTDID_7143_SSY = 'SSY';
+    public const UNTDID_7143_SSY = 'SSY';
 
     /**
      * French classification system IFLS5
      */
-    const UNTDID_7143_SSZ = 'SSZ';
+    public const UNTDID_7143_SSZ = 'SSZ';
 
     /**
      * Style number
      */
-    const UNTDID_7143_ST = 'ST';
+    public const UNTDID_7143_ST = 'ST';
 
     /**
      * Dutch classification system CBL
      */
-    const UNTDID_7143_STA = 'STA';
+    public const UNTDID_7143_STA = 'STA';
 
     /**
      * Japanese classification system JICFS
      */
-    const UNTDID_7143_STB = 'STB';
+    public const UNTDID_7143_STB = 'STB';
 
     /**
      * European Union dairy subsidy eligibility classification
      */
-    const UNTDID_7143_STC = 'STC';
+    public const UNTDID_7143_STC = 'STC';
 
     /**
      * GS1 Spain classification system
      */
-    const UNTDID_7143_STD = 'STD';
+    public const UNTDID_7143_STD = 'STD';
 
     /**
      * GS1 Poland classification system
      */
-    const UNTDID_7143_STE = 'STE';
+    public const UNTDID_7143_STE = 'STE';
 
     /**
      * Federal Agency on Technical Regulating and Metrology of the
      */
-    const UNTDID_7143_STF = 'STF';
+    public const UNTDID_7143_STF = 'STF';
 
     /**
      * Efficient Consumer Response (ECR) Austria classification
      */
-    const UNTDID_7143_STG = 'STG';
+    public const UNTDID_7143_STG = 'STG';
 
     /**
      * GS1 Italy classification system
      */
-    const UNTDID_7143_STH = 'STH';
+    public const UNTDID_7143_STH = 'STH';
 
     /**
      * CPV (Common Procurement Vocabulary)
      */
-    const UNTDID_7143_STI = 'STI';
+    public const UNTDID_7143_STI = 'STI';
 
     /**
      * IFDA (International Foodservice Distributors Association)
      */
-    const UNTDID_7143_STJ = 'STJ';
+    public const UNTDID_7143_STJ = 'STJ';
 
     /**
      * AHFS (American Hospital Formulary Service) pharmacologic -
      */
-    const UNTDID_7143_STK = 'STK';
+    public const UNTDID_7143_STK = 'STK';
 
     /**
      * ATC (Anatomical Therapeutic Chemical) classification system
      */
-    const UNTDID_7143_STL = 'STL';
+    public const UNTDID_7143_STL = 'STL';
 
     /**
      * CLADIMED (Classification des Dispositifs MÃ©dicaux)
      */
-    const UNTDID_7143_STM = 'STM';
+    public const UNTDID_7143_STM = 'STM';
 
     /**
      * CMDR (Canadian Medical Device Regulations) classification
      */
-    const UNTDID_7143_STN = 'STN';
+    public const UNTDID_7143_STN = 'STN';
 
     /**
      * CNDM (Classificazione Nazionale dei Dispositivi Medici)
      */
-    const UNTDID_7143_STO = 'STO';
+    public const UNTDID_7143_STO = 'STO';
 
     /**
      * UK DM&D (Dictionary of Medicines & Devices) standard coding
      */
-    const UNTDID_7143_STP = 'STP';
+    public const UNTDID_7143_STP = 'STP';
 
     /**
      * eCl@ss
      */
-    const UNTDID_7143_STQ = 'STQ';
+    public const UNTDID_7143_STQ = 'STQ';
 
     /**
      * EDMA (European Diagnostic Manufacturers Association)
      */
-    const UNTDID_7143_STR = 'STR';
+    public const UNTDID_7143_STR = 'STR';
 
     /**
      * EGAR (European Generic Article Register)
      */
-    const UNTDID_7143_STS = 'STS';
+    public const UNTDID_7143_STS = 'STS';
 
     /**
      * GMDN (Global Medical Devices Nomenclature)
      */
-    const UNTDID_7143_STT = 'STT';
+    public const UNTDID_7143_STT = 'STT';
 
     /**
      * GPI (Generic Product Identifier)
      */
-    const UNTDID_7143_STU = 'STU';
+    public const UNTDID_7143_STU = 'STU';
 
     /**
      * HCPCS (Healthcare Common Procedure Coding System)
      */
-    const UNTDID_7143_STV = 'STV';
+    public const UNTDID_7143_STV = 'STV';
 
     /**
      * ICPS (International Classification for Patient Safety)
      */
-    const UNTDID_7143_STW = 'STW';
+    public const UNTDID_7143_STW = 'STW';
 
     /**
      * MedDRA (Medical Dictionary for Regulatory Activities)
      */
-    const UNTDID_7143_STX = 'STX';
+    public const UNTDID_7143_STX = 'STX';
 
     /**
      * Medical Columbus
      */
-    const UNTDID_7143_STY = 'STY';
+    public const UNTDID_7143_STY = 'STY';
 
     /**
      * NAPCS (North American Product Classification System)
      */
-    const UNTDID_7143_STZ = 'STZ';
+    public const UNTDID_7143_STZ = 'STZ';
 
     /**
      * NHS (National Health Services) eClass
      */
-    const UNTDID_7143_SUA = 'SUA';
+    public const UNTDID_7143_SUA = 'SUA';
 
     /**
      * US FDA (Food and Drug Administration) Product Code
      */
-    const UNTDID_7143_SUB = 'SUB';
+    public const UNTDID_7143_SUB = 'SUB';
 
     /**
      * SNOMED CT (Systematized Nomenclature of Medicine-Clinical
      */
-    const UNTDID_7143_SUC = 'SUC';
+    public const UNTDID_7143_SUC = 'SUC';
 
     /**
      * UMDNS (Universal Medical Device Nomenclature System)
      */
-    const UNTDID_7143_SUD = 'SUD';
+    public const UNTDID_7143_SUD = 'SUD';
 
     /**
      * GS1 Global Returnable Asset Identifier, non-serialised
      */
-    const UNTDID_7143_SUE = 'SUE';
+    public const UNTDID_7143_SUE = 'SUE';
 
     /**
      * IMEI
      */
-    const UNTDID_7143_SUF = 'SUF';
+    public const UNTDID_7143_SUF = 'SUF';
 
     /**
      * Waste Type (EMSA)
      */
-    const UNTDID_7143_SUG = 'SUG';
+    public const UNTDID_7143_SUG = 'SUG';
 
     /**
      * Ship's store classification type
      */
-    const UNTDID_7143_SUH = 'SUH';
+    public const UNTDID_7143_SUH = 'SUH';
 
     /**
      * Emergency fire code
      */
-    const UNTDID_7143_SUI = 'SUI';
+    public const UNTDID_7143_SUI = 'SUI';
 
     /**
      * Emergency spillage code
      */
-    const UNTDID_7143_SUJ = 'SUJ';
+    public const UNTDID_7143_SUJ = 'SUJ';
 
     /**
      * IMDG packing group
      */
-    const UNTDID_7143_SUK = 'SUK';
+    public const UNTDID_7143_SUK = 'SUK';
 
     /**
      * MARPOL Code IBC
      */
-    const UNTDID_7143_SUL = 'SUL';
+    public const UNTDID_7143_SUL = 'SUL';
 
     /**
      * IMDG subsidiary risk class
      */
-    const UNTDID_7143_SUM = 'SUM';
+    public const UNTDID_7143_SUM = 'SUM';
 
     /**
      * Transport group number
      */
-    const UNTDID_7143_TG = 'TG';
+    public const UNTDID_7143_TG = 'TG';
 
     /**
      * Taxonomic Serial Number
      */
-    const UNTDID_7143_TSN = 'TSN';
+    public const UNTDID_7143_TSN = 'TSN';
 
     /**
      * IMDG main hazard class
      */
-    const UNTDID_7143_TSO = 'TSO';
+    public const UNTDID_7143_TSO = 'TSO';
 
     /**
      * EU Combined Nomenclature
      */
-    const UNTDID_7143_TSP = 'TSP';
+    public const UNTDID_7143_TSP = 'TSP';
 
     /**
      * Therapeutic classification number
      */
-    const UNTDID_7143_TSQ = 'TSQ';
+    public const UNTDID_7143_TSQ = 'TSQ';
 
     /**
      * European Waste Catalogue
      */
-    const UNTDID_7143_TSR = 'TSR';
+    public const UNTDID_7143_TSR = 'TSR';
 
     /**
      * Price grouping code
      */
-    const UNTDID_7143_TSS = 'TSS';
+    public const UNTDID_7143_TSS = 'TSS';
 
     /**
      * UNSPSC
      */
-    const UNTDID_7143_TST = 'TST';
+    public const UNTDID_7143_TST = 'TST';
 
     /**
      * Ultimate customer's article number
      */
-    const UNTDID_7143_UA = 'UA';
+    public const UNTDID_7143_UA = 'UA';
 
     /**
      * UPC (Universal product code)
      */
-    const UNTDID_7143_UP = 'UP';
+    public const UNTDID_7143_UP = 'UP';
 
     /**
      * Vendor item number
      */
-    const UNTDID_7143_VN = 'VN';
+    public const UNTDID_7143_VN = 'VN';
 
     /**
      * Vendor's (seller's) part number
      */
-    const UNTDID_7143_VP = 'VP';
+    public const UNTDID_7143_VP = 'VP';
 
     /**
      * Vendor's supplemental item number
      */
-    const UNTDID_7143_VS = 'VS';
+    public const UNTDID_7143_VS = 'VS';
 
     /**
      * Vendor specification number
      */
-    const UNTDID_7143_VX = 'VX';
+    public const UNTDID_7143_VX = 'VX';
 
     /**
      * Mutually defined
      */
-    const UNTDID_7143_ZZZ = 'ZZZ';
+    public const UNTDID_7143_ZZZ = 'ZZZ';
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdPaymentMeans.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdPaymentMeans.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdPaymentMeans.php	(revision 8504)
@@ -24,414 +24,414 @@
      * Instrument not defined
      */
-    const UNTDID_4461_1 = '1';
+    public const UNTDID_4461_1 = '1';
 
     /**
      * Automated clearing house credit
      */
-    const UNTDID_4461_2 = '2';
+    public const UNTDID_4461_2 = '2';
 
     /**
      * Automated clearing house debit
      */
-    const UNTDID_4461_3 = '3';
+    public const UNTDID_4461_3 = '3';
 
     /**
      * ACH demand debit reversal
      */
-    const UNTDID_4461_4 = '4';
+    public const UNTDID_4461_4 = '4';
 
     /**
      * ACH demand credit reversal
      */
-    const UNTDID_4461_5 = '5';
+    public const UNTDID_4461_5 = '5';
 
     /**
      * ACH demand credit
      */
-    const UNTDID_4461_6 = '6';
+    public const UNTDID_4461_6 = '6';
 
     /**
      * ACH demand debit
      */
-    const UNTDID_4461_7 = '7';
+    public const UNTDID_4461_7 = '7';
 
     /**
      * Hold
      */
-    const UNTDID_4461_8 = '8';
+    public const UNTDID_4461_8 = '8';
 
     /**
      * National or regional clearing
      */
-    const UNTDID_4461_9 = '9';
+    public const UNTDID_4461_9 = '9';
 
     /**
      * In cash
      */
-    const UNTDID_4461_10 = '10';
+    public const UNTDID_4461_10 = '10';
 
     /**
      * ACH savings credit reversal
      */
-    const UNTDID_4461_11 = '11';
+    public const UNTDID_4461_11 = '11';
 
     /**
      * ACH savings debit reversal
      */
-    const UNTDID_4461_12 = '12';
+    public const UNTDID_4461_12 = '12';
 
     /**
      * ACH savings credit
      */
-    const UNTDID_4461_13 = '13';
+    public const UNTDID_4461_13 = '13';
 
     /**
      * ACH savings debit
      */
-    const UNTDID_4461_14 = '14';
+    public const UNTDID_4461_14 = '14';
 
     /**
      * Bookentry credit
      */
-    const UNTDID_4461_15 = '15';
+    public const UNTDID_4461_15 = '15';
 
     /**
      * Bookentry debit
      */
-    const UNTDID_4461_16 = '16';
+    public const UNTDID_4461_16 = '16';
 
     /**
      * ACH demand cash concentration/disbursement (CCD) credit
      */
-    const UNTDID_4461_17 = '17';
+    public const UNTDID_4461_17 = '17';
 
     /**
      * ACH demand cash concentration/disbursement (CCD) debit
      */
-    const UNTDID_4461_18 = '18';
+    public const UNTDID_4461_18 = '18';
 
     /**
      * ACH demand corporate trade payment (CTP) credit
      */
-    const UNTDID_4461_19 = '19';
+    public const UNTDID_4461_19 = '19';
 
     /**
      * Cheque
      */
-    const UNTDID_4461_20 = '20';
+    public const UNTDID_4461_20 = '20';
 
     /**
      * Banker's draft
      */
-    const UNTDID_4461_21 = '21';
+    public const UNTDID_4461_21 = '21';
 
     /**
      * Certified banker's draft
      */
-    const UNTDID_4461_22 = '22';
+    public const UNTDID_4461_22 = '22';
 
     /**
      * Bank cheque (issued by a banking or similar establishment)
      */
-    const UNTDID_4461_23 = '23';
+    public const UNTDID_4461_23 = '23';
 
     /**
      * Bill of exchange awaiting acceptance
      */
-    const UNTDID_4461_24 = '24';
+    public const UNTDID_4461_24 = '24';
 
     /**
      * Certified cheque
      */
-    const UNTDID_4461_25 = '25';
+    public const UNTDID_4461_25 = '25';
 
     /**
      * Local cheque
      */
-    const UNTDID_4461_26 = '26';
+    public const UNTDID_4461_26 = '26';
 
     /**
      * ACH demand corporate trade payment (CTP) debit
      */
-    const UNTDID_4461_27 = '27';
+    public const UNTDID_4461_27 = '27';
 
     /**
      * ACH demand corporate trade exchange (CTX) credit
      */
-    const UNTDID_4461_28 = '28';
+    public const UNTDID_4461_28 = '28';
 
     /**
      * ACH demand corporate trade exchange (CTX) debit
      */
-    const UNTDID_4461_29 = '29';
+    public const UNTDID_4461_29 = '29';
 
     /**
      * Credit transfer
      */
-    const UNTDID_4461_30 = '30';
+    public const UNTDID_4461_30 = '30';
 
     /**
      * Debit transfer
      */
-    const UNTDID_4461_31 = '31';
+    public const UNTDID_4461_31 = '31';
 
     /**
      * ACH demand cash concentration/disbursement plus (CCD+)
      */
-    const UNTDID_4461_32 = '32';
+    public const UNTDID_4461_32 = '32';
 
     /**
      * ACH demand cash concentration/disbursement plus (CCD+)
      */
-    const UNTDID_4461_33 = '33';
+    public const UNTDID_4461_33 = '33';
 
     /**
      * ACH prearranged payment and deposit (PPD)
      */
-    const UNTDID_4461_34 = '34';
+    public const UNTDID_4461_34 = '34';
 
     /**
      * ACH savings cash concentration/disbursement (CCD) credit
      */
-    const UNTDID_4461_35 = '35';
+    public const UNTDID_4461_35 = '35';
 
     /**
      * ACH savings cash concentration/disbursement (CCD) debit
      */
-    const UNTDID_4461_36 = '36';
+    public const UNTDID_4461_36 = '36';
 
     /**
      * ACH savings corporate trade payment (CTP) credit
      */
-    const UNTDID_4461_37 = '37';
+    public const UNTDID_4461_37 = '37';
 
     /**
      * ACH savings corporate trade payment (CTP) debit
      */
-    const UNTDID_4461_38 = '38';
+    public const UNTDID_4461_38 = '38';
 
     /**
      * ACH savings corporate trade exchange (CTX) credit
      */
-    const UNTDID_4461_39 = '39';
+    public const UNTDID_4461_39 = '39';
 
     /**
      * ACH savings corporate trade exchange (CTX) debit
      */
-    const UNTDID_4461_40 = '40';
+    public const UNTDID_4461_40 = '40';
 
     /**
      * ACH savings cash concentration/disbursement plus (CCD+)
      */
-    const UNTDID_4461_41 = '41';
+    public const UNTDID_4461_41 = '41';
 
     /**
      * Payment to bank account
      */
-    const UNTDID_4461_42 = '42';
+    public const UNTDID_4461_42 = '42';
 
     /**
      * ACH savings cash concentration/disbursement plus (CCD+)
      */
-    const UNTDID_4461_43 = '43';
+    public const UNTDID_4461_43 = '43';
 
     /**
      * Accepted bill of exchange
      */
-    const UNTDID_4461_44 = '44';
+    public const UNTDID_4461_44 = '44';
 
     /**
      * Referenced home-banking credit transfer
      */
-    const UNTDID_4461_45 = '45';
+    public const UNTDID_4461_45 = '45';
 
     /**
      * Interbank debit transfer
      */
-    const UNTDID_4461_46 = '46';
+    public const UNTDID_4461_46 = '46';
 
     /**
      * Home-banking debit transfer
      */
-    const UNTDID_4461_47 = '47';
+    public const UNTDID_4461_47 = '47';
 
     /**
      * Bank card
      */
-    const UNTDID_4461_48 = '48';
+    public const UNTDID_4461_48 = '48';
 
     /**
      * Direct debit
      */
-    const UNTDID_4461_49 = '49';
+    public const UNTDID_4461_49 = '49';
 
     /**
      * Payment by postgiro
      */
-    const UNTDID_4461_50 = '50';
+    public const UNTDID_4461_50 = '50';
 
     /**
      * FR, norme 6 97-Telereglement CFONB (French Organisation for
      */
-    const UNTDID_4461_51 = '51';
+    public const UNTDID_4461_51 = '51';
 
     /**
      * Urgent commercial payment
      */
-    const UNTDID_4461_52 = '52';
+    public const UNTDID_4461_52 = '52';
 
     /**
      * Urgent Treasury Payment
      */
-    const UNTDID_4461_53 = '53';
+    public const UNTDID_4461_53 = '53';
 
     /**
      * Credit card
      */
-    const UNTDID_4461_54 = '54';
+    public const UNTDID_4461_54 = '54';
 
     /**
      * Debit card
      */
-    const UNTDID_4461_55 = '55';
+    public const UNTDID_4461_55 = '55';
 
     /**
      * Bankgiro
      */
-    const UNTDID_4461_56 = '56';
+    public const UNTDID_4461_56 = '56';
 
     /**
      * Standing agreement
      */
-    const UNTDID_4461_57 = '57';
+    public const UNTDID_4461_57 = '57';
 
     /**
      * SEPA credit transfer
      */
-    const UNTDID_4461_58 = '58';
+    public const UNTDID_4461_58 = '58';
 
     /**
      * SEPA direct debit
      */
-    const UNTDID_4461_59 = '59';
+    public const UNTDID_4461_59 = '59';
 
     /**
      * Promissory note
      */
-    const UNTDID_4461_60 = '60';
+    public const UNTDID_4461_60 = '60';
 
     /**
      * Promissory note signed by the debtor
      */
-    const UNTDID_4461_61 = '61';
+    public const UNTDID_4461_61 = '61';
 
     /**
      * Promissory note signed by the debtor and endorsed by a bank
      */
-    const UNTDID_4461_62 = '62';
+    public const UNTDID_4461_62 = '62';
 
     /**
      * Promissory note signed by the debtor and endorsed by a
      */
-    const UNTDID_4461_63 = '63';
+    public const UNTDID_4461_63 = '63';
 
     /**
      * Promissory note signed by a bank
      */
-    const UNTDID_4461_64 = '64';
+    public const UNTDID_4461_64 = '64';
 
     /**
      * Promissory note signed by a bank and endorsed by another
      */
-    const UNTDID_4461_65 = '65';
+    public const UNTDID_4461_65 = '65';
 
     /**
      * Promissory note signed by a third party
      */
-    const UNTDID_4461_66 = '66';
+    public const UNTDID_4461_66 = '66';
 
     /**
      * Promissory note signed by a third party and endorsed by a
      */
-    const UNTDID_4461_67 = '67';
+    public const UNTDID_4461_67 = '67';
 
     /**
      * Online payment service
      */
-    const UNTDID_4461_68 = '68';
+    public const UNTDID_4461_68 = '68';
 
     /**
      * Transfer Advice
      */
-    const UNTDID_4461_69 = '69';
+    public const UNTDID_4461_69 = '69';
 
     /**
      * Bill drawn by the creditor on the debtor
      */
-    const UNTDID_4461_70 = '70';
+    public const UNTDID_4461_70 = '70';
 
     /**
      * Bill drawn by the creditor on a bank
      */
-    const UNTDID_4461_74 = '74';
+    public const UNTDID_4461_74 = '74';
 
     /**
      * Bill drawn by the creditor, endorsed by another bank
      */
-    const UNTDID_4461_75 = '75';
+    public const UNTDID_4461_75 = '75';
 
     /**
      * Bill drawn by the creditor on a bank and endorsed by a
      */
-    const UNTDID_4461_76 = '76';
+    public const UNTDID_4461_76 = '76';
 
     /**
      * Bill drawn by the creditor on a third party
      */
-    const UNTDID_4461_77 = '77';
+    public const UNTDID_4461_77 = '77';
 
     /**
      * Bill drawn by creditor on third party, accepted and
      */
-    const UNTDID_4461_78 = '78';
+    public const UNTDID_4461_78 = '78';
 
     /**
      * Not transferable banker's draft
      */
-    const UNTDID_4461_91 = '91';
+    public const UNTDID_4461_91 = '91';
 
     /**
      * Not transferable local cheque
      */
-    const UNTDID_4461_92 = '92';
+    public const UNTDID_4461_92 = '92';
 
     /**
      * Reference giro
      */
-    const UNTDID_4461_93 = '93';
+    public const UNTDID_4461_93 = '93';
 
     /**
      * Urgent giro
      */
-    const UNTDID_4461_94 = '94';
+    public const UNTDID_4461_94 = '94';
 
     /**
      * Free format giro
      */
-    const UNTDID_4461_95 = '95';
+    public const UNTDID_4461_95 = '95';
 
     /**
      * Requested method for payment was not used
      */
-    const UNTDID_4461_96 = '96';
+    public const UNTDID_4461_96 = '96';
 
     /**
      * Clearing between partners
      */
-    const UNTDID_4461_97 = '97';
+    public const UNTDID_4461_97 = '97';
 
     /**
      * Mutually defined
      */
-    const UNTDID_4461_ZZZ = 'ZZZ';
+    public const UNTDID_4461_ZZZ = 'ZZZ';
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdReferenceCodeQualifiers.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdReferenceCodeQualifiers.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdReferenceCodeQualifiers.php	(revision 8504)
@@ -11,5 +11,6 @@
 
 /**
- * Class representing the Reference code qualifiers
+ * Class representing list of reference code qualifiers
+ * Name of list: UNTDID 1153 Reference code qualifier
  *
  * @category Zugferd
@@ -18,900 +19,5928 @@
  * @license  https://opensource.org/licenses/MIT MIT
  * @link     https://github.com/horstoeko/zugferd
+ * @see      https://www.xrepository.de/details/urn:xoev-de:kosit:codeliste:untdid.1153
  */
 class ZugferdReferenceCodeQualifiers
 {
     /**
-     * UAE Dirham
-     */
-    const UAE_DIRHAM = "AED";
-
-    /**
-     * Afghani
-     */
-    const AFGHANI = "AFN";
-
-    /**
-     * Lek
-     */
-    const LEK = "ALL";
-
-    /**
-     * Armenian Dram
-     */
-    const ARMENIAN_DRAM = "AMD";
-
-    /**
-     * Netherlands Antillean Guilder
-     */
-    const NETHERLANDS_ANTILLEAN_GUILDER = "ANG";
-
-    /**
-     * Kwanza
-     */
-    const KWANZA = "AOA";
-
-    /**
-     * Argentine Peso
-     */
-    const ARGENTINE_PESO = "ARS";
-
-    /**
-     * Australian Dollar
-     */
-    const AUSTRALIAN_DOLLAR = "AUD";
-
-    /**
-     * Aruban Florin
-     */
-    const ARUBAN_FLORIN = "AWG";
-
-    /**
-     * Azerbaijan Manat
-     */
-    const AZERBAIJAN_MANAT = "AZN";
-
-    /**
-     * Convertible Mark
-     */
-    const CONVERTIBLE_MARK = "BAM";
-
-    /**
-     * Barbados Dollar
-     */
-    const BARBADOS_DOLLAR = "BBD";
-
-    /**
-     * Taka
-     */
-    const TAKA = "BDT";
-
-    /**
-     * Bulgarian Lev
-     */
-    const BULGARIAN_LEV = "BGN";
-
-    /**
-     * Bahraini Dinar
-     */
-    const BAHRAINI_DINAR = "BHD";
-
-    /**
-     * Burundi Franc
-     */
-    const BURUNDI_FRANC = "BIF";
-
-    /**
-     * Bermudian Dollar
-     */
-    const BERMUDIAN_DOLLAR = "BMD";
-
-    /**
-     * Brunei Dollar
-     */
-    const BRUNEI_DOLLAR = "BND";
-
-    /**
-     * Boliviano
-     */
-    const BOLIVIANO = "BOB";
-
-    /**
-     * Mvdol
-     */
-    const MVDOL = "BOV";
-
-    /**
-     * Brazilian Real
-     */
-    const BRAZILIAN_REAL = "BRL";
-
-    /**
-     * Bahamian Dollar
-     */
-    const BAHAMIAN_DOLLAR = "BSD";
-
-    /**
-     * Ngultrum
-     */
-    const NGULTRUM = "BTN";
-
-    /**
-     * Pula
-     */
-    const PULA = "BWP";
-
-    /**
-     * Belarusian Ruble
-     */
-    const BELARUSIAN_RUBLE = "BYN";
-
-    /**
-     * Belize Dollar
-     */
-    const BELIZE_DOLLAR = "BZD";
-
-    /**
-     * Canadian Dollar
-     */
-    const CANADIAN_DOLLAR = "CAD";
-
-    /**
-     * Congolese Franc
-     */
-    const CONGOLESE_FRANC = "CDF";
-
-    /**
-     * WIR Euro
-     */
-    const WIR_EURO = "CHE";
-
-    /**
-     * Swiss Franc
-     */
-    const SWISS_FRANC = "CHF";
-
-    /**
-     * WIR Franc
-     */
-    const WIR_FRANC = "CHW";
-
-    /**
-     * Unidad de Fomento
-     */
-    const UNIDAD_DE_FOMENTO = "CLF";
-
-    /**
-     * Chilean Peso
-     */
-    const CHILEAN_PESO = "CLP";
-
-    /**
-     * Yuan Renminbi
-     */
-    const YUAN_RENMINBI = "CNY";
-
-    /**
-     * Colombian Peso
-     */
-    const COLOMBIAN_PESO = "COP";
-
-    /**
-     * Unidad de Valor Real
-     */
-    const UNIDAD_DE_VALOR_REAL = "COU";
-
-    /**
-     * Costa Rican Colon
-     */
-    const COSTA_RICAN_COLON = "CRC";
-
-    /**
-     * Peso Convertible
-     */
-    const PESO_CONVERTIBLE = "CUC";
-
-    /**
-     * Cuban Peso
-     */
-    const CUBAN_PESO = "CUP";
-
-    /**
-     * Cabo Verde Escudo
-     */
-    const CABO_VERDE_ESCUDO = "CVE";
-
-    /**
-     * Czech Koruna
-     */
-    const CZECH_KORUNA = "CZK";
-
-    /**
-     * Djibouti Franc
-     */
-    const DJIBOUTI_FRANC = "DJF";
-
-    /**
-     * Danish Krone
-     */
-    const DANISH_KRONE = "DKK";
-
-    /**
-     * Dominican Peso
-     */
-    const DOMINICAN_PESO = "DOP";
-
-    /**
-     * Algerian Dinar
-     */
-    const ALGERIAN_DINAR = "DZD";
-
-    /**
-     * Egyptian Pound
-     */
-    const EGYPTIAN_POUND = "EGP";
-
-    /**
-     * Nakfa
-     */
-    const NAKFA = "ERN";
-
-    /**
-     * Ethiopian Birr
-     */
-    const ETHIOPIAN_BIRR = "ETB";
-
-    /**
-     * Euro
-     */
-    const EURO = "EUR";
-
-    /**
-     * Fiji Dollar
-     */
-    const FIJI_DOLLAR = "FJD";
-
-    /**
-     * Falkland Islands Pound
-     */
-    const FALKLAND_ISLANDS_POUND = "FKP";
-
-    /**
-     * Pound Sterling
-     */
-    const POUND_STERLING = "GBP";
-
-    /**
-     * Lari
-     */
-    const LARI = "GEL";
-
-    /**
-     * Ghana Cedi
-     */
-    const GHANA_CEDI = "GHS";
-
-    /**
-     * Gibraltar Pound
-     */
-    const GIBRALTAR_POUND = "GIP";
-
-    /**
-     * Dalasi
-     */
-    const DALASI = "GMD";
-
-    /**
-     * Guinean Franc
-     */
-    const GUINEAN_FRANC = "GNF";
-
-    /**
-     * Quetzal
-     */
-    const QUETZAL = "GTQ";
-
-    /**
-     * Guyana Dollar
-     */
-    const GUYANA_DOLLAR = "GYD";
-
-    /**
-     * Hong Kong Dollar
-     */
-    const HONG_KONG_DOLLAR = "HKD";
-
-    /**
-     * Lempira
-     */
-    const LEMPIRA = "HNL";
-
-    /**
-     * Kuna
-     */
-    const KUNA = "HRK";
-
-    /**
-     * Gourde
-     */
-    const GOURDE = "HTG";
-
-    /**
-     * Forint
-     */
-    const FORINT = "HUF";
-
-    /**
-     * Rupiah
-     */
-    const RUPIAH = "IDR";
-
-    /**
-     * New Israeli Sheqel
-     */
-    const NEW_ISRAELI_SHEQEL = "ILS";
-
-    /**
-     * Indian Rupee
-     */
-    const INDIAN_RUPEE = "INR";
-
-    /**
-     * Iraqi Dinar
-     */
-    const IRAQI_DINAR = "IQD";
-
-    /**
-     * Iranian Rial
-     */
-    const IRANIAN_RIAL = "IRR";
-
-    /**
-     * Iceland Krona
-     */
-    const ICELAND_KRONA = "ISK";
-
-    /**
-     * Jamaican Dollar
-     */
-    const JAMAICAN_DOLLAR = "JMD";
-
-    /**
-     * Jordanian Dinar
-     */
-    const JORDANIAN_DINAR = "JOD";
-
-    /**
-     * Yen
-     */
-    const YEN = "JPY";
-
-    /**
-     * Kenyan Shilling
-     */
-    const KENYAN_SHILLING = "KES";
-
-    /**
-     * Som
-     */
-    const SOM = "KGS";
-
-    /**
-     * Riel
-     */
-    const RIEL = "KHR";
-
-    /**
-     * Comorian Franc
-     */
-    const COMORIAN_FRANC = "KMF";
-
-    /**
-     * North Korean Won
-     */
-    const NORTH_KOREAN_WON = "KPW";
-
-    /**
-     * Won
-     */
-    const WON = "KRW";
-
-    /**
-     * Kuwaiti Dinar
-     */
-    const KUWAITI_DINAR = "KWD";
-
-    /**
-     * Cayman Islands Dollar
-     */
-    const CAYMAN_ISLANDS_DOLLAR = "KYD";
-
-    /**
-     * Tenge
-     */
-    const TENGE = "KZT";
-
-    /**
-     * Lao Kip
-     */
-    const LAO_KIP = "LAK";
-
-    /**
-     * Lebanese Pound
-     */
-    const LEBANESE_POUND = "LBP";
-
-    /**
-     * Sri Lanka Rupee
-     */
-    const SRI_LANKA_RUPEE = "LKR";
-
-    /**
-     * Liberian Dollar
-     */
-    const LIBERIAN_DOLLAR = "LRD";
-
-    /**
-     * Loti
-     */
-    const LOTI = "LSL";
-
-    /**
-     * Libyan Dinar
-     */
-    const LIBYAN_DINAR = "LYD";
-
-    /**
-     * Moroccan Dirham
-     */
-    const MOROCCAN_DIRHAM = "MAD";
-
-    /**
-     * Moldovan Leu
-     */
-    const MOLDOVAN_LEU = "MDL";
-
-    /**
-     * Malagasy Ariary
-     */
-    const MALAGASY_ARIARY = "MGA";
-
-    /**
-     * Denar
-     */
-    const DENAR = "MKD";
-
-    /**
-     * Kyat
-     */
-    const KYAT = "MMK";
-
-    /**
-     * Tugrik
-     */
-    const TUGRIK = "MNT";
-
-    /**
-     * Pataca
-     */
-    const PATACA = "MOP";
-
-    /**
-     * Ouguiya
-     */
-    const OUGUIYA = "MRU";
-
-    /**
-     * Mauritius Rupee
-     */
-    const MAURITIUS_RUPEE = "MUR";
-
-    /**
-     * Rufiyaa
-     */
-    const RUFIYAA = "MVR";
-
-    /**
-     * Malawi Kwacha
-     */
-    const MALAWI_KWACHA = "MWK";
-
-    /**
-     * Mexican Peso
-     */
-    const MEXICAN_PESO = "MXN";
-
-    /**
-     * Mexican Unidad de Inversion (UDI)
-     */
-    const MEXICAN_UNIDAD_DE_INVERSION_UDI = "MXV";
-
-    /**
-     * Malaysian Ringgit
-     */
-    const MALAYSIAN_RINGGIT = "MYR";
-
-    /**
-     * Mozambique Metical
-     */
-    const MOZAMBIQUE_METICAL = "MZN";
-
-    /**
-     * Namibia Dollar
-     */
-    const NAMIBIA_DOLLAR = "NAD";
-
-    /**
-     * Naira
-     */
-    const NAIRA = "NGN";
-
-    /**
-     * Cordoba Oro
-     */
-    const CORDOBA_ORO = "NIO";
-
-    /**
-     * Norwegian Krone
-     */
-    const NORWEGIAN_KRONE = "NOK";
-
-    /**
-     * Nepalese Rupee
-     */
-    const NEPALESE_RUPEE = "NPR";
-
-    /**
-     * New Zealand Dollar
-     */
-    const NEW_ZEALAND_DOLLAR = "NZD";
-
-    /**
-     * Rial Omani
-     */
-    const RIAL_OMANI = "OMR";
-
-    /**
-     * Balboa
-     */
-    const BALBOA = "PAB";
-
-    /**
-     * Sol
-     */
-    const SOL = "PEN";
-
-    /**
-     * Kina
-     */
-    const KINA = "PGK";
-
-    /**
-     * Philippine Peso
-     */
-    const PHILIPPINE_PESO = "PHP";
-
-    /**
-     * Pakistan Rupee
-     */
-    const PAKISTAN_RUPEE = "PKR";
-
-    /**
-     * Zloty
-     */
-    const ZLOTY = "PLN";
-
-    /**
-     * Guarani
-     */
-    const GUARANI = "PYG";
-
-    /**
-     * Qatari Rial
-     */
-    const QATARI_RIAL = "QAR";
-
-    /**
-     * Romanian Leu
-     */
-    const ROMANIAN_LEU = "RON";
-
-    /**
-     * Serbian Dinar
-     */
-    const SERBIAN_DINAR = "RSD";
-
-    /**
-     * Russian Ruble
-     */
-    const RUSSIAN_RUBLE = "RUB";
-
-    /**
-     * Rwanda Franc
-     */
-    const RWANDA_FRANC = "RWF";
-
-    /**
-     * Saudi Riyal
-     */
-    const SAUDI_RIYAL = "SAR";
-
-    /**
-     * Solomon Islands Dollar
-     */
-    const SOLOMON_ISLANDS_DOLLAR = "SBD";
-
-    /**
-     * Seychelles Rupee
-     */
-    const SEYCHELLES_RUPEE = "SCR";
-
-    /**
-     * Sudanese Pound
-     */
-    const SUDANESE_POUND = "SDG";
-
-    /**
-     * Swedish Krona
-     */
-    const SWEDISH_KRONA = "SEK";
-
-    /**
-     * Singapore Dollar
-     */
-    const SINGAPORE_DOLLAR = "SGD";
-
-    /**
-     * Saint Helena Pound
-     */
-    const SAINT_HELENA_POUND = "SHP";
-
-    /**
-     * Leone
-     */
-    const LEONE = "SLL";
-
-    /**
-     * Somali Shilling
-     */
-    const SOMALI_SHILLING = "SOS";
-
-    /**
-     * Surinam Dollar
-     */
-    const SURINAM_DOLLAR = "SRD";
-
-    /**
-     * South Sudanese Pound
-     */
-    const SOUTH_SUDANESE_POUND = "SSP";
-
-    /**
-     * Dobra
-     */
-    const DOBRA = "STN";
-
-    /**
-     * El Salvador Colon
-     */
-    const EL_SALVADOR_COLON = "SVC";
-
-    /**
-     * Syrian Pound
-     */
-    const SYRIAN_POUND = "SYP";
-
-    /**
-     * Lilangeni
-     */
-    const LILANGENI = "SZL";
-
-    /**
-     * Baht
-     */
-    const BAHT = "THB";
-
-    /**
-     * Somoni
-     */
-    const SOMONI = "TJS";
-
-    /**
-     * Turkmenistan New Manat
-     */
-    const TURKMENISTAN_NEW_MANAT = "TMT";
-
-    /**
-     * Tunisian Dinar
-     */
-    const TUNISIAN_DINAR = "TND";
-
-    /**
-     * Paâanga
-     */
-    const PAANGA = "TOP";
-
-    /**
-     * Turkish Lira
-     */
-    const TURKISH_LIRA = "TRY";
-
-    /**
-     * Trinidad and Tobago Dollar
-     */
-    const TRINIDAD_AND_TOBAGO_DOLLAR = "TTD";
-
-    /**
-     * New Taiwan Dollar
-     */
-    const NEW_TAIWAN_DOLLAR = "TWD";
-
-    /**
-     * Tanzanian Shilling
-     */
-    const TANZANIAN_SHILLING = "TZS";
-
-    /**
-     * Hryvnia
-     */
-    const HRYVNIA = "UAH";
-
-    /**
-     * Uganda Shilling
-     */
-    const UGANDA_SHILLING = "UGX";
-
-    /**
-     * US Dollar
-     */
-    const US_DOLLAR = "USD";
-
-    /**
-     * US Dollar (Next day)
-     */
-    const US_DOLLAR_NEXT_DAY = "USN";
-
-    /**
-     * Uruguay Peso en Unidades Indexadas (UI)
-     */
-    const URUGUAY_PESO_EN_UNIDADES_INDEXADAS_UI = "UYI";
-
-    /**
-     * Peso Uruguayo
-     */
-    const PESO_URUGUAYO = "UYU";
-
-    /**
-     * Unidad Previsional
-     */
-    const UNIDAD_PREVISIONAL = "UYW";
-
-    /**
-     * Uzbekistan Sum
-     */
-    const UZBEKISTAN_SUM = "UZS";
-
-    /**
-     * BolÃ­var Soberano
-     */
-    const BOLVAR_SOBERANO = "VES";
-
-    /**
-     * Dong
-     */
-    const DONG = "VND";
-
-    /**
-     * Vatu
-     */
-    const VATU = "VUV";
-
-    /**
-     * Tala
-     */
-    const TALA = "WST";
-
-    /**
-     * CFA Franc BEAC
-     */
-    const CFA_FRANC_BEAC = "XAF";
-
-    /**
-     * Silver
-     */
-    const SILVER = "XAG";
-
-    /**
-     * Gold
-     */
-    const GOLD = "XAU";
-
-    /**
-     * Bond Markets Unit European Composite Unit (EURCO)
-     */
-    const BOND_MARKETS_UNIT_EUROPEAN_COMPOSITE_UNIT_EURCO = "XBA";
-
-    /**
-     * Bond Markets Unit European Monetary Unit (E.M.U.-6)
-     */
-    const BOND_MARKETS_UNIT_EUROPEAN_MONETARY_UNIT_EMU6 = "XBB";
-
-    /**
-     * Bond Markets Unit European Unit of Account 9 (E.U.A.-9)
-     */
-    const BOND_MARKETS_UNIT_EUROPEAN_UNIT_OF_ACCOUNT_9_EUA9 = "XBC";
-
-    /**
-     * Bond Markets Unit European Unit of Account 17 (E.U.A.-17)
-     */
-    const BOND_MARKETS_UNIT_EUROPEAN_UNIT_OF_ACCOUNT_17_EUA17 = "XBD";
-
-    /**
-     * East Caribbean Dollar
-     */
-    const EAST_CARIBBEAN_DOLLAR = "XCD";
-
-    /**
-     * SDR (Special Drawing Right)
-     */
-    const SDR_SPECIAL_DRAWING_RIGHT = "XDR";
-
-    /**
-     * CFA Franc BCEAO
-     */
-    const CFA_FRANC_BCEAO = "XOF";
-
-    /**
-     * Palladium
-     */
-    const PALLADIUM = "XPD";
-
-    /**
-     * CFP Franc
-     */
-    const CFP_FRANC = "XPF";
-
-    /**
-     * Platinum
-     */
-    const PLATINUM = "XPT";
-
-    /**
-     * Sucre
-     */
-    const SUCRE = "XSU";
-
-    /**
-     * Codes specifically reserved for testing purposes
-     */
-    const CODES_SPECIFICALLY_RESERVED_FOR_TESTING_PURPOSES = "XTS";
-
-    /**
-     * ADB Unit of Account
-     */
-    const ADB_UNIT_OF_ACCOUNT = "XUA";
-
-    /**
-     * The codes assigned for transactions where no currency is involved
-     */
-    const THE_CODES_ASSIGNED_FOR_TRANSACTIONS_WHERE_NO_CURRENCY_IS_INVOLVED = "XXX";
-
-    /**
-     * Yemeni Rial
-     */
-    const YEMENI_RIAL = "YER";
-
-    /**
-     * Rand
-     */
-    const RAND = "ZAR";
-
-    /**
-     * Zambian Kwacha
-     */
-    const ZAMBIAN_KWACHA = "ZMW";
-
-    /**
-     * Zimbabwe Dollar
-     */
-    const ZIMBABWE_DOLLAR = "ZWL";
+     * Accident reference number (APP)
+     *
+     * Reference number assigned to an accident.
+     */
+    public const ACCI_REFE_NUMB = 'APP';
+
+    /**
+     * Account number (ADE)
+     *
+     * Identification number of an account.
+     */
+    public const ACCO_NUMB = 'ADE';
+
+    /**
+     * Account party's bank reference (AGC)
+     *
+     * Reference number of the account party's bank.
+     */
+    public const ACCO_PART_BANK_REFE = 'AGC';
+
+    /**
+     * Account party's reference (AFN)
+     *
+     * Reference of the account party.
+     */
+    public const ACCO_PART_REFE = 'AFN';
+
+    /**
+     * Account payable number (AV)
+     *
+     * Reference number assigned by accounts payable department to the account of
+     * a specific creditor.
+     */
+    public const ACCO_PAYA_NUMB = 'AV';
+
+    /**
+     * Account servicing bank's reference number (ANA)
+     *
+     * Reference number of the account servicing bank.
+     */
+    public const ACCO_SERV_BANK_REFE_NUMB = 'ANA';
+
+    /**
+     * Accounting entry (AWQ)
+     *
+     * Accounting entry to which this item is related.
+     */
+    public const ACCO_ENTR = 'AWQ';
+
+    /**
+     * Accounting file reference (AOD)
+     *
+     * Reference of an accounting file.
+     */
+    public const ACCO_FILE_REFE = 'AOD';
+
+    /**
+     * Accounting transmission number (ASU)
+     *
+     * A number used to identify the transmission of an accounting book entry.
+     */
+    public const ACCO_TRAN_NUMB = 'ASU';
+
+    /**
+     * Accounts receivable number (AP)
+     *
+     * Reference number assigned by accounts receivable department to the account
+     * of a specific debtor.
+     */
+    public const ACCO_RECE_NUMB = 'AP';
+
+    /**
+     * Action authorization number (AKO)
+     *
+     * A reference number authorizing an action.
+     */
+    public const ACTI_AUTH_NUMB = 'AKO';
+
+    /**
+     * Activite Principale Exercee (APE) identifier (AQQ)
+     *
+     * The French industry code for the main activity of a company.
+     */
+    public const ACTI_PRIN_EXER_APE_IDEN = 'AQQ';
+
+    /**
+     * Additional reference number (ACD)
+     *
+     * [1010] Reference number provided in addition to another given reference.
+     */
+    public const ADDI_REFE_NUMB = 'ACD';
+
+    /**
+     * Addressee reference (ACF)
+     *
+     * A reference number of an addressee.
+     */
+    public const ADDR_REFE = 'ACF';
+
+    /**
+     * Administrative Reference Code (AWT)
+     *
+     * Reference number assigned by Customs to a âshipment of excise goodsâ.
+     */
+    public const ADMI_REFE_CODE = 'AWT';
+
+    /**
+     * Advise through bank's reference (AMP)
+     *
+     * Financial institution through which the advising bank is to advise the
+     * documentary credit.
+     */
+    public const ADVI_THRO_BANK_REFE = 'AMP';
+
+    /**
+     * Advising bank's reference (AWD)
+     *
+     * Reference number of the advising bank.
+     */
+    public const ADVI_BANK_REFE = 'AWD';
+
+    /**
+     * Agency clause number (AJE)
+     *
+     * A number indicating a clause applicable to a particular agency.
+     */
+    public const AGEN_CLAU_NUMB = 'AJE';
+
+    /**
+     * Agent's bank reference (AGD)
+     *
+     * Reference number issued by the agent's bank.
+     */
+    public const AGEN_BANK_REFE = 'AGD';
+
+    /**
+     * Agent's reference (AGE)
+     *
+     * Reference number of the agent.
+     */
+    public const AGEN_REFE = 'AGE';
+
+    /**
+     * AGERD (Aerospace Ground Equipment Requirement Data) number (ALU)
+     *
+     * Identifies the equipment required to conduct maintenance.
+     */
+    public const AGER_AERO_GROU_EQUI_REQU_DATA_NUMB = 'ALU';
+
+    /**
+     * Agreement number (AJS)
+     *
+     * A number specifying an agreement between parties.
+     */
+    public const AGRE_NUMB = 'AJS';
+
+    /**
+     * Agreement to pay number (AGA)
+     *
+     * A number that identifies an agreement to pay.
+     */
+    public const AGRE_TO_PAY_NUMB = 'AGA';
+
+    /**
+     * Air cargo transfer manifest (AC)
+     *
+     * A number assigned to an air cargo list of goods to be transferred.
+     */
+    public const AIR_CARG_TRAN_MANI = 'AC';
+
+    /**
+     * Air waybill number (AWB)
+     *
+     * Reference number assigned to an air waybill, see: 1001 = 740.
+     */
+    public const AIR_WAYB_NUMB = 'AWB';
+
+    /**
+     * Airlines flight identification number (AF)
+     *
+     * (8028) Identification of a commercial flight by carrier code and number as
+     * assigned by the airline (IATA).
+     */
+    public const AIRL_FLIG_IDEN_NUMB = 'AF';
+
+    /**
+     * Allocated seat (SEA)
+     *
+     * Reference to a seat allocated to a passenger.
+     */
+    public const ALLO_SEAT = 'SEA';
+
+    /**
+     * Allotment identification (Air) (ABY)
+     *
+     * Reference assigned to guarantied capacity on one or more specific flights
+     * on specific date(s) to third parties as agents and other airlines.
+     */
+    public const ALLO_IDEN_AIR = 'ABY';
+
+    /**
+     * Analysis number/test number (ADD)
+     *
+     * Number given to a specific analysis or test operation.
+     */
+    public const ANAL_NUMB_NUMB = 'ADD';
+
+    /**
+     * Animal farm licence number (CFF)
+     *
+     * Veterinary licence number allocated by a national authority to an animal
+     * farm.
+     */
+    public const ANIM_FARM_LICE_NUMB = 'CFF';
+
+    /**
+     * Anti-dumping case number (ABC)
+     *
+     * Reference issued by a Customs administration pertaining to a past or
+     * current investigation of goods "dumped" at a price lower than the
+     * exporter's domestic market price.
+     */
+    public const ANTI_CASE_NUMB = 'ABC';
+
+    /**
+     * Applicable coefficient identification number (APT)
+     *
+     * The identification number of the coefficient which is applicable.
+     */
+    public const APPL_COEF_IDEN_NUMB = 'APT';
+
+    /**
+     * Applicable instructions or standards (AEH)
+     *
+     * Instructions or standards applicable for the whole message or a message
+     * line item. These instructions or standards may be published by a neutral
+     * organization or authority or another party concerned.
+     */
+    public const APPL_INST_OR_STAN = 'AEH';
+
+    /**
+     * Applicant's bank reference (AFQ)
+     *
+     * Reference number of the applicant's bank.
+     */
+    public const APPL_BANK_REFE = 'AFQ';
+
+    /**
+     * Applicant's reference (AGF)
+     *
+     * Reference number of the applicant.
+     */
+    public const APPL_REFE = 'AGF';
+
+    /**
+     * Application for financial support reference number (AUK)
+     *
+     * Reference number assigned to an application for financial support.
+     */
+    public const APPL_FOR_FINA_SUPP_REFE_NUMB = 'AUK';
+
+    /**
+     * Application reference number (AGK)
+     *
+     * A number that identifies an application reference.
+     */
+    public const APPL_REFE_NUMB = 'AGK';
+
+    /**
+     * Appropriation number (AKP)
+     *
+     * The number identifying a type of funding for a specific purpose
+     * (appropriation).
+     */
+    public const APPR_NUMB = 'AKP';
+
+    /**
+     * Article number (ABU)
+     *
+     * A number that identifies an article.
+     */
+    public const ARTI_NUMB = 'ABU';
+
+    /**
+     * Assembly number (AEB)
+     *
+     * A number that identifies an assembly.
+     */
+    public const ASSE_NUMB = 'AEB';
+
+    /**
+     * Associated invoices (AFL)
+     *
+     * A number that identifies associated invoices.
+     */
+    public const ASSO_INVO = 'AFL';
+
+    /**
+     * Assuming company (ASC)
+     *
+     * A number that identifies an assuming company.
+     */
+    public const ASSU_COMP = 'ASC';
+
+    /**
+     * ATA carnet number (ACG)
+     *
+     * Reference number assigned to an ATA carnet.
+     */
+    public const ATA_CARN_NUMB = 'ACG';
+
+    /**
+     * Authorisation for repair reference (APV)
+     *
+     * Reference of the authorisation for repair.
+     */
+    public const AUTH_FOR_REPA_REFE = 'APV';
+
+    /**
+     * Authority issued equipment identification (AHB)
+     *
+     * Identification issued by an authority, e.g. government, airport authority.
+     */
+    public const AUTH_ISSU_EQUI_IDEN = 'AHB';
+
+    /**
+     * Authorization for expense (AFE) number (AE)
+     *
+     * A number that identifies an authorization for expense (AFE).
+     */
+    public const AUTH_FOR_EXPE_AFE_NUMB = 'AE';
+
+    /**
+     * Authorization number (ANJ)
+     *
+     * A number which uniquely identifies an authorization.
+     */
+    public const AUTH_NUMB = 'ANJ';
+
+    /**
+     * Authorization number for exception to dangerous goods regulations (ALF)
+     *
+     * Reference number allocated by an authority. This number contains an
+     * approval concerning exceptions on the existing dangerous goods regulations.
+     */
+    public const AUTH_NUMB_FOR_EXCE_TO_DANG_GOOD_REGU = 'ALF';
+
+    /**
+     * Authorization to meet competition number (AU)
+     *
+     * A number assigned by a requestor to an offer incoming following request for
+     * quote.
+     */
+    public const AUTH_TO_MEET_COMP_NUMB = 'AU';
+
+    /**
+     * Bankgiro reference (ATL)
+     *
+     * Reference of the Bankgiro.
+     */
+    public const BANK_REFE = 'ATL';
+
+    /**
+     * Bank's batch interbank transaction reference number (AAH)
+     *
+     * Reference number allocated by the bank to a batch of different underlying
+     * interbank transactions.
+     */
+    public const BANK_BATC_INTE_TRAN_REFE_NUMB = 'AAH';
+
+    /**
+     * Bank's common transaction reference number (AII)
+     *
+     * Bank's reference number allocated by the bank to different underlying
+     * individual transactions.
+     */
+    public const BANK_COMM_TRAN_REFE_NUMB = 'AII';
+
+    /**
+     * Bank's documentary procedure reference (ATG)
+     *
+     * Reference allocated by the bank to a documentary procedure.
+     */
+    public const BANK_DOCU_PROC_REFE = 'ATG';
+
+    /**
+     * Bank's individual interbank transaction reference number (AAI)
+     *
+     * Reference number allocated by the bank to one specific interbank
+     * transaction.
+     */
+    public const BANK_INDI_INTE_TRAN_REFE_NUMB = 'AAI';
+
+    /**
+     * Bank's individual transaction reference number (AIK)
+     *
+     * Bank's reference number allocated by the bank to one specific transaction.
+     */
+    public const BANK_INDI_TRAN_REFE_NUMB = 'AIK';
+
+    /**
+     * Banker's acceptance (ACX)
+     *
+     * Reference number for banker's acceptance issued by the accepting financial
+     * institution.
+     */
+    public const BANK_ACCE = 'ACX';
+
+    /**
+     * Bankruptcy procedure number (AQZ)
+     *
+     * A number identifying a bankruptcy procedure.
+     */
+    public const BANK_PROC_NUMB = 'AQZ';
+
+    /**
+     * Bar coded label serial number (LS)
+     *
+     * The serial number on a bar code label.
+     */
+    public const BAR_CODE_LABE_SERI_NUMB = 'LS';
+
+    /**
+     * Batch number/lot number (BT)
+     *
+     * [7338] Reference number assigned by manufacturer to a series of similar
+     * products or goods produced under similar conditions.
+     */
+    public const BATC_NUMB_NUMB = 'BT';
+
+    /**
+     * Battery and accumulator producer registration number (BTP)
+     *
+     * Registration number of producer of batteries and accumulators.
+     */
+    public const BATT_AND_ACCU_PROD_REGI_NUMB = 'BTP';
+
+    /**
+     * Beginning job sequence number (AQN)
+     *
+     * The number designating the beginning of the job sequence.
+     */
+    public const BEGI_JOB_SEQU_NUMB = 'AQN';
+
+    /**
+     * Beginning meter reading actual (BA)
+     *
+     * Meter reading at the beginning of an invoicing period.
+     */
+    public const BEGI_METE_READ_ACTU = 'BA';
+
+    /**
+     * Beginning meter reading estimated (BE)
+     *
+     * Meter reading at the beginning of an invoicing period where an actual
+     * reading is not available.
+     */
+    public const BEGI_METE_READ_ESTI = 'BE';
+
+    /**
+     * Beneficiary's bank reference (AFS)
+     *
+     * Reference number of the beneficiary's bank.
+     */
+    public const BENE_BANK_REFE = 'AFS';
+
+    /**
+     * Beneficiary's reference (AFO)
+     *
+     * Reference of the beneficiary.
+     */
+    public const BENE_REFE = 'AFO';
+
+    /**
+     * Bid number (BD)
+     *
+     * Number assigned by a submitter of a bid to his bid.
+     */
+    public const BID_NUMB = 'BD';
+
+    /**
+     * Bill of lading number (BM)
+     *
+     * Reference number assigned to a bill of lading, see: 1001 = 705.
+     */
+    public const BILL_OF_LADI_NUMB = 'BM';
+
+    /**
+     * Bill of quantities number (AFX)
+     *
+     * Reference number assigned to a bill of quantities.
+     */
+    public const BILL_OF_QUAN_NUMB = 'AFX';
+
+    /**
+     * Blanket order number (BO)
+     *
+     * Reference number assigned by the order issuer to a blanket order.
+     */
+    public const BLAN_ORDE_NUMB = 'BO';
+
+    /**
+     * Blended with number (BW)
+     *
+     * The batch/lot/package number a product is blended with.
+     */
+    public const BLEN_WITH_NUMB = 'BW';
+
+    /**
+     * Book number (ART)
+     *
+     * A number assigned to identify a book.
+     */
+    public const BOOK_NUMB = 'ART';
+
+    /**
+     * Bordereau number (AFC)
+     *
+     * Reference number assigned to a bordereau, see: 1001 = 787.
+     */
+    public const BORD_NUMB = 'AFC';
+
+    /**
+     * Broker or sales office number (BR)
+     *
+     * A number that identifies a broker or sales office.
+     */
+    public const BROK_OR_SALE_OFFI_NUMB = 'BR';
+
+    /**
+     * Broker reference 3 (AVK)
+     *
+     * Third reference of a broker.
+     */
+    public const BROK_REFE = 'AVK';
+
+    /**
+     * Budget chapter (ASD)
+     *
+     * A reference to the chapter in a budget.
+     */
+    public const BUDG_CHAP = 'ASD';
+
+    /**
+     * Bureau signing (statement reference) (ADI)
+     *
+     * A statement reference that identifies a bureau signing.
+     */
+    public const BURE_SIGN_STAT_REFE = 'ADI';
+
+    /**
+     * Buyer's catalogue number (AMW)
+     *
+     * Identification of a catalogue maintained by a buyer.
+     */
+    public const BUYE_CATA_NUMB = 'AMW';
+
+    /**
+     * Buyer's contract number (BC)
+     *
+     * Reference number assigned by buyer to a contract.
+     */
+    public const BUYE_CONT_NUMB = 'BC';
+
+    /**
+     * Buyer's debtor number (DB)
+     *
+     * Reference number assigned to a debtor.
+     */
+    public const BUYE_DEBT_NUMB = 'DB';
+
+    /**
+     * Buyer's fund number (AWW)
+     *
+     * A reference number indicating the fund number used by the buyer.
+     */
+    public const BUYE_FUND_NUMB = 'AWW';
+
+    /**
+     * Buyer's item number (ADA)
+     *
+     * [7304] Reference number assigned by the buyer to an item.
+     */
+    public const BUYE_ITEM_NUMB = 'ADA';
+
+    /**
+     * CAD file layer convention (ANF)
+     *
+     * Reference number identifying a layer convention for a file in a Computer
+     * Aided Design (CAD) environment.
+     */
+    public const CAD_FILE_LAYE_CONV = 'ANF';
+
+    /**
+     * Cadastro Geral do Contribuinte (CGC) (ASW)
+     *
+     * Brazilian taxpayer number.
+     */
+    public const CADA_GERA_DO_CONT_CGC = 'ASW';
+
+    /**
+     * Calendar (AOJ)
+     *
+     * A calendar reference number.
+     */
+    public const CALENDAR = 'AOJ';
+
+    /**
+     * Call off order number (COF)
+     *
+     * A number that identifies a call off order.
+     */
+    public const CALL_OFF_ORDE_NUMB = 'COF';
+
+    /**
+     * Canadian excise entry number (AMN)
+     *
+     * An excise entry number assigned by the Canadian Customs.
+     */
+    public const CANA_EXCI_ENTR_NUMB = 'AMN';
+
+    /**
+     * Cargo acceptance order reference number (ACA)
+     *
+     * Reference assigned to the cargo acceptance order.
+     */
+    public const CARG_ACCE_ORDE_REFE_NUMB = 'ACA';
+
+    /**
+     * Cargo control number (XC)
+     *
+     * Reference used to identify and control a carrier and consignment from
+     * initial entry into a country until release of the cargo by Customs.
+     */
+    public const CARG_CONT_NUMB = 'XC';
+
+    /**
+     * Cargo manifest number (AFB)
+     *
+     * [1037] Reference number assigned to a cargo manifest.
+     */
+    public const CARG_MANI_NUMB = 'AFB';
+
+    /**
+     * Carrier's agent reference number (AAY)
+     *
+     * Reference number assigned by the carriers agent to a transaction.
+     */
+    public const CARR_AGEN_REFE_NUMB = 'AAY';
+
+    /**
+     * Carrier's reference number (CN)
+     *
+     * Reference number assigned by carrier to a consignment.
+     */
+    public const CARR_REFE_NUMB = 'CN';
+
+    /**
+     * Case number (AMH)
+     *
+     * Number assigned to a case.
+     */
+    public const CASE_NUMB = 'AMH';
+
+    /**
+     * Case of need party's reference (ANO)
+     *
+     * Reference number of the case of need party.
+     */
+    public const CASE_OF_NEED_PART_REFE = 'ANO';
+
+    /**
+     * Catalogue sequence number (AKS)
+     *
+     * A number which uniquely identifies an item within a catalogue according to
+     * a standard numbering system.
+     */
+    public const CATA_SEQU_NUMB = 'AKS';
+
+    /**
+     * Catastrophe number (ADG)
+     *
+     * A number that identifies a catastrophe.
+     */
+    public const CATA_NUMB = 'ADG';
+
+    /**
+     * Category of work reference (AWH)
+     *
+     * A reference identifying a category of work.
+     */
+    public const CATE_OF_WORK_REFE = 'AWH';
+
+    /**
+     * CD-ROM (ASY)
+     *
+     * Identity number of the Compact Disk Read Only Memory (CD-ROM).
+     */
+    public const CDROM = 'ASY';
+
+    /**
+     * Cedent's claim number (APD)
+     *
+     * To identify the number assigned to the claim by the ceding company.
+     */
+    public const CEDE_CLAI_NUMB = 'APD';
+
+    /**
+     * Ceding company (CEC)
+     *
+     * Company selling obligations to a third party.
+     */
+    public const CEDI_COMP = 'CEC';
+
+    /**
+     * Ceiling formula reference number (APJ)
+     *
+     * The reference number which identifies a formula for determining a ceiling.
+     */
+    public const CEIL_FORM_REFE_NUMB = 'APJ';
+
+    /**
+     * Central secretariat log number (AQE)
+     *
+     * The reference log number assigned by the central secretariat for the Data
+     * Maintenance Request (DMR).
+     */
+    public const CENT_SECR_LOG_NUMB = 'AQE';
+
+    /**
+     * Central secretariat log number, child Data Maintenance Request (DMR) (AQG)
+     *
+     * The reference log number assigned by the central secretariat for the child
+     * Data Maintenance Request (DMR).
+     */
+    public const CENT_SECR_LOG_NUMB_CHIL_DATA_MAIN_REQU_DMR = 'AQG';
+
+    /**
+     * Central secretariat log number, parent Data Maintenance Request (DMR) (AQF)
+     *
+     * The reference log number assigned by the central secretariat for the parent
+     * Data Maintenance Request (DMR).
+     */
+    public const CENT_SECR_LOG_NUMB_PARE_DATA_MAIN_REQU_DMR = 'AQF';
+
+    /**
+     * Certificate of conformity (AID)
+     *
+     * Certificate certifying the conformity to predefined definitions.
+     */
+    public const CERT_OF_CONF = 'AID';
+
+    /**
+     * Chamber of Commerce registration number (AHO)
+     *
+     * The registration number by which a company/organization is known to the
+     * Chamber of Commerce.
+     */
+    public const CHAM_OF_COMM_REGI_NUMB = 'AHO';
+
+    /**
+     * Charge card account number (AIU)
+     *
+     * Number to identify charge card account.
+     */
+    public const CHAR_CARD_ACCO_NUMB = 'AIU';
+
+    /**
+     * Charges note document attachment indicator (CNO)
+     *
+     * [1070] Indication that a charges note has been established and attached to
+     * a transport contract document or not.
+     */
+    public const CHAR_NOTE_DOCU_ATTA_INDI = 'CNO';
+
+    /**
+     * Checking number (CKN)
+     *
+     * Number assigned by checking party to one specific check action.
+     */
+    public const CHEC_NUMB = 'CKN';
+
+    /**
+     * Cheque number (CK)
+     *
+     * Unique number assigned to one specific cheque.
+     */
+    public const CHEQ_NUMB = 'CK';
+
+    /**
+     * Circular publication number (AJF)
+     *
+     * A number specifying a circular publication.
+     */
+    public const CIRC_PUBL_NUMB = 'AJF';
+
+    /**
+     * Civil action number (AAX)
+     *
+     * A reference number identifying the civil action.
+     */
+    public const CIVI_ACTI_NUMB = 'AAX';
+
+    /**
+     * Clave Unica de Identificacion Tributaria (CUIT) (ATU)
+     *
+     * Tax identification number in Argentina.
+     */
+    public const CLAV_UNIC_DE_IDEN_TRIB_CUIT = 'ATU';
+
+    /**
+     * Clearing reference (ANX)
+     *
+     * Reference allocated by a clearing procedure.
+     */
+    public const CLEA_REFE = 'ANX';
+
+    /**
+     * Cold roll number (ACQ)
+     *
+     * Number attributed to a cold roll coil.
+     */
+    public const COLD_ROLL_NUMB = 'ACQ';
+
+    /**
+     * Collecting bank's reference (ANP)
+     *
+     * Reference number of the collecting bank.
+     */
+    public const COLL_BANK_REFE = 'ANP';
+
+    /**
+     * Collection advice document identifier (ACN)
+     *
+     * [1030] Reference number to identify a collection advice document.
+     */
+    public const COLL_ADVI_DOCU_IDEN = 'ACN';
+
+    /**
+     * Collection instrument number (ATN)
+     *
+     * To identify the number of an instrument used to remit funds to a
+     * beneficiary.
+     */
+    public const COLL_INST_NUMB = 'ATN';
+
+    /**
+     * Collection reference (AUD)
+     *
+     * A reference identifying a collection.
+     */
+    public const COLL_REFE = 'AUD';
+
+    /**
+     * Commercial account summary reference number (APQ)
+     *
+     * A reference number identifying a commercial account summary.
+     */
+    public const COMM_ACCO_SUMM_REFE_NUMB = 'APQ';
+
+    /**
+     * Commodity number (AED)
+     *
+     * A number that identifies a commodity.
+     */
+    public const COMM_NUMB = 'AED';
+
+    /**
+     * Common transaction reference number (AIH)
+     *
+     * Reference number applicable to different underlying individual
+     * transactions.
+     */
+    public const COMM_TRAN_REFE_NUMB = 'AIH';
+
+    /**
+     * Companies Registry Office (CRO) number (ARC)
+     *
+     * Identifies the reference number assigned by the Companies Registry Office
+     * (CRO).
+     */
+    public const COMP_REGI_OFFI_CRO_NUMB = 'ARC';
+
+    /**
+     * Company / syndicate reference 2 (ADK)
+     *
+     * Second reference of a company/syndicate.
+     */
+    public const COMP_SYND_REFE = 'ADK';
+
+    /**
+     * Company issued equipment ID (AGP)
+     *
+     * Owner/operator, non-government issued equipment reference number.
+     */
+    public const COMP_ISSU_EQUI_ID = 'AGP';
+
+    /**
+     * Company trading account number (AWX)
+     *
+     * A reference number identifying a company trading account.
+     */
+    public const COMP_TRAD_ACCO_NUMB = 'AWX';
+
+    /**
+     * Company/place registration number (XA)
+     *
+     * Company registration and place as legally required.
+     */
+    public const COMP_REGI_NUMB = 'XA';
+
+    /**
+     * Completed units payment request reference (ANB)
+     *
+     * A reference to a payment request for completed units.
+     */
+    public const COMP_UNIT_PAYM_REQU_REFE = 'ANB';
+
+    /**
+     * Compliance code number (AIA)
+     *
+     * Number assigned to indicate regulatory compliance.
+     */
+    public const COMP_CODE_NUMB = 'AIA';
+
+    /**
+     * Condition of purchase document number (CP)
+     *
+     * Reference number identifying the conditions of purchase relevant to a
+     * purchase.
+     */
+    public const COND_OF_PURC_DOCU_NUMB = 'CP';
+
+    /**
+     * Condition of sale document number (CS)
+     *
+     * Reference number identifying the conditions of sale relevant to a sale.
+     */
+    public const COND_OF_SALE_DOCU_NUMB = 'CS';
+
+    /**
+     * Connected location (AWN)
+     *
+     * Reference of a connected location.
+     */
+    public const CONN_LOCA = 'AWN';
+
+    /**
+     * Connecting point to central grid (AUV)
+     *
+     * Reference to a connecting point to a central grid.
+     */
+    public const CONN_POIN_TO_CENT_GRID = 'AUV';
+
+    /**
+     * Consignor's further order (CFO)
+     *
+     * Reference of an order given by the consignor after departure of the means
+     * of transport.
+     */
+    public const CONS_FURT_ORDE = 'CFO';
+
+    /**
+     * Consolidated invoice number (AIZ)
+     *
+     * Invoice number into which other invoices are consolidated.
+     */
+    public const CONS_INVO_NUMB = 'AIZ';
+
+    /**
+     * Consignee's order number (CG)
+     *
+     * A number that identifies a consignee's order.
+     */
+    public const CONS_ORDE_NUMB = 'CG';
+
+    /**
+     * Consignee's reference (ANT)
+     *
+     * Reference number of the consignee.
+     */
+    public const CONS_REFE = 'ANT';
+
+    /**
+     * Consignment contract number (AXP)
+     *
+     * Reference number identifying a consignment contract.
+     */
+    public const CONS_CONT_NUMB = 'AXP';
+
+    /**
+     * Consignment identifier, carrier assigned (BN)
+     *
+     * [1016] Reference number assigned by a carrier of its agent to identify a
+     * specific consignment such as a booking reference number when cargo space is
+     * reserved prior to loading.
+     */
+    public const CONS_IDEN_CARR_ASSI = 'BN';
+
+    /**
+     * Consignment identifier, consignor assigned (CU)
+     *
+     * [1140] Reference number assigned by the consignor to identify a particular
+     * consignment.
+     */
+    public const CONS_IDEN_CONS_ASSI = 'CU';
+
+    /**
+     * Consignment identifier, freight forwarder assigned (FF)
+     *
+     * [1460] Reference number assigned by the freight forwarder to identify a
+     * particular consignment.
+     */
+    public const CONS_IDEN_FREI_FORW_ASSI = 'FF';
+
+    /**
+     * Consignment information (AVL)
+     *
+     * Code identifying that the reference number given applies to the consignment
+     * information segment group in the referred message .
+     */
+    public const CONS_INFO = 'AVL';
+
+    /**
+     * Consignment receipt identifier (REN)
+     *
+     * [1150] Reference number assigned to identify a consignment upon its arrival
+     * at its destination.
+     */
+    public const CONS_RECE_IDEN = 'REN';
+
+    /**
+     * Consignment stock contract (AUF)
+     *
+     * Reference identifying a consignment stock contract.
+     */
+    public const CONS_STOC_CONT = 'AUF';
+
+    /**
+     * Consolidated orders' reference (AUP)
+     *
+     * A reference number to identify orders which have been, or shall be
+     * consolidated.
+     */
+    public const CONS_ORDE_REFE = 'AUP';
+
+    /**
+     * Constraint notation (AOX)
+     *
+     * Identifies a reference to a constraint notation.
+     */
+    public const CONS_NOTA = 'AOX';
+
+    /**
+     * Consumption data request number (AMF)
+     *
+     * A number which identifies a request for consumption data.
+     */
+    public const CONS_DATA_REQU_NUMB = 'AMF';
+
+    /**
+     * Container disposition order reference number (AKA)
+     *
+     * Reference assigned to the empty container disposition order.
+     */
+    public const CONT_DISP_ORDE_REFE_NUMB = 'AKA';
+
+    /**
+     * Container operators reference number (CV)
+     *
+     * Reference number assigned by the party operating or controlling the
+     * transport container to a transaction or consignment.
+     */
+    public const CONT_OPER_REFE_NUMB = 'CV';
+
+    /**
+     * Container prefix (AKB)
+     *
+     * The first part of the unique identification of a container formed by an
+     * alpha code identifying the owner of the container.
+     */
+    public const CONT_PREF = 'AKB';
+
+    /**
+     * Container work order reference number (ADO)
+     *
+     * Reference number assigned by the principal to the work order for a (set of)
+     * container(s).
+     */
+    public const CONT_WORK_ORDE_REFE_NUMB = 'ADO';
+
+    /**
+     * Container/equipment receipt number (ER)
+     *
+     * Number of the Equipment Interchange Receipt issued for full or empty
+     * equipment received.
+     */
+    public const CONT_RECE_NUMB = 'ER';
+
+    /**
+     * Contract breakdown reference (APR)
+     *
+     * A reference which identifies a specific breakdown of a contract.
+     */
+    public const CONT_BREA_REFE = 'APR';
+
+    /**
+     * Contract document addendum identifier (AAD)
+     *
+     * [1318] Reference number to identify an addendum to a contract.
+     */
+    public const CONT_DOCU_ADDE_IDEN = 'AAD';
+
+    /**
+     * Contract number (CT)
+     *
+     * [1296] Reference number of a contract concluded between parties.
+     */
+    public const CONT_NUMB = 'CT';
+
+    /**
+     * Contract party reference number (AGB)
+     *
+     * Reference number assigned to a party for a particular contract.
+     */
+    public const CONT_PART_REFE_NUMB = 'AGB';
+
+    /**
+     * Contractor registration number (APS)
+     *
+     * A reference number used to identify a contractor.
+     */
+    public const CONT_REGI_NUMB = 'APS';
+
+    /**
+     * Contractor request reference (APO)
+     *
+     * Reference identifying a request made by a contractor.
+     */
+    public const CONT_REQU_REFE = 'APO';
+
+    /**
+     * Converted Postgiro number (ATO)
+     *
+     * To identify the reference number of a giro payment having been converted to
+     * a Postgiro account.
+     */
+    public const CONV_POST_NUMB = 'ATO';
+
+    /**
+     * Cooperation contract number (CZ)
+     *
+     * Number issued by a party concerned given to a contract on cooperation of
+     * two or more parties.
+     */
+    public const COOP_CONT_NUMB = 'CZ';
+
+    /**
+     * Cost account (AOU)
+     *
+     * A cost control account reference.
+     */
+    public const COST_ACCO = 'AOU';
+
+    /**
+     * Cost accounting document (CAY)
+     *
+     * The reference to a cost accounting document.
+     */
+    public const COST_ACCO_DOCU = 'CAY';
+
+    /**
+     * Cost centre (AWE)
+     *
+     * A number identifying a cost centre.
+     */
+    public const COST_CENT = 'AWE';
+
+    /**
+     * Cost centre alignment number (ATP)
+     *
+     * Number used in the financial management process to align cost allocations.
+     */
+    public const COST_CENT_ALIG_NUMB = 'ATP';
+
+    /**
+     * Costa Rican judicial number (ARD)
+     *
+     * A number assigned by the government to a business in Costa Rica.
+     */
+    public const COST_RICA_JUDI_NUMB = 'ARD';
+
+    /**
+     * Credit memo number (CM)
+     *
+     * Reference number assigned by issuer to a credit memo.
+     */
+    public const CRED_MEMO_NUMB = 'CM';
+
+    /**
+     * Credit note number (CD)
+     *
+     * [1113] Reference number assigned to a credit note.
+     */
+    public const CRED_NOTE_NUMB = 'CD';
+
+    /**
+     * Credit rating agency's reference number (AGH)
+     *
+     * Reference number assigned by a credit rating agency to a debtor.
+     */
+    public const CRED_RATI_AGEN_REFE_NUMB = 'AGH';
+
+    /**
+     * Creditor's reference number (AHL)
+     *
+     * Reference number of the party to whom a debt is owed.
+     */
+    public const CRED_REFE_NUMB = 'AHL';
+
+    /**
+     * Current invoice number (OH)
+     *
+     * Reference number identifying the current invoice.
+     */
+    public const CURR_INVO_NUMB = 'OH';
+
+    /**
+     * Customer catalogue number (CH)
+     *
+     * Number identifying a catalogue for customer's usage.
+     */
+    public const CUST_CATA_NUMB = 'CH';
+
+    /**
+     * Customer material specification number (ACJ)
+     *
+     * Number for a material specification given by customer.
+     */
+    public const CUST_MATE_SPEC_NUMB = 'ACJ';
+
+    /**
+     * Customer process specification number (AEF)
+     *
+     * Retrieval number for a process specification defined by customer.
+     */
+    public const CUST_PROC_SPEC_NUMB = 'AEF';
+
+    /**
+     * Customer reference number (CR)
+     *
+     * Reference number assigned by the customer to a transaction.
+     */
+    public const CUST_REFE_NUMB = 'CR';
+
+    /**
+     * Customer reference number assigned to previous balance of payment
+     * information (ALC)
+     *
+     * Identification number of the previous balance of payments information from
+     * customer message.
+     */
+    public const CUST_REFE_NUMB_ASSI_TO_PREV_BALA_OF_PAYM_INFO = 'ALC';
+
+    /**
+     * Customer specification number (AEG)
+     *
+     * Retrieval number for a specification defined by customer.
+     */
+    public const CUST_SPEC_NUMB = 'AEG';
+
+    /**
+     * Customer travel service identifier (AVI)
+     *
+     * A reference identifying a travel service to a customer.
+     */
+    public const CUST_TRAV_SERV_IDEN = 'AVI';
+
+    /**
+     * Customer's common transaction reference number (AIL)
+     *
+     * Customer's reference number allocated by the customer to different
+     * underlying individual transactions.
+     */
+    public const CUST_COMM_TRAN_REFE_NUMB = 'AIL';
+
+    /**
+     * Customer's documentary procedure reference (ATH)
+     *
+     * Reference allocated by a customer to a documentary procedure.
+     */
+    public const CUST_DOCU_PROC_REFE = 'ATH';
+
+    /**
+     * Customer's individual transaction reference number (AIJ)
+     *
+     * Customer's reference number allocated by the customer to one specific
+     * transaction.
+     */
+    public const CUST_INDI_TRAN_REFE_NUMB = 'AIJ';
+
+    /**
+     * Customer's unit inventory number (AEN)
+     *
+     * Number assigned by customer to a unique unit for inventory purposes.
+     */
+    public const CUST_UNIT_INVE_NUMB = 'AEN';
+
+    /**
+     * Customs binding ruling number (AUQ)
+     *
+     * Binding ruling number issued by customs.
+     */
+    public const CUST_BIND_RULI_NUMB = 'AUQ';
+
+    /**
+     * Customs decision request number (ABG)
+     *
+     * Reference issued by Customs pertaining to a pending tariff classification
+     * decision requested by an importer or agent.
+     */
+    public const CUST_DECI_REQU_NUMB = 'ABG';
+
+    /**
+     * Customs guarantee number (ABL)
+     *
+     * Reference assigned to a Customs guarantee.
+     */
+    public const CUST_GUAR_NUMB = 'ABL';
+
+    /**
+     * Customs item number (AFD)
+     *
+     * Number (1496 in CST) assigned by the declarant to an item.
+     */
+    public const CUST_ITEM_NUMB = 'AFD';
+
+    /**
+     * Customs non-binding ruling number (AUR)
+     *
+     * Non-binding ruling number issued by customs.
+     */
+    public const CUST_NONB_RULI_NUMB = 'AUR';
+
+    /**
+     * Customs pre-approval ruling number (AUZ)
+     *
+     * Pre-approval ruling number issued by Customs.
+     */
+    public const CUST_PREA_RULI_NUMB = 'AUZ';
+
+    /**
+     * Customs preference inquiry number (AIP)
+     *
+     * The number assigned by Customs to a preference inquiry.
+     */
+    public const CUST_PREF_INQU_NUMB = 'AIP';
+
+    /**
+     * Customs release code (AHZ)
+     *
+     * A code associated to a requirement that must be presented to gain the
+     * release of goods by Customs.
+     */
+    public const CUST_RELE_CODE = 'AHZ';
+
+    /**
+     * Customs tariff number (ABD)
+     *
+     * (7357) Code number of the goods in accordance with the tariff nomenclature
+     * system of classification in use where the Customs declaration is made.
+     */
+    public const CUST_TARI_NUMB = 'ABD';
+
+    /**
+     * Customs transhipment number (AIO)
+     *
+     * Approval number issued by Customs for cargo to be transhipped under Customs
+     * control.
+     */
+    public const CUST_TRAN_NUMB = 'AIO';
+
+    /**
+     * Customs valuation decision number (ABA)
+     *
+     * Reference by an importing party to a previous decision made by a Customs
+     * administration regarding the valuation of goods.
+     */
+    public const CUST_VALU_DECI_NUMB = 'ABA';
+
+    /**
+     * Dangerous Goods information (AVN)
+     *
+     * Code identifying that the reference number given applies to the dangerous
+     * goods information segment group in the referred message.
+     */
+    public const DANG_GOOD_INFO = 'AVN';
+
+    /**
+     * Dangerous goods security number (ALG)
+     *
+     * Reference number allocated by an authority in order to control the
+     * dangerous goods on board of a specific means of transport for dangerous
+     * goods security purposes.
+     */
+    public const DANG_GOOD_SECU_NUMB = 'ALG';
+
+    /**
+     * Dangerous goods transport licence number (ALH)
+     *
+     * Licence number allocated by an authority as to the permission of carrying
+     * dangerous goods by a specific means of transport.
+     */
+    public const DANG_GOOD_TRAN_LICE_NUMB = 'ALH';
+
+    /**
+     * Data structure tag (AQD)
+     *
+     * The tag assigned to a data structure.
+     */
+    public const DATA_STRU_TAG = 'AQD';
+
+    /**
+     * Debit account number (DAN)
+     *
+     * Reference number assigned by issuer to a debit account.
+     */
+    public const DEBI_ACCO_NUMB = 'DAN';
+
+    /**
+     * Debit card number (AAF)
+     *
+     * A reference number identifying a debit card.
+     */
+    public const DEBI_CARD_NUMB = 'AAF';
+
+    /**
+     * Debit letter number (CED)
+     *
+     * Reference number identifying the letter of debit document.
+     */
+    public const DEBI_LETT_NUMB = 'CED';
+
+    /**
+     * Debit note number (DL)
+     *
+     * [1117] Reference number assigned by issuer to a debit note.
+     */
+    public const DEBI_NOTE_NUMB = 'DL';
+
+    /**
+     * Debit reference number (AOI)
+     *
+     * The reference number of a debit instruction.
+     */
+    public const DEBI_REFE_NUMB = 'AOI';
+
+    /**
+     * Debtor's reference number (AHM)
+     *
+     * Reference number of the party who owes an amount of money.
+     */
+    public const DEBT_REFE_NUMB = 'AHM';
+
+    /**
+     * Declarant's Customs identity number (ABP)
+     *
+     * Reference to the party whose posted bond or security is being declared in
+     * order to accept responsibility for a goods declaration and the applicable
+     * duties and taxes.
+     */
+    public const DECL_CUST_IDEN_NUMB = 'ABP';
+
+    /**
+     * Declarant's reference number (ABE)
+     *
+     * Unique reference number assigned to a document or a message by the
+     * declarant for identification purposes.
+     */
+    public const DECL_REFE_NUMB = 'ABE';
+
+    /**
+     * Defense priorities allocation system priority rating (AJQ)
+     *
+     * A reference indicating a priority rating assigned to allocate resources for
+     * defense purchases.
+     */
+    public const DEFE_PRIO_ALLO_SYST_PRIO_RATI = 'AJQ';
+
+    /**
+     * Deferment approval number (DA)
+     *
+     * Number assigned by authorities to a party to approve deferment of payment
+     * of tax or duties.
+     */
+    public const DEFE_APPR_NUMB = 'DA';
+
+    /**
+     * Delivery note number (DQ)
+     *
+     * [1033] Reference number assigned by the issuer to a delivery note.
+     */
+    public const DELI_NOTE_NUMB = 'DQ';
+
+    /**
+     * Delivery number (transport) (AEL)
+     *
+     * Reference number by which a haulier/carrier will announce himself at the
+     * container terminal or depot when delivering equipment.
+     */
+    public const DELI_NUMB_TRAN = 'AEL';
+
+    /**
+     * Delivery order number (AAJ)
+     *
+     * Reference number assigned by issuer to a delivery order.
+     */
+    public const DELI_ORDE_NUMB = 'AAJ';
+
+    /**
+     * Delivery route reference (AUS)
+     *
+     * A reference to the route of the delivery.
+     */
+    public const DELI_ROUT_REFE = 'AUS';
+
+    /**
+     * Delivery schedule number (AAN)
+     *
+     * Reference number assigned by buyer to a delivery schedule.
+     */
+    public const DELI_SCHE_NUMB = 'AAN';
+
+    /**
+     * Delivery verification certificate (AGL)
+     *
+     * Formal identification of delivery verification certificate which is a
+     * formal document from Customs etc. confirming that physical goods have been
+     * delivered. It may be needed to support a tax reclaim based on an invoice.
+     */
+    public const DELI_VERI_CERT = 'AGL';
+
+    /**
+     * Department (AOQ)
+     *
+     * Section of an organisation.
+     */
+    public const DEPARTMENT = 'AOQ';
+
+    /**
+     * Department number (AMV)
+     *
+     * Number assigned to a department within an organization.
+     */
+    public const DEPA_NUMB = 'AMV';
+
+    /**
+     * Department of transportation bond number (AIB)
+     *
+     * Number of a bond assigned by the department of transportation.
+     */
+    public const DEPA_OF_TRAN_BOND_NUMB = 'AIB';
+
+    /**
+     * Deposit reference number (ANL)
+     *
+     * A reference number identifying a deposit.
+     */
+    public const DEPO_REFE_NUMB = 'ANL';
+
+    /**
+     * Despatch advice number (AAK)
+     *
+     * [1035] Reference number assigned by issuing party to a despatch advice.
+     */
+    public const DESP_ADVI_NUMB = 'AAK';
+
+    /**
+     * Despatch note (post parcels) number (AEZ)
+     *
+     * (1128) Reference number assigned to a despatch note (post parcels), see:
+     * 1001 = 750.
+     */
+    public const DESP_NOTE_POST_PARC_NUMB = 'AEZ';
+
+    /**
+     * Despatch note document identifier (AAU)
+     *
+     * [1128] Reference number to identify a Despatch Note.
+     */
+    public const DESP_NOTE_DOCU_IDEN = 'AAU';
+
+    /**
+     * Direct debit reference (AKJ)
+     *
+     * Reference number assigned to the direct debit operation.
+     */
+    public const DIRE_DEBI_REFE = 'AKJ';
+
+    /**
+     * Direct payment valuation number (AFT)
+     *
+     * Reference number assigned to a direct payment valuation.
+     */
+    public const DIRE_PAYM_VALU_NUMB = 'AFT';
+
+    /**
+     * Direct payment valuation request number (AFU)
+     *
+     * Reference number assigned to a direct payment valuation request.
+     */
+    public const DIRE_PAYM_VALU_REQU_NUMB = 'AFU';
+
+    /**
+     * Dispensation reference (ASA)
+     *
+     * A reference number assigned to an official exemption from a law or
+     * obligation.
+     */
+    public const DISP_REFE = 'ASA';
+
+    /**
+     * Dispute number (AGG)
+     *
+     * Reference number to a dispute notice.
+     */
+    public const DISP_NUMB = 'AGG';
+
+    /**
+     * Distributor invoice number (DI)
+     *
+     * Reference number assigned by issuer to a distributor invoice.
+     */
+    public const DIST_INVO_NUMB = 'DI';
+
+    /**
+     * Dock receipt number (DR)
+     *
+     * Number of the cargo receipt submitted when cargo is delivered to a marine
+     * terminal.
+     */
+    public const DOCK_RECE_NUMB = 'DR';
+
+    /**
+     * Docket number (AAW)
+     *
+     * A reference number identifying the docket.
+     */
+    public const DOCK_NUMB = 'AAW';
+
+    /**
+     * Document identifier (DM)
+     *
+     * [1004] Reference number identifying a specific document.
+     */
+    public const DOCU_IDEN = 'DM';
+
+    /**
+     * Document line identifier (LI)
+     *
+     * [1156] To identify a line of a document.
+     */
+    public const DOCU_LINE_IDEN = 'LI';
+
+    /**
+     * Document page identifier (ARO)
+     *
+     * [1212] To identify a page number.
+     */
+    public const DOCU_PAGE_IDEN = 'ARO';
+
+    /**
+     * Document reference, internal (CAW)
+     *
+     * Internal reference to a document.
+     */
+    public const DOCU_REFE_INTE = 'CAW';
+
+    /**
+     * Document reference, original (AWR)
+     *
+     * The original reference of a document.
+     */
+    public const DOCU_REFE_ORIG = 'AWR';
+
+    /**
+     * Document volume number (ARS)
+     *
+     * The number of a document volume.
+     */
+    public const DOCU_VOLU_NUMB = 'ARS';
+
+    /**
+     * Documentary credit amendment number (AWC)
+     *
+     * Number of the amendment of the documentary credit.
+     */
+    public const DOCU_CRED_AMEN_NUMB = 'AWC';
+
+    /**
+     * Documentary credit identifier (AAC)
+     *
+     * [1172] Reference number to identify a documentary credit.
+     */
+    public const DOCU_CRED_IDEN = 'AAC';
+
+    /**
+     * Documentary payment reference (AOA)
+     *
+     * Reference of the documentary payment.
+     */
+    public const DOCU_PAYM_REFE = 'AOA';
+
+    /**
+     * Domestic flight number (AGQ)
+     *
+     * Airline flight number assigned to a flight originating and terminating
+     * within the same country.
+     */
+    public const DOME_FLIG_NUMB = 'AGQ';
+
+    /**
+     * Domestic inventory management code (ALB)
+     *
+     * Code to identify the management of domestic inventory.
+     */
+    public const DOME_INVE_MANA_CODE = 'ALB';
+
+    /**
+     * Drawee's reference (ANN)
+     *
+     * Reference number of the drawee.
+     */
+    public const DRAW_REFE = 'ANN';
+
+    /**
+     * Drawing list number (AEQ)
+     *
+     * Reference number identifying a drawing list.
+     */
+    public const DRAW_LIST_NUMB = 'AEQ';
+
+    /**
+     * Drawing number (AAL)
+     *
+     * Reference number identifying a specific product drawing.
+     */
+    public const DRAW_NUMB = 'AAL';
+
+    /**
+     * Dun and Bradstreet Canada's 8 digit Standard Industrial Classification
+     * (SIC) code (AQP)
+     *
+     * Dun and Bradstreet Canada's 8 digit Standard Industrial Classification
+     * (SIC) code identifying activities of the company.
+     */
+    public const DUN_AND_BRAD_CANA__DIGI_STAN_INDU_CLAS_SIC_CODE = 'AQP';
+
+    /**
+     * Dun and Bradstreet US 8 digit Standard Industrial Classification (SIC) code (AQR)
+     *
+     * Dun and Bradstreet United States' 8 digit Standard Industrial
+     * Classification (SIC) code identifying activities of the company.
+     */
+    public const DUN_AND_BRAD_US__DIGI_STAN_INDU_CLAS_SIC_CODE = 'AQR';
+
+    /**
+     * Duty free products receipt authorisation number (ASF)
+     *
+     * Authorisation number allocated for the receipt of duty free products.
+     */
+    public const DUTY_FREE_PROD_RECE_AUTH_NUMB = 'ASF';
+
+    /**
+     * Duty free products security number (ASE)
+     *
+     * A security number allocated for duty free products.
+     */
+    public const DUTY_FREE_PROD_SECU_NUMB = 'ASE';
+
+    /**
+     * Duty memo number (ACY)
+     *
+     * Reference number assigned by customs to a duty memo.
+     */
+    public const DUTY_MEMO_NUMB = 'ACY';
+
+    /**
+     * Economic Operators Registration and Identification Number (EORI) (AVY)
+     *
+     * Number assigned by an authority to an economic operator.
+     */
+    public const ECON_OPER_REGI_AND_IDEN_NUMB_EORI = 'AVY';
+
+    /**
+     * Electrical and electronic equipment producer registration number (EEP)
+     *
+     * Registration number of producer of electrical and electronic equipment.
+     */
+    public const ELEC_AND_ELEC_EQUI_PROD_REGI_NUMB = 'EEP';
+
+    /**
+     * Embargo number (EN)
+     *
+     * Number assigned to specific goods or a family of goods in a classification
+     * of embargo measures.
+     */
+    public const EMBA_NUMB = 'EN';
+
+    /**
+     * Embargo permit number (EB)
+     *
+     * Reference number assigned by issuer to an embargo permit.
+     */
+    public const EMBA_PERM_NUMB = 'EB';
+
+    /**
+     * Employer identification number of service bureau (AGS)
+     *
+     * Reference number assigned by a service/processing bureau to an employer.
+     */
+    public const EMPL_IDEN_NUMB_OF_SERV_BURE = 'AGS';
+
+    /**
+     * Employer's identification number (EI)
+     *
+     * Number issued by an authority to identify an employer.
+     */
+    public const EMPL_IDEN_NUMB = 'EI';
+
+    /**
+     * Empty container bill number (AEW)
+     *
+     * Reference number assigned to an empty container bill, see: 1001 = 708.
+     */
+    public const EMPT_CONT_BILL_NUMB = 'AEW';
+
+    /**
+     * End item number (AJU)
+     *
+     * A number specifying the end item applicable to a subordinate item.
+     */
+    public const END_ITEM_NUMB = 'AJU';
+
+    /**
+     * End use authorization number (ABB)
+     *
+     * Reference issued by a Customs administration authorizing a preferential
+     * rate of duty if a product is used for a specified purpose, see: 1001 = 990.
+     */
+    public const END_USE_AUTH_NUMB = 'ABB';
+
+    /**
+     * Ending job sequence number (JE)
+     *
+     * A number that identifies the ending job sequence.
+     */
+    public const ENDI_JOB_SEQU_NUMB = 'JE';
+
+    /**
+     * Ending meter reading actual (EA)
+     *
+     * Meter reading at the end of an invoicing period.
+     */
+    public const ENDI_METE_READ_ACTU = 'EA';
+
+    /**
+     * Ending meter reading estimated (EE)
+     *
+     * Meter reading at the end of an invoicing period where an actual reading is
+     * not available.
+     */
+    public const ENDI_METE_READ_ESTI = 'EE';
+
+    /**
+     * Enquiry number (AAV)
+     *
+     * Reference number assigned to an enquiry.
+     */
+    public const ENQU_NUMB = 'AAV';
+
+    /**
+     * Entity reference number, previous (AUX)
+     *
+     * The previous reference number assigned to an entity.
+     */
+    public const ENTI_REFE_NUMB_PREV = 'AUX';
+
+    /**
+     * Entry flagging (CAU)
+     *
+     * Reference to a flagging of entries.
+     */
+    public const ENTR_FLAG = 'CAU';
+
+    /**
+     * Entry point assessment log number (AQA)
+     *
+     * The reference log number assigned by an entry point assessment group for
+     * the DMR.
+     */
+    public const ENTR_POIN_ASSE_LOG_NUMB = 'AQA';
+
+    /**
+     * Entry point assessment log number, child DMR (AQC)
+     *
+     * The reference log number assigned by an entry point assessment group for a
+     * child Data Maintenance Request (DMR).
+     */
+    public const ENTR_POIN_ASSE_LOG_NUMB_CHIL_DMR = 'AQC';
+
+    /**
+     * Entry point assessment log number, parent DMR (AQB)
+     *
+     * The reference log number assigned by an entry point assessment group for
+     * the parent Data Maintenance Request (DMR).
+     */
+    public const ENTR_POIN_ASSE_LOG_NUMB_PARE_DMR = 'AQB';
+
+    /**
+     * Equipment number (EQ)
+     *
+     * Number assigned by the manufacturer to specific equipment.
+     */
+    public const EQUI_NUMB = 'EQ';
+
+    /**
+     * Equipment owner reference number (APC)
+     *
+     * Reference number issued by the owner of the equipment.
+     */
+    public const EQUI_OWNE_REFE_NUMB = 'APC';
+
+    /**
+     * Equipment sequence number (SQ)
+     *
+     * (1492) A temporary reference number identifying a particular piece of
+     * equipment within a series of pieces of equipment.
+     */
+    public const EQUI_SEQU_NUMB = 'SQ';
+
+    /**
+     * Equipment transport charge number (ACZ)
+     *
+     * Reference assigned to a specific equipment transportation charge.
+     */
+    public const EQUI_TRAN_CHAR_NUMB = 'ACZ';
+
+    /**
+     * Error position (AWL)
+     *
+     * Reference to the position of an error in a message.
+     */
+    public const ERRO_POSI = 'AWL';
+
+    /**
+     * Estimate order reference number (ACV)
+     *
+     * Reference number assigned by the ordering party of the estimate order.
+     */
+    public const ESTI_ORDE_REFE_NUMB = 'ACV';
+
+    /**
+     * ETERMS reference (AOY)
+     *
+     * Identifies a reference to the ICC (International Chamber of Commerce)
+     * ETERMS(tm) repository of electronic commerce trading terms and conditions.
+     */
+    public const ETER_REFE = 'AOY';
+
+    /**
+     * Eur 1 certificate number (AEE)
+     *
+     * Reference number assigned to a Eur 1 certificate.
+     */
+    public const EUR__CERT_NUMB = 'AEE';
+
+    /**
+     * European Value Added Tax identification (CAX)
+     *
+     * Value Added Tax identification number according to European regulation.
+     */
+    public const EURO_VALU_ADDE_TAX_IDEN = 'CAX';
+
+    /**
+     * Event reference number (AIV)
+     *
+     * [1007] Reference number identifying an event.
+     */
+    public const EVEN_REFE_NUMB = 'AIV';
+
+    /**
+     * Exceptional transport authorisation number (ATT)
+     *
+     * Authorisation number for exceptional transport (using specific equipment,
+     * out of gauge, materials and/or specific routing).
+     */
+    public const EXCE_TRAN_AUTH_NUMB = 'ATT';
+
+    /**
+     * Excess transportation number (ET)
+     *
+     * (1041) Number assigned to excess transport.
+     */
+    public const EXCE_TRAN_NUMB = 'ET';
+
+    /**
+     * Export clearance instruction reference number (ABR)
+     *
+     * Reference number of the clearance instructions given by the consignor
+     * through different means.
+     */
+    public const EXPO_CLEA_INST_REFE_NUMB = 'ABR';
+
+    /**
+     * Export control classification number (AVJ)
+     *
+     * Number identifying the classification of goods covered by an export
+     * licence.
+     */
+    public const EXPO_CONT_CLAS_NUMB = 'AVJ';
+
+    /**
+     * Export Control Commodity number (ECCN) (AFE)
+     *
+     * Reference number to relevant item within Commodity Control List covering
+     * actual products change functionality.
+     */
+    public const EXPO_CONT_COMM_NUMB_ECCN = 'AFE';
+
+    /**
+     * Export declaration (ED)
+     *
+     * Number assigned by the exporter to his export declaration number submitted
+     * to an authority.
+     */
+    public const EXPO_DECL = 'ED';
+
+    /**
+     * Export establishment number (AIC)
+     *
+     * Number to identify export establishment.
+     */
+    public const EXPO_ESTA_NUMB = 'AIC';
+
+    /**
+     * Export permit identifier (EX)
+     *
+     * [1208] Reference number to identify an export licence or permit.
+     */
+    public const EXPO_PERM_IDEN = 'EX';
+
+    /**
+     * Exporter's reference number (ERN)
+     *
+     * Reference to a party exporting goods.
+     */
+    public const EXPO_REFE_NUMB = 'ERN';
+
+    /**
+     * External object reference (ATS)
+     *
+     * A reference identifying an external object.
+     */
+    public const EXTE_OBJE_REFE = 'ATS';
+
+    /**
+     * Federal supply schedule item number (AJV)
+     *
+     * A number specifying an item listed in a federal supply schedule.
+     */
+    public const FEDE_SUPP_SCHE_ITEM_NUMB = 'AJV';
+
+    /**
+     * File conversion journal (ANI)
+     *
+     * Reference number identifying a journal recording details about conversion
+     * operations between file formats.
+     */
+    public const FILE_CONV_JOUR = 'ANI';
+
+    /**
+     * File identification number (AQY)
+     *
+     * A number assigned to identify a file.
+     */
+    public const FILE_IDEN_NUMB = 'AQY';
+
+    /**
+     * File line identifier (FI)
+     *
+     * Number assigned by the file issuer or sender to identify a specific line.
+     */
+    public const FILE_LINE_IDEN = 'FI';
+
+    /**
+     * File version number (FV)
+     *
+     * Number given to a version of an identified file.
+     */
+    public const FILE_VERS_NUMB = 'FV';
+
+    /**
+     * Final sequence number (FS)
+     *
+     * A number that identifies the final sequence.
+     */
+    public const FINA_SEQU_NUMB = 'FS';
+
+    /**
+     * Financial cancellation reference number (ATA)
+     *
+     * Reference number of a financial cancellation.
+     */
+    public const FINA_CANC_REFE_NUMB = 'ATA';
+
+    /**
+     * Financial management reference (ALY)
+     *
+     * A financial management reference.
+     */
+    public const FINA_MANA_REFE = 'ALY';
+
+    /**
+     * Financial phase reference (ARW)
+     *
+     * A reference which identifies a specific financial phase.
+     */
+    public const FINA_PHAS_REFE = 'ARW';
+
+    /**
+     * Financial settlement party's reference number (AMX)
+     *
+     * Reference number of the party who is responsible for the financial
+     * settlement.
+     */
+    public const FINA_SETT_PART_REFE_NUMB = 'AMX';
+
+    /**
+     * Financial transaction reference number (ANU)
+     *
+     * Reference number of the financial transaction.
+     */
+    public const FINA_TRAN_REFE_NUMB = 'ANU';
+
+    /**
+     * Firm booking reference number (AXE)
+     *
+     * A reference number identifying a previous firm booking.
+     */
+    public const FIRM_BOOK_REFE_NUMB = 'AXE';
+
+    /**
+     * First financial institution's transaction reference (AVA)
+     *
+     * Identifies the reference given to the individual transaction by the
+     * financial institution that is the transaction's point of entry into the
+     * interbank transaction chain.
+     */
+    public const FIRS_FINA_INST_TRAN_REFE = 'AVA';
+
+    /**
+     * Fiscal number (FC)
+     *
+     * Tax payer's number. Number assigned to individual persons as well as to
+     * corporates by a public institution; this number is different from the VAT
+     * registration number.
+     */
+    public const FISC_NUMB = 'FC';
+
+    /**
+     * Flat rack container bundle identification number (ATW)
+     *
+     * Reference number assigned to a bundle of flat rack containers.
+     */
+    public const FLAT_RACK_CONT_BUND_IDEN_NUMB = 'ATW';
+
+    /**
+     * Flow reference number (FLW)
+     *
+     * Number given to a usual sender which has regular expeditions of the same
+     * goods, to the same destination, defining all general conditions of the
+     * transport.
+     */
+    public const FLOW_REFE_NUMB = 'FLW';
+
+    /**
+     * Foreign exchange (FO)
+     *
+     * Exchange of two currencies at an agreed rate.
+     */
+    public const FORE_EXCH = 'FO';
+
+    /**
+     * Foreign exchange contract number (FX)
+     *
+     * Reference number identifying a foreign exchange contract.
+     */
+    public const FORE_EXCH_CONT_NUMB = 'FX';
+
+    /**
+     * Foreign military sales number (AJP)
+     *
+     * A number specifying a sale to a foreign military.
+     */
+    public const FORE_MILI_SALE_NUMB = 'AJP';
+
+    /**
+     * Foreign resident identification number (ASX)
+     *
+     * Number assigned by a government agency to identify a foreign resident.
+     */
+    public const FORE_RESI_IDEN_NUMB = 'ASX';
+
+    /**
+     * Formal report number (ASP)
+     *
+     * A number uniquely identifying a formal report.
+     */
+    public const FORM_REPO_NUMB = 'ASP';
+
+    /**
+     * Formal statement reference (ASH)
+     *
+     * A reference to a formal statement.
+     */
+    public const FORM_STAT_REFE = 'ASH';
+
+    /**
+     * Formula reference number (AXM)
+     *
+     * The reference number which identifies a formula.
+     */
+    public const FORM_REFE_NUMB = 'AXM';
+
+    /**
+     * Forwarding order number (AKT)
+     *
+     * Reference number assigned to the forwarding order by the ordering customer.
+     */
+    public const FORW_ORDE_NUMB = 'AKT';
+
+    /**
+     * Framework Agreement Number (AVV)
+     *
+     * A reference to an agreement between one or more contracting authorities and
+     * one or more economic operators, the purpose of which is to establish the
+     * terms governing contracts to be awarded during a given period, in
+     * particular with regard to price and, where appropriate, the quantity
+     * envisaged.
+     */
+    public const FRAM_AGRE_NUMB = 'AVV';
+
+    /**
+     * Free zone identifier (FT)
+     *
+     * Identifier to specify the territory of a State where any goods introduced
+     * are generally regarded, insofar as import duties and taxes are concerned,
+     * as being outside the Customs territory and are not subject to usual Customs
+     * control (CCC).
+     */
+    public const FREE_ZONE_IDEN = 'FT';
+
+    /**
+     * Freight bill number (FN)
+     *
+     * Reference number assigned by issuing party to a freight bill.
+     */
+    public const FREI_BILL_NUMB = 'FN';
+
+    /**
+     * Freight Forwarder number (AHY)
+     *
+     * An identification code of a Freight Forwarder.
+     */
+    public const FREI_FORW_NUMB = 'AHY';
+
+    /**
+     * Functional work group (AOO)
+     *
+     * A reference to identify a functional group performing work.
+     */
+    public const FUNC_WORK_GROU = 'AOO';
+
+    /**
+     * Fund account number (ASQ)
+     *
+     * Account number of fund.
+     */
+    public const FUND_ACCO_NUMB = 'ASQ';
+
+    /**
+     * Fund code number (AHD)
+     *
+     * Reference number to identify appropriation and branch chargeable for item.
+     */
+    public const FUND_CODE_NUMB = 'AHD';
+
+    /**
+     * General cargo consignment reference number (AKR)
+     *
+     * Reference number identifying a particular general cargo (non-containerised
+     * or break bulk) consignment.
+     */
+    public const GENE_CARG_CONS_REFE_NUMB = 'AKR';
+
+    /**
+     * General declaration number (GDN)
+     *
+     * Number of the declaration of incoming goods out of a vessel.
+     */
+    public const GENE_DECL_NUMB = 'GDN';
+
+    /**
+     * General order number (OR)
+     *
+     * Customs number assigned to imported merchandise that has been left
+     * unclaimed and subsequently moved to a Customs bonded warehouse for storage.
+     */
+    public const GENE_ORDE_NUMB = 'OR';
+
+    /**
+     * General purpose message reference number (APG)
+     *
+     * A reference number identifying a general purpose message.
+     */
+    public const GENE_PURP_MESS_REFE_NUMB = 'APG';
+
+    /**
+     * Goods and Services Tax identification number (AMT)
+     *
+     * Identifier assigned to an entity by a tax authority for Goods and Services
+     * Tax (GST) related purposes.
+     */
+    public const GOOD_AND_SERV_TAX_IDEN_NUMB = 'AMT';
+
+    /**
+     * Goods declaration document identifier, Customs (ABT)
+     *
+     * [1426] Reference number, assigned or accepted by Customs, to identify a
+     * goods declaration.
+     */
+    public const GOOD_DECL_DOCU_IDEN_CUST = 'ABT';
+
+    /**
+     * Goods declaration number (AAE)
+     *
+     * Reference number assigned to a goods declaration.
+     */
+    public const GOOD_DECL_NUMB = 'AAE';
+
+    /**
+     * Goods item information (AVM)
+     *
+     * Code identifying that the reference number given applies to the goods item
+     * information segment group in the referred message.
+     */
+    public const GOOD_ITEM_INFO = 'AVM';
+
+    /**
+     * Government agency reference number (AEA)
+     *
+     * Coded reference number that pertains to the business of a government
+     * agency.
+     */
+    public const GOVE_AGEN_REFE_NUMB = 'AEA';
+
+    /**
+     * Government bill of lading (AKH)
+     *
+     * Bill of lading as defined by the government.
+     */
+    public const GOVE_BILL_OF_LADI = 'AKH';
+
+    /**
+     * Government contract number (GC)
+     *
+     * Number assigned to a specific government/public contract.
+     */
+    public const GOVE_CONT_NUMB = 'GC';
+
+    /**
+     * Government quality assurance and control level Number (AMI)
+     *
+     * A number which identifies the level of quality assurance and control
+     * required by the government for an article.
+     */
+    public const GOVE_QUAL_ASSU_AND_CONT_LEVE_NUMB = 'AMI';
+
+    /**
+     * Government reference number (GN)
+     *
+     * A number that identifies a government reference.
+     */
+    public const GOVE_REFE_NUMB = 'GN';
+
+    /**
+     * Grid operator's customer reference number (CAZ)
+     *
+     * A number, assigned by a grid operator, to reference a customer.
+     */
+    public const GRID_OPER_CUST_REFE_NUMB = 'CAZ';
+
+    /**
+     * Group accounting (ADT)
+     *
+     * A number that identifies group accounting.
+     */
+    public const GROU_ACCO = 'ADT';
+
+    /**
+     * Group reference number (AST)
+     *
+     * The reference number identifying a group.
+     */
+    public const GROU_REFE_NUMB = 'AST';
+
+    /**
+     * Guarantee number (ATM)
+     *
+     * Number of a guarantee.
+     */
+    public const GUAR_NUMB = 'ATM';
+
+    /**
+     * Handling and movement reference number (AWZ)
+     *
+     * A reference number identifying a previously transmitted cargo/goods
+     * handling and movement message.
+     */
+    public const HAND_AND_MOVE_REFE_NUMB = 'AWZ';
+
+    /**
+     * Harmonised system number (HS)
+     *
+     * Number specifying the goods classification under the Harmonised Commodity
+     * Description and Coding System of the Customs Co-operation Council (CCC).
+     */
+    public const HARM_SYST_NUMB = 'HS';
+
+    /**
+     * Hash value (AVW)
+     *
+     * Contains the hash value of a related document.
+     */
+    public const HASH_VALU = 'AVW';
+
+    /**
+     * Hastening number (AMD)
+     *
+     * A number which uniquely identifies a request to hasten an action.
+     */
+    public const HAST_NUMB = 'AMD';
+
+    /**
+     * Hot roll number (ACP)
+     *
+     * Number attributed to a hot roll coil.
+     */
+    public const HOT_ROLL_NUMB = 'ACP';
+
+    /**
+     * House bill of lading number (BH)
+     *
+     * [1039] Reference number assigned to a house bill of lading.
+     */
+    public const HOUS_BILL_OF_LADI_NUMB = 'BH';
+
+    /**
+     * House waybill number (HWB)
+     *
+     * Reference number assigned to a house waybill, see: 1001 = 703.
+     */
+    public const HOUS_WAYB_NUMB = 'HWB';
+
+    /**
+     * Hygienic Certificate number, national (AWS)
+     *
+     * Nationally set Hygienic Certificate number, such as sanitary,
+     * epidemiologic.
+     */
+    public const HYGI_CERT_NUMB_NATI = 'AWS';
+
+    /**
+     * IATA Cargo Agent CASS Address number (CAS)
+     *
+     * Code issued by IATA to identify agent locations for CASS billing purposes.
+     */
+    public const IATA_CARG_AGEN_CASS_ADDR_NUMB = 'CAS';
+
+    /**
+     * IATA cargo agent code number (ICA)
+     *
+     * Code issued by IATA identify each IATA Cargo Agent whose name is entered on
+     * the Cargo Agency List.
+     */
+    public const IATA_CARG_AGEN_CODE_NUMB = 'ICA';
+
+    /**
+     * Image reference (AUI)
+     *
+     * A reference number identifying an image.
+     */
+    public const IMAG_REFE = 'AUI';
+
+    /**
+     * Immediate exportation no. for in bond movement (AFK)
+     *
+     * A number that identifies the immediate exportation number for an in bond
+     * movement.
+     */
+    public const IMME_EXPO_NO_FOR_IN_BOND_MOVE = 'AFK';
+
+    /**
+     * Immediate transportation no. for in bond movement (AFI)
+     *
+     * A number that identifies immediate transportation for in bond movement.
+     */
+    public const IMME_TRAN_NO_FOR_IN_BOND_MOVE = 'AFI';
+
+    /**
+     * Implementation version number (AOZ)
+     *
+     * Identifies a version number of an implementation.
+     */
+    public const IMPL_VERS_NUMB = 'AOZ';
+
+    /**
+     * Import clearance instruction reference number (ABS)
+     *
+     * Reference number of the import clearance instructions given by the
+     * consignor/consignee through different means.
+     */
+    public const IMPO_CLEA_INST_REFE_NUMB = 'ABS';
+
+    /**
+     * Import permit identifier (IP)
+     *
+     * [1107] Reference number to identify an import licence or permit.
+     */
+    public const IMPO_PERM_IDEN = 'IP';
+
+    /**
+     * Importer reference number (ABQ)
+     *
+     * Reference number assigned by the importer to identify a particular shipment
+     * for his own purposes.
+     */
+    public const IMPO_REFE_NUMB = 'ABQ';
+
+    /**
+     * Importer's letter of credit reference (AUG)
+     *
+     * Letter of credit reference issued by importer.
+     */
+    public const IMPO_LETT_OF_CRED_REFE = 'AUG';
+
+    /**
+     * Imputation account (ARV)
+     *
+     * An account to which an amount is to be posted.
+     */
+    public const IMPU_ACCO = 'ARV';
+
+    /**
+     * In bond number (IB)
+     *
+     * Customs assigned number that is used to control the movement of imported
+     * cargo prior to its formal Customs clearing.
+     */
+    public const IN_BOND_NUMB = 'IB';
+
+    /**
+     * Incorporated legal reference (APA)
+     *
+     * Identifies a legal reference which is deemed incorporated by reference.
+     */
+    public const INCO_LEGA_REFE = 'APA';
+
+    /**
+     * Individual transaction reference number (AIM)
+     *
+     * Reference number applying to one specific transaction.
+     */
+    public const INDI_TRAN_REFE_NUMB = 'AIM';
+
+    /**
+     * Initial sample inspection report number (II)
+     *
+     * Inspection report number given to the initial sample inspection.
+     */
+    public const INIT_SAMP_INSP_REPO_NUMB = 'II';
+
+    /**
+     * Inland transport order number (ADN)
+     *
+     * Reference number assigned by the principal to the transport order for
+     * inland carriage.
+     */
+    public const INLA_TRAN_ORDE_NUMB = 'ADN';
+
+    /**
+     * Institut Belgo-Luxembourgeois de Codification (IBLC) number (ATR)
+     *
+     * An identification number assigned by the Luxembourg National Bank to a
+     * business in Luxembourg.
+     */
+    public const INST_BELG_DE_CODI_IBLC_NUMB = 'ATR';
+
+    /**
+     * Institute of Security and Future Market Development (ISFMD) serial number (AQX)
+     *
+     * A number used to identify a public but not publicly traded company.
+     */
+    public const INST_OF_SECU_AND_FUTU_MARK_DEVE_ISFM_SERI_NUMB = 'AQX';
+
+    /**
+     * Instruction for returns number (AXB)
+     *
+     * A reference number identifying a previously communicated instruction for
+     * return message.
+     */
+    public const INST_FOR_RETU_NUMB = 'AXB';
+
+    /**
+     * Instruction to despatch reference number (AXA)
+     *
+     * A reference number identifying a previously transmitted instruction to
+     * despatch message.
+     */
+    public const INST_TO_DESP_REFE_NUMB = 'AXA';
+
+    /**
+     * Insurance certificate reference number (ICE)
+     *
+     * A number that identifies an insurance certificate reference.
+     */
+    public const INSU_CERT_REFE_NUMB = 'ICE';
+
+    /**
+     * Insurance contract reference number (ICO)
+     *
+     * A number that identifies an insurance contract reference.
+     */
+    public const INSU_CONT_REFE_NUMB = 'ICO';
+
+    /**
+     * Insurer assigned reference number (AMM)
+     *
+     * A unique reference number assigned by the insurer.
+     */
+    public const INSU_ASSI_REFE_NUMB = 'AMM';
+
+    /**
+     * Integrated logistic support cross reference number (AMU)
+     *
+     * Provides the identification of the reference which allows cross referencing
+     * of items between different areas of integrated logistics support.
+     */
+    public const INTE_LOGI_SUPP_CROS_REFE_NUMB = 'AMU';
+
+    /**
+     * Interchange number new (INN)
+     *
+     * Number assigned by the interchange sender to identify one specific
+     * interchange. This number points to the actual interchange.
+     */
+    public const INTE_NUMB_NEW = 'INN';
+
+    /**
+     * Interchange number old (INO)
+     *
+     * Number assigned by the interchange sender to identify one specific
+     * interchange. This number points to the previous interchange.
+     */
+    public const INTE_NUMB_OLD = 'INO';
+
+    /**
+     * Intermediary broker (INB)
+     *
+     * A number that identifies an intermediary broker.
+     */
+    public const INTE_BROK = 'INB';
+
+    /**
+     * Internal customer number (IT)
+     *
+     * Number assigned by a seller, supplier etc. to identify a customer within
+     * his enterprise.
+     */
+    public const INTE_CUST_NUMB = 'IT';
+
+    /**
+     * Internal data process number (AWG)
+     *
+     * A number identifying an internal data process.
+     */
+    public const INTE_DATA_PROC_NUMB = 'AWG';
+
+    /**
+     * Internal order number (IL)
+     *
+     * Number assigned to an order for internal handling/follow up.
+     */
+    public const INTE_ORDE_NUMB = 'IL';
+
+    /**
+     * Internal vendor number (IA)
+     *
+     * Number identifying the company-internal vending department/unit.
+     */
+    public const INTE_VEND_NUMB = 'IA';
+
+    /**
+     * International assessment log number (AQH)
+     *
+     * The reference log number assigned to a Data Maintenance Request (DMR)
+     * changed in international assessment.
+     */
+    public const INTE_ASSE_LOG_NUMB = 'AQH';
+
+    /**
+     * International assessment log number, child Data Maintenance Request (DMR) (AQJ)
+     *
+     * The reference log number assigned to a Data Maintenance Request (DMR)
+     * changed in international assessment that is a child to the current DMR.
+     */
+    public const INTE_ASSE_LOG_NUMB_CHIL_DATA_MAIN_REQU_DMR = 'AQJ';
+
+    /**
+     * International assessment log number, parent Data Maintenance Request (DMR) (AQI)
+     *
+     * The reference log number assigned to a Data Maintenance Request (DMR)
+     * changed in international assessment that is a parent to the current DMR.
+     */
+    public const INTE_ASSE_LOG_NUMB_PARE_DATA_MAIN_REQU_DMR = 'AQI';
+
+    /**
+     * International flight number (AGR)
+     *
+     * Airline flight number assigned to a flight originating and terminating
+     * across national borders.
+     */
+    public const INTE_FLIG_NUMB = 'AGR';
+
+    /**
+     * International Standard Industrial Classification (ISIC) code (AUY)
+     *
+     * A code specifying an international standard industrial classification.
+     */
+    public const INTE_STAN_INDU_CLAS_ISIC_CODE = 'AUY';
+
+    /**
+     * Intra-plant routing (ABV)
+     *
+     * To define routing within a plant.
+     */
+    public const INTR_ROUT = 'ABV';
+
+    /**
+     * Inventory report reference number (API)
+     *
+     * A reference number identifying an inventory report.
+     */
+    public const INVE_REPO_REFE_NUMB = 'API';
+
+    /**
+     * Inventory report request number (AVD)
+     *
+     * Reference number assigned to a request for an inventory report.
+     */
+    public const INVE_REPO_REQU_NUMB = 'AVD';
+
+    /**
+     * Investment reference number (ASB)
+     *
+     * A reference to a specific investment.
+     */
+    public const INVE_REFE_NUMB = 'ASB';
+
+    /**
+     * Invoice document identifier (IV)
+     *
+     * [1334] Reference number to identify an invoice.
+     */
+    public const INVO_DOCU_IDEN = 'IV';
+
+    /**
+     * Invoice number suffix (IS)
+     *
+     * A number added at the end of an invoice number.
+     */
+    public const INVO_NUMB_SUFF = 'IS';
+
+    /**
+     * Invoicing data sheet reference number (APH)
+     *
+     * A reference number identifying an invoicing data sheet.
+     */
+    public const INVO_DATA_SHEE_REFE_NUMB = 'APH';
+
+    /**
+     * Iron charge number (ACO)
+     *
+     * Number attributed to the iron charge for the production of steel products.
+     */
+    public const IRON_CHAR_NUMB = 'ACO';
+
+    /**
+     * Issued prescription identification (AUC)
+     *
+     * The identification of the issued prescription.
+     */
+    public const ISSU_PRES_IDEN = 'AUC';
+
+    /**
+     * Issuing bank's reference (AFR)
+     *
+     * Reference number of the issuing bank.
+     */
+    public const ISSU_BANK_REFE = 'AFR';
+
+    /**
+     * Job number (JB)
+     *
+     * [1043] Identifies a piece of work.
+     */
+    public const JOB_NUMB = 'JB';
+
+    /**
+     * Joint venture reference number (AHN)
+     *
+     * Reference number assigned to a joint venture agreement.
+     */
+    public const JOIN_VENT_REFE_NUMB = 'AHN';
+
+    /**
+     * Judgment number (ATC)
+     *
+     * A reference number identifying the legal decision.
+     */
+    public const JUDG_NUMB = 'ATC';
+
+    /**
+     * Kamer Van Koophandel (KVK) number (ATQ)
+     *
+     * An identification number assigned by the Dutch Chamber of Commerce to a
+     * business in the Netherlands.
+     */
+    public const KAME_VAN_KOOP_KVK_NUMB = 'ATQ';
+
+    /**
+     * Laboratory registration number (AHH)
+     *
+     * Reference number is the official registration number of the laboratory.
+     */
+    public const LABO_REGI_NUMB = 'AHH';
+
+    /**
+     * Last received banking status message reference (ATF)
+     *
+     * Reference number of the latest received banking status message.
+     */
+    public const LAST_RECE_BANK_STAT_MESS_REFE = 'ATF';
+
+    /**
+     * Latest accounting entry record reference (AWP)
+     *
+     * Code identifying the reference of the latest accounting entry record.
+     */
+    public const LATE_ACCO_ENTR_RECO_REFE = 'AWP';
+
+    /**
+     * Lease contract reference (AKV)
+     *
+     * Reference number of the lease contract.
+     */
+    public const LEAS_CONT_REFE = 'AKV';
+
+    /**
+     * Letter of credit number (LC)
+     *
+     * Reference number identifying the letter of credit document.
+     */
+    public const LETT_OF_CRED_NUMB = 'LC';
+
+    /**
+     * Lloyd's claims office reference (ADW)
+     *
+     * A number that identifies a Lloyd's claims office.
+     */
+    public const LLOY_CLAI_OFFI_REFE = 'ADW';
+
+    /**
+     * Load planning number (LO)
+     *
+     * The reference that identifies the load planning number.
+     */
+    public const LOAD_PLAN_NUMB = 'LO';
+
+    /**
+     * Loading authorisation identifier (LAN)
+     *
+     * [4092] Identifier assigned to the loading authorisation granted by the
+     * forwarding location e.g. railway or airport, when the consignment is
+     * subject to traffic limitations.
+     */
+    public const LOAD_AUTH_IDEN = 'LAN';
+
+    /**
+     * Loan (ADC)
+     *
+     * Reference number for loan allocated by lending financial institution.
+     */
+    public const LOAN = 'ADC';
+
+    /**
+     * Local Reference Number (AVZ)
+     *
+     * Number assigned by a national customs authority to an Entry Summary
+     * Declaration.
+     */
+    public const LOCA_REFE_NUMB = 'AVZ';
+
+    /**
+     * Lockbox (LB)
+     *
+     * Type of cash management system offered by financial institutions to provide
+     * for collection of customers 'receivables'.
+     */
+    public const LOCKBOX = 'LB';
+
+    /**
+     * Loss/event number (ACU)
+     *
+     * To reference to the unique number that is assigned to each major loss
+     * hitting the reinsurance industry.
+     */
+    public const LOSS_NUMB = 'ACU';
+
+    /**
+     * Lower number in range (LAR)
+     *
+     * Lower number in a range of numbers.
+     */
+    public const LOWE_NUMB_IN_RANG = 'LAR';
+
+    /**
+     * Mailing reference number (MRN)
+     *
+     * Identifies the party designated by the importer to receive certain customs
+     * correspondence in lieu of its being mailed directly to the importer.
+     */
+    public const MAIL_REFE_NUMB = 'MRN';
+
+    /**
+     * Major force program number (AHF)
+     *
+     * Reference number according to Major Force Program (US).
+     */
+    public const MAJO_FORC_PROG_NUMB = 'AHF';
+
+    /**
+     * Mandate Reference (AVS)
+     *
+     * Reference to a specific mandate given by the relevant party for underlying
+     * business or action.
+     */
+    public const MAND_REFE = 'AVS';
+
+    /**
+     * Manual processing authority number (AHV)
+     *
+     * Number allocated to allow the manual processing of an entity.
+     */
+    public const MANU_PROC_AUTH_NUMB = 'AHV';
+
+    /**
+     * Manufacturer defined repair rates reference (APW)
+     *
+     * Reference assigned by a manufacturer to their repair rates.
+     */
+    public const MANU_DEFI_REPA_RATE_REFE = 'APW';
+
+    /**
+     * Manufacturer's material safety data sheet number (MSS)
+     *
+     * A number that identifies a manufacturer's material safety data sheet.
+     */
+    public const MANU_MATE_SAFE_DATA_SHEE_NUMB = 'MSS';
+
+    /**
+     * Manufacturer's part number (MF)
+     *
+     * Reference number assigned by the manufacturer to his product or part.
+     */
+    public const MANU_PART_NUMB = 'MF';
+
+    /**
+     * Manufacturing order number (MH)
+     *
+     * Reference number assigned by manufacturer for a given production quantity
+     * of products.
+     */
+    public const MANU_ORDE_NUMB = 'MH';
+
+    /**
+     * Manufacturing quality agreement number (AUL)
+     *
+     * Reference number of a manufacturing quality agreement.
+     */
+    public const MANU_QUAL_AGRE_NUMB = 'AUL';
+
+    /**
+     * Marketing plan identification number (MPIN) (AUW)
+     *
+     * Number identifying a marketing plan.
+     */
+    public const MARK_PLAN_IDEN_NUMB_MPIN = 'AUW';
+
+    /**
+     * Marking/label reference (AFF)
+     *
+     * Reference where marking/label information derives from.
+     */
+    public const MARK_REFE = 'AFF';
+
+    /**
+     * Master account number (ASS)
+     *
+     * A reference number identifying a master account.
+     */
+    public const MAST_ACCO_NUMB = 'ASS';
+
+    /**
+     * Master air waybill number (MWB)
+     *
+     * Reference number assigned to a master air waybill, see: 1001 = 741.
+     */
+    public const MAST_AIR_WAYB_NUMB = 'MWB';
+
+    /**
+     * Master bill of lading number (MB)
+     *
+     * Reference number assigned to a master bill of lading, see: 1001 = 704.
+     */
+    public const MAST_BILL_OF_LADI_NUMB = 'MB';
+
+    /**
+     * Master label number (AAT)
+     *
+     * Identifies the master label number of any package type.
+     */
+    public const MAST_LABE_NUMB = 'AAT';
+
+    /**
+     * Master solicitation procedures, terms, and conditions number (AJM)
+     *
+     * A number indicating a master solicitation containing procedures, terms and
+     * conditions.
+     */
+    public const MAST_SOLI_PROC_TERM_AND_COND_NUMB = 'AJM';
+
+    /**
+     * Matching of entries, balanced (CAT)
+     *
+     * Reference to a balanced matching of entries.
+     */
+    public const MATC_OF_ENTR_BALA = 'CAT';
+
+    /**
+     * Matching of entries, unbalanced (CAV)
+     *
+     * Reference to an unbalanced matching of entries.
+     */
+    public const MATC_OF_ENTR_UNBA = 'CAV';
+
+    /**
+     * Matured certificate of deposit (ADB)
+     *
+     * Reference number for certificate of deposit allocated by issuing financial
+     * institution.
+     */
+    public const MATU_CERT_OF_DEPO = 'ADB';
+
+    /**
+     * Meat cutting plant approval number (AVH)
+     *
+     * Veterinary licence number allocated by a national authority to a meat
+     * cutting plant.
+     */
+    public const MEAT_CUTT_PLAN_APPR_NUMB = 'AVH';
+
+    /**
+     * Meat processing establishment registration number (AHS)
+     *
+     * Registration number allocated to a registered meat packing establishment by
+     * the local quarantine and inspection authority.
+     */
+    public const MEAT_PROC_ESTA_REGI_NUMB = 'AHS';
+
+    /**
+     * Member number (AGU)
+     *
+     * Reference number assigned to a person as a member of a group of persons or
+     * a service scheme.
+     */
+    public const MEMB_NUMB = 'AGU';
+
+    /**
+     * Message batch number (ALL)
+     *
+     * A number identifying a batch of messages.
+     */
+    public const MESS_BATC_NUMB = 'ALL';
+
+    /**
+     * Message design group number (AQL)
+     *
+     * Reference number for a message design group.
+     */
+    public const MESS_DESI_GROU_NUMB = 'AQL';
+
+    /**
+     * Message recipient (MR)
+     *
+     * A number that identifies the message recipient.
+     */
+    public const MESS_RECI = 'MR';
+
+    /**
+     * Message sender (MS)
+     *
+     * A number that identifies the message sender.
+     */
+    public const MESS_SEND = 'MS';
+
+    /**
+     * Meter reading at the beginning of the delivery (AKK)
+     *
+     * Meter reading at the beginning of the delivery.
+     */
+    public const METE_READ_AT_THE_BEGI_OF_THE_DELI = 'AKK';
+
+    /**
+     * Meter reading at the end of delivery (AKL)
+     *
+     * Meter reading at the end of the delivery.
+     */
+    public const METE_READ_AT_THE_END_OF_DELI = 'AKL';
+
+    /**
+     * Meter unit number (MG)
+     *
+     * Number identifying a unique meter unit.
+     */
+    public const METE_UNIT_NUMB = 'MG';
+
+    /**
+     * Metered services consumption report number (AXC)
+     *
+     * A reference number identifying a previously communicated metered services
+     * consumption report.
+     */
+    public const METE_SERV_CONS_REPO_NUMB = 'AXC';
+
+    /**
+     * Metering point (AVE)
+     *
+     * Reference to a metering point.
+     */
+    public const METE_POIN = 'AVE';
+
+    /**
+     * Military Interdepartmental Purchase Request (MIPR) number (AJO)
+     *
+     * A number indicating an interdepartmental purchase request used by the
+     * military.
+     */
+    public const MILI_INTE_PURC_REQU_MIPR_NUMB = 'AJO';
+
+    /**
+     * Ministerial certificate of homologation (AIE)
+     *
+     * Certificate of approval for components which are subject to legal
+     * restrictions and must be approved by the government.
+     */
+    public const MINI_CERT_OF_HOMO = 'AIE';
+
+    /**
+     * Model (ALX)
+     *
+     * (7242) A reference used to identify a model.
+     */
+    public const MODEL = 'ALX';
+
+    /**
+     * Motor vehicle identification number (VT)
+     *
+     * (8213) Reference identifying a motor vehicle used for transport. Normally
+     * is the vehicle registration number.
+     */
+    public const MOTO_VEHI_IDEN_NUMB = 'VT';
+
+    /**
+     * Movement reference number (AVX)
+     *
+     * Number assigned by customs referencing receipt of an Entry Summary
+     * Declaration.
+     */
+    public const MOVE_REFE_NUMB = 'AVX';
+
+    /**
+     * Municipality assigned business registry number (AAR)
+     *
+     * A reference number assigned by a municipality to identify a business.
+     */
+    public const MUNI_ASSI_BUSI_REGI_NUMB = 'AAR';
+
+    /**
+     * Mutually defined reference number (ZZZ)
+     *
+     * Number based on party agreement.
+     */
+    public const MUTU_DEFI_REFE_NUMB = 'ZZZ';
+
+    /**
+     * Named bank's reference (ANM)
+     *
+     * Reference number of the named bank.
+     */
+    public const NAME_BANK_REFE = 'ANM';
+
+    /**
+     * National government business identification number (ARA)
+     *
+     * A business identification number which is assigned by a national
+     * government.
+     */
+    public const NATI_GOVE_BUSI_IDEN_NUMB = 'ARA';
+
+    /**
+     * Net area (AWJ)
+     *
+     * Reference to an area of a net.
+     */
+    public const NET_AREA = 'AWJ';
+
+    /**
+     * Net area supplier reference (AUT)
+     *
+     * A reference identifying a supplier within a net area.
+     */
+    public const NET_AREA_SUPP_REFE = 'AUT';
+
+    /**
+     * Next rental agreement number (AMB)
+     *
+     * Number to identify the next rental agreement.
+     */
+    public const NEXT_RENT_AGRE_NUMB = 'AMB';
+
+    /**
+     * Next rental agreement reason number (ALJ)
+     *
+     * Number to identify the reason for the next rental agreement.
+     */
+    public const NEXT_RENT_AGRE_REAS_NUMB = 'ALJ';
+
+    /**
+     * Nomenclature Activity Classification Economy (NACE) identifier (AQS)
+     *
+     * A European industry classification code used to identify the activity of a
+     * company.
+     */
+    public const NOME_ACTI_CLAS_ECON_NACE_IDEN = 'AQS';
+
+    /**
+     * Nomination number (AHG)
+     *
+     * Reference number assigned by a shipper to a request/ commitment-to-ship on
+     * a pipeline system.
+     */
+    public const NOMI_NUMB = 'AHG';
+
+    /**
+     * Non-negotiable maritime transport document number (AEX)
+     *
+     * Reference number assigned to a sea waybill, see: 1001 = 712.
+     */
+    public const NONN_MARI_TRAN_DOCU_NUMB = 'AEX';
+
+    /**
+     * Norme Activite Francaise (NAF) identifier (AQT)
+     *
+     * A French industry classification code assigned by the French government to
+     * identify the activity of a company.
+     */
+    public const NORM_ACTI_FRAN_NAF_IDEN = 'AQT';
+
+    /**
+     * North American hazardous goods classification number (NA)
+     *
+     * Reference to materials designated as hazardous for purposes of
+     * transportation in North American commerce.
+     */
+    public const NORT_AMER_HAZA_GOOD_CLAS_NUMB = 'NA';
+
+    /**
+     * Nota Fiscal (NF)
+     *
+     * Nota Fiscal is a registration number for shipments / deliveries within
+     * Brazil, issued by the local tax authorities and mandated for each shipment.
+     */
+    public const NOTA_FISC = 'NF';
+
+    /**
+     * NOTIfication for COLlection number (NOTICOL) (ALZ)
+     *
+     * A reference assigned by a consignor to a notification document which
+     * indicates the availability of goods for collection.
+     */
+    public const NOTI_FOR_COLL_NUMB_NOTI = 'ALZ';
+
+    /**
+     * Number of temporary importation document (AGM)
+     *
+     * Number assigned by customs to identify consignment in transit.
+     */
+    public const NUMB_OF_TEMP_IMPO_DOCU = 'AGM';
+
+    /**
+     * Numero de Identificacion Tributaria (NIT) (ARE)
+     *
+     * A number assigned by the government to a business in some Latin American
+     * countries.
+     */
+    public const NUME_DE_IDEN_TRIB_NIT = 'ARE';
+
+    /**
+     * Offer number (AAG)
+     *
+     * (1332) Reference number assigned by issuing party to an offer.
+     */
+    public const OFFE_NUMB = 'AAG';
+
+    /**
+     * Order acknowledgement document identifier (AAA)
+     *
+     * [1018] Reference number identifying the acknowledgement of an order.
+     */
+    public const ORDE_ACKN_DOCU_IDEN = 'AAA';
+
+    /**
+     * Order document identifier, buyer assigned (ON)
+     *
+     * [1022] Identifier assigned by the buyer to an order.
+     */
+    public const ORDE_DOCU_IDEN_BUYE_ASSI = 'ON';
+
+    /**
+     * Order number (vendor) (VN)
+     *
+     * Reference number assigned by supplier to a buyer's purchase order.
+     */
+    public const ORDE_NUMB_VEND = 'VN';
+
+    /**
+     * Order shipment grouping reference (CBB)
+     *
+     * A reference number identifying the grouping of purchase orders into one
+     * shipment.
+     */
+    public const ORDE_SHIP_GROU_REFE = 'CBB';
+
+    /**
+     * Order status enquiry number (AXD)
+     *
+     * A reference number to a previously sent order status enquiry.
+     */
+    public const ORDE_STAT_ENQU_NUMB = 'AXD';
+
+    /**
+     * Ordering customer consignment reference number (ADL)
+     *
+     * Reference number assigned to the consignment by the ordering customer.
+     */
+    public const ORDE_CUST_CONS_REFE_NUMB = 'ADL';
+
+    /**
+     * Ordering customer's second reference number (AKI)
+     *
+     * Ordering customer's second reference number.
+     */
+    public const ORDE_CUST_SECO_REFE_NUMB = 'AKI';
+
+    /**
+     * Organisation breakdown structure (AOM)
+     *
+     * A structure reference that identifies the breakdown of an organisation.
+     */
+    public const ORGA_BREA_STRU = 'AOM';
+
+    /**
+     * Original certificate number (AIR)
+     *
+     * Number giving reference to an original certificate number.
+     */
+    public const ORIG_CERT_NUMB = 'AIR';
+
+    /**
+     * Original filing number (ARN)
+     *
+     * A number assigned to the original filing.
+     */
+    public const ORIG_FILI_NUMB = 'ARN';
+
+    /**
+     * Original Mandate Reference (AVR)
+     *
+     * Reference to a specific related original mandate given by the relevant
+     * party for underlying business or action in case of reference or mandate
+     * change.
+     */
+    public const ORIG_MAND_REFE = 'AVR';
+
+    /**
+     * Original purchase order (OP)
+     *
+     * Reference to the order previously sent.
+     */
+    public const ORIG_PURC_ORDE = 'OP';
+
+    /**
+     * Original submitter log number (APX)
+     *
+     * A control number assigned by the original submitter.
+     */
+    public const ORIG_SUBM_LOG_NUMB = 'APX';
+
+    /**
+     * Original submitter, child Data Maintenance Request (DMR) log number (APZ)
+     *
+     * A Data Maintenance Request (DMR) original submitter's reference log number
+     * for a child DMR.
+     */
+    public const ORIG_SUBM_CHIL_DATA_MAIN_REQU_DMR_LOG_NUMB = 'APZ';
+
+    /**
+     * Original submitter, parent Data Maintenance Request (DMR) log number (APY)
+     *
+     * A Data Maintenance Request (DMR) original submitter's reference log number
+     * for the parent DMR.
+     */
+    public const ORIG_SUBM_PARE_DATA_MAIN_REQU_DMR_LOG_NUMB = 'APY';
+
+    /**
+     * Originator's reference (ABO)
+     *
+     * A unique reference assigned by the originator.
+     */
+    public const ORIG_REFE = 'ABO';
+
+    /**
+     * Outerpackaging unit identification (ACI)
+     *
+     * Identifying marks on packing units contained within an outermost shipping
+     * unit.
+     */
+    public const OUTE_UNIT_IDEN = 'ACI';
+
+    /**
+     * Package number (CW)
+     *
+     * (7070) Reference number identifying a package or carton within a
+     * consignment.
+     */
+    public const PACK_NUMB = 'CW';
+
+    /**
+     * Packaging specification number (AHA)
+     *
+     * Reference number of documentation specifying the technical detail of
+     * packaging requirements.
+     */
+    public const PACK_SPEC_NUMB = 'AHA';
+
+    /**
+     * Packaging unit identification (ACH)
+     *
+     * Identifying marks on packing units.
+     */
+    public const PACK_UNIT_IDEN = 'ACH';
+
+    /**
+     * Packing list number (PK)
+     *
+     * [1014] Reference number assigned to a packing list.
+     */
+    public const PACK_LIST_NUMB = 'PK';
+
+    /**
+     * Packing plant number (AIQ)
+     *
+     * Number to identify packing establishment.
+     */
+    public const PACK_PLAN_NUMB = 'AIQ';
+
+    /**
+     * Paragraph (AJJ)
+     *
+     * A reference indicating a paragraph cited as the source of information.
+     */
+    public const PARAGRAPH = 'AJJ';
+
+    /**
+     * Parent file (AND)
+     *
+     * Identifies the parent file in a structure of related files.
+     */
+    public const PARE_FILE = 'AND';
+
+    /**
+     * Part reference indicator in a drawing (AJA)
+     *
+     * To designate the number which provides a cross reference between parts
+     * contained in a drawing and a parts catalogue.
+     */
+    public const PART_REFE_INDI_IN_A_DRAW = 'AJA';
+
+    /**
+     * Partial shipment identifier (AAP)
+     *
+     * [1310] Identifier of a shipment which is part of an order.
+     */
+    public const PART_SHIP_IDEN = 'AAP';
+
+    /**
+     * Party information message reference (ASG)
+     *
+     * Reference identifying a party information message.
+     */
+    public const PART_INFO_MESS_REFE = 'ASG';
+
+    /**
+     * Party reference (AUB)
+     *
+     * The reference to a party.
+     */
+    public const PART_REFE = 'AUB';
+
+    /**
+     * Party sequence number (APM)
+     *
+     * Reference identifying a party sequence number.
+     */
+    public const PART_SEQU_NUMB = 'APM';
+
+    /**
+     * Passenger reservation number (AVF)
+     *
+     * Number assigned by the travel supplier to identify the passenger
+     * reservation.
+     */
+    public const PASS_RESE_NUMB = 'AVF';
+
+    /**
+     * Passport number (AIG)
+     *
+     * Number assigned to a passport.
+     */
+    public const PASS_NUMB = 'AIG';
+
+    /**
+     * Password (ASO)
+     *
+     * Code used for authentication purposes.
+     */
+    public const PASSWORD = 'ASO';
+
+    /**
+     * Patron number (ARF)
+     *
+     * A number assigned by the government to a business in some Latin American
+     * countries. Note that "Patron" is a Spanish word, it is not a person who
+     * gives financial or other support.
+     */
+    public const PATR_NUMB = 'ARF';
+
+    /**
+     * Payer's financial institution account number (PB)
+     *
+     * Originated company account number (ACH transfer), check, draft or wire.
+     */
+    public const PAYE_FINA_INST_ACCO_NUMB = 'PB';
+
+    /**
+     * Payee's financial institution transit routing No. (RT)
+     *
+     * RDFI Transit routing number (ACH transfer).
+     */
+    public const PAYE_FINA_INST_TRAN_ROUT_NO = 'RT';
+
+    /**
+     * Payer's reference number (AHK)
+     *
+     * Reference number of the party who pays.
+     */
+    public const PAYE_REFE_NUMB = 'AHK';
+
+    /**
+     * Payer's financial institution transit routing No.(ACH transfers) (RR)
+     *
+     * ODFI (ACH transfer).
+     */
+    public const PAYE_FINA_INST_TRAN_ROUT_NOAC_TRAN = 'RR';
+
+    /**
+     * Payment in advance request reference (ANC)
+     *
+     * A reference to a request for payment in advance.
+     */
+    public const PAYM_IN_ADVA_REQU_REFE = 'ANC';
+
+    /**
+     * Payment instalment reference number (APB)
+     *
+     * A reference number given to a payment instalment to identify a specific
+     * instance of payment of a debt which can be paid at specified intervals.
+     */
+    public const PAYM_INST_REFE_NUMB = 'APB';
+
+    /**
+     * Payment order number (AEK)
+     *
+     * A number that identifies a payment order.
+     */
+    public const PAYM_ORDE_NUMB = 'AEK';
+
+    /**
+     * Payment plan reference (AMJ)
+     *
+     * A number which uniquely identifies a payment plan.
+     */
+    public const PAYM_PLAN_REFE = 'AMJ';
+
+    /**
+     * Payment reference (PQ)
+     *
+     * Reference number assigned to a payment.
+     */
+    public const PAYM_REFE = 'PQ';
+
+    /**
+     * Payment valuation number (AFY)
+     *
+     * Reference number assigned to a payment valuation.
+     */
+    public const PAYM_VALU_NUMB = 'AFY';
+
+    /**
+     * Payroll deduction advice reference (AXR)
+     *
+     * A reference number identifying a payroll deduction advice.
+     */
+    public const PAYR_DEDU_ADVI_REFE = 'AXR';
+
+    /**
+     * Payroll number (AGZ)
+     *
+     * Reference number assigned to the payroll of an organisation.
+     */
+    public const PAYR_NUMB = 'AGZ';
+
+    /**
+     * Performed prescription identification (AUH)
+     *
+     * The identification of the prescription that has been carried into effect.
+     */
+    public const PERF_PRES_IDEN = 'AUH';
+
+    /**
+     * Person registration number (AVP)
+     *
+     * A number assigned to an individual.
+     */
+    public const PERS_REGI_NUMB = 'AVP';
+
+    /**
+     * Personal identity card number (ARJ)
+     *
+     * An identity card number assigned to a person.
+     */
+    public const PERS_IDEN_CARD_NUMB = 'ARJ';
+
+    /**
+     * Phone number (AWV)
+     *
+     * A sequence of digits used to call from one telephone line to another in a
+     * public telephone network.
+     */
+    public const PHON_NUMB = 'AWV';
+
+    /**
+     * Physical inventory recount reference number (ALN)
+     *
+     * A reference to a re-count of physically held inventory.
+     */
+    public const PHYS_INVE_RECO_REFE_NUMB = 'ALN';
+
+    /**
+     * Physical medium (ASZ)
+     *
+     * Identifies the physical medium.
+     */
+    public const PHYS_MEDI = 'ASZ';
+
+    /**
+     * Pick-up sheet number (AWU)
+     *
+     * Reference number assigned to a pick-up sheet.
+     */
+    public const PICK_SHEE_NUMB = 'AWU';
+
+    /**
+     * Picture of a generic product (ASL)
+     *
+     * Reference identifying a picture of a generic product.
+     */
+    public const PICT_OF_A_GENE_PROD = 'ASL';
+
+    /**
+     * Picture of actual product (ASK)
+     *
+     * Reference identifying the picture of an actual product.
+     */
+    public const PICT_OF_ACTU_PROD = 'ASK';
+
+    /**
+     * Pilotage services exemption number (AVO)
+     *
+     * Number identifying the permit to not use pilotage services.
+     */
+    public const PILO_SERV_EXEM_NUMB = 'AVO';
+
+    /**
+     * Pipeline number (AMZ)
+     *
+     * Number to identify a pipeline.
+     */
+    public const PIPE_NUMB = 'AMZ';
+
+    /**
+     * Place of packing approval number (AVQ)
+     *
+     * Approval Number of the place where goods are packaged.
+     */
+    public const PLAC_OF_PACK_APPR_NUMB = 'AVQ';
+
+    /**
+     * Place of positioning reference (AUA)
+     *
+     * Identifies the reference pertaining to the place of positioning.
+     */
+    public const PLAC_OF_POSI_REFE = 'AUA';
+
+    /**
+     * Planning package (AOT)
+     *
+     * A reference for a planning package of work.
+     */
+    public const PLAN_PACK = 'AOT';
+
+    /**
+     * Plant number (PE)
+     *
+     * A number that identifies a plant.
+     */
+    public const PLAN_NUMB = 'PE';
+
+    /**
+     * Plot file (ANH)
+     *
+     * Reference number indicating that the file is a plot file.
+     */
+    public const PLOT_FILE = 'ANH';
+
+    /**
+     * Policy form number (AWI)
+     *
+     * Number assigned to a policy form.
+     */
+    public const POLI_FORM_NUMB = 'AWI';
+
+    /**
+     * Policy number (AKZ)
+     *
+     * Number assigned to a policy.
+     */
+    public const POLI_NUMB = 'AKZ';
+
+    /**
+     * Post-entry reference (AEJ)
+     *
+     * Reference to a message related to a post-entry.
+     */
+    public const POST_REFE = 'AEJ';
+
+    /**
+     * Pre-agreement number (AXN)
+     *
+     * A reference number identifying a pre-agreement.
+     */
+    public const PREA_NUMB = 'AXN';
+
+    /**
+     * Premium rate table (AMO)
+     *
+     * Identifies the premium rate table.
+     */
+    public const PREM_RATE_TABL = 'AMO';
+
+    /**
+     * Presenting bank's reference (ANS)
+     *
+     * Reference number of the presenting bank.
+     */
+    public const PRES_BANK_REFE = 'ANS';
+
+    /**
+     * Previous banking status message reference (ATE)
+     *
+     * Message reference number of the previous banking status message being
+     * responded to.
+     */
+    public const PREV_BANK_STAT_MESS_REFE = 'ATE';
+
+    /**
+     * Previous cargo control number (XP)
+     *
+     * Where a consignment is deconsolidated and/or transferred to the control of
+     * another carrier or freight forwarder (e.g. housebill, abstract) this
+     * references the previous (e.g. master) cargo control number.
+     */
+    public const PREV_CARG_CONT_NUMB = 'XP';
+
+    /**
+     * Previous credit advice reference number (ALD)
+     *
+     * Reference number of the previous "Credit advice" message.
+     */
+    public const PREV_CRED_ADVI_REFE_NUMB = 'ALD';
+
+    /**
+     * Previous delivery instruction number (AIF)
+     *
+     * The identification of a previous delivery instruction.
+     */
+    public const PREV_DELI_INST_NUMB = 'AIF';
+
+    /**
+     * Previous delivery schedule number (ALM)
+     *
+     * A reference number identifying a previous delivery schedule.
+     */
+    public const PREV_DELI_SCHE_NUMB = 'ALM';
+
+    /**
+     * Previous highest schedule number (SH)
+     *
+     * Number of the latest schedule of a previous period (ODETTE DELINS).
+     */
+    public const PREV_HIGH_SCHE_NUMB = 'SH';
+
+    /**
+     * Previous invoice number (OI)
+     *
+     * Reference number identifying a previously issued invoice.
+     */
+    public const PREV_INVO_NUMB = 'OI';
+
+    /**
+     * Previous member number (AGV)
+     *
+     * Reference number previously assigned to a member.
+     */
+    public const PREV_MEMB_NUMB = 'AGV';
+
+    /**
+     * Previous rental agreement number (ALI)
+     *
+     * Number to identify the previous rental agreement number.
+     */
+    public const PREV_RENT_AGRE_NUMB = 'ALI';
+
+    /**
+     * Previous request for metered reading reference number (AMA)
+     *
+     * Number to identify a previous request for a recording or reading of a
+     * measuring device.
+     */
+    public const PREV_REQU_FOR_METE_READ_REFE_NUMB = 'AMA';
+
+    /**
+     * Previous scheme/plan number (AGX)
+     *
+     * Reference number previously assigned to a service scheme or plan.
+     */
+    public const PREV_SCHE_NUMB = 'AGX';
+
+    /**
+     * Previous tax control number (ALT)
+     *
+     * A reference number identifying a previous tax control number.
+     */
+    public const PREV_TAX_CONT_NUMB = 'ALT';
+
+    /**
+     * Price list number (PL)
+     *
+     * Reference number assigned to a price list.
+     */
+    public const PRIC_LIST_NUMB = 'PL';
+
+    /**
+     * Price list version number (PI)
+     *
+     * A number that identifies the version of a price list.
+     */
+    public const PRIC_LIST_VERS_NUMB = 'PI';
+
+    /**
+     * Price quote number (PR)
+     *
+     * Reference number assigned by the seller to a quote.
+     */
+    public const PRIC_QUOT_NUMB = 'PR';
+
+    /**
+     * Price variation formula reference number (APK)
+     *
+     * The reference number which identifies a price variation formula.
+     */
+    public const PRIC_VARI_FORM_REFE_NUMB = 'APK';
+
+    /**
+     * Price/sales catalogue response reference number (APF)
+     *
+     * A reference number identifying a response to a price/sales catalogue.
+     */
+    public const PRIC_CATA_RESP_REFE_NUMB = 'APF';
+
+    /**
+     * Primary reference (AES)
+     *
+     * A number that identifies the primary reference.
+     */
+    public const PRIM_REFE = 'AES';
+
+    /**
+     * Prime contractor contract number (PF)
+     *
+     * Reference number assigned by the client to the contract of the prime
+     * contractor.
+     */
+    public const PRIM_CONT_CONT_NUMB = 'PF';
+
+    /**
+     * Principal reference number (ACL)
+     *
+     * A number that identifies the principal reference.
+     */
+    public const PRIN_REFE_NUMB = 'ACL';
+
+    /**
+     * Principal's bank reference (ANR)
+     *
+     * Reference number of the principal's bank.
+     */
+    public const PRIN_BANK_REFE = 'ANR';
+
+    /**
+     * Principal's reference (AOH)
+     *
+     * Reference number of the principal.
+     */
+    public const PRIN_REFE = 'AOH';
+
+    /**
+     * Prior contractor registration number (ARY)
+     *
+     * A previous reference number used to identify a contractor.
+     */
+    public const PRIO_CONT_REGI_NUMB = 'ARY';
+
+    /**
+     * Prior Data Universal Number System (DUNS) number (ARB)
+     *
+     * A previously assigned Data Universal Number System (DUNS) number.
+     */
+    public const PRIO_DATA_UNIV_NUMB_SYST_DUNS_NUMB = 'ARB';
+
+    /**
+     * Prior policy number (AKY)
+     *
+     * The number of the prior policy.
+     */
+    public const PRIO_POLI_NUMB = 'AKY';
+
+    /**
+     * Prior purchase order number (PW)
+     *
+     * Reference number of a purchase order previously sent to the supplier.
+     */
+    public const PRIO_PURC_ORDE_NUMB = 'PW';
+
+    /**
+     * Prior trading partner identification number (ASN)
+     *
+     * Code specifying an identification number previously assigned to a trading
+     * partner.
+     */
+    public const PRIO_TRAD_PART_IDEN_NUMB = 'ASN';
+
+    /**
+     * Processing plant number (AIS)
+     *
+     * Number to identify processing plant.
+     */
+    public const PROC_PLAN_NUMB = 'AIS';
+
+    /**
+     * Procurement budget number (ALA)
+     *
+     * A number which uniquely identifies a procurement budget against which
+     * commitments or invoices can be allocated.
+     */
+    public const PROC_BUDG_NUMB = 'ALA';
+
+    /**
+     * Product certification number (AXO)
+     *
+     * Number assigned by a governing body (or their agents) to a product which
+     * certifies compliance with a standard.
+     */
+    public const PROD_CERT_NUMB = 'AXO';
+
+    /**
+     * Product change authority number (AKQ)
+     *
+     * Number which authorises a change in form, fit or function of a product.
+     */
+    public const PROD_CHAN_AUTH_NUMB = 'AKQ';
+
+    /**
+     * Product characteristics directory (AVB)
+     *
+     * A reference to a product characteristics directory.
+     */
+    public const PROD_CHAR_DIRE = 'AVB';
+
+    /**
+     * Product data file number (ASV)
+     *
+     * The number of a product data file.
+     */
+    public const PROD_DATA_FILE_NUMB = 'ASV';
+
+    /**
+     * Product inquiry number (AXF)
+     *
+     * A reference number identifying a previously communicated product inquiry.
+     */
+    public const PROD_INQU_NUMB = 'AXF';
+
+    /**
+     * Product reservation number (AEO)
+     *
+     * Number assigned by seller to identify reservation of specified products.
+     */
+    public const PROD_RESE_NUMB = 'AEO';
+
+    /**
+     * Product sourcing agreement number (AIN)
+     *
+     * Reference number assigned to a product sourcing agreement.
+     */
+    public const PROD_SOUR_AGRE_NUMB = 'AIN';
+
+    /**
+     * Product specification reference number (AXQ)
+     *
+     * Number assigned by the issuer to his product specification.
+     */
+    public const PROD_SPEC_REFE_NUMB = 'AXQ';
+
+    /**
+     * Production code (PC)
+     *
+     * Number assigned by the manufacturer to a specified article or batch to
+     * identify the manufacturing date etc. for subsequent reference.
+     */
+    public const PROD_CODE = 'PC';
+
+    /**
+     * Profile number (AMG)
+     *
+     * Reference number allocated to a discrete set of criteria.
+     */
+    public const PROF_NUMB = 'AMG';
+
+    /**
+     * Proforma invoice document identifier (AAB)
+     *
+     * [1088] Reference number to identify a proforma invoice.
+     */
+    public const PROF_INVO_DOCU_IDEN = 'AAB';
+
+    /**
+     * Project number (AEP)
+     *
+     * Reference number assigned to a project.
+     */
+    public const PROJ_NUMB = 'AEP';
+
+    /**
+     * Project specification number (AER)
+     *
+     * Reference number identifying a project specification.
+     */
+    public const PROJ_SPEC_NUMB = 'AER';
+
+    /**
+     * Promotion deal number (PD)
+     *
+     * Number assigned by a vendor to a special promotion activity.
+     */
+    public const PROM_DEAL_NUMB = 'PD';
+
+    /**
+     * Proof of delivery reference number (ASI)
+     *
+     * A reference number identifying a proof of delivery which is generated by
+     * the goods recipient.
+     */
+    public const PROO_OF_DELI_REFE_NUMB = 'ASI';
+
+    /**
+     * Proposed purchase order reference number (AUJ)
+     *
+     * A reference number assigned to a proposed purchase order.
+     */
+    public const PROP_PURC_ORDE_REFE_NUMB = 'AUJ';
+
+    /**
+     * Public filing registration number (ARP)
+     *
+     * A number assigned at the time of registration of a public filing.
+     */
+    public const PUBL_FILI_REGI_NUMB = 'ARP';
+
+    /**
+     * Publication issue number (ARM)
+     *
+     * A number assigned to identify a publication issue.
+     */
+    public const PUBL_ISSU_NUMB = 'ARM';
+
+    /**
+     * Purchase for export Customs agreement number (ATB)
+     *
+     * A number assigned by a Customs authority allowing the purchase of goods
+     * free of tax because they are to be exported immediately after the purchase.
+     */
+    public const PURC_FOR_EXPO_CUST_AGRE_NUMB = 'ATB';
+
+    /**
+     * Purchase order change number (PP)
+     *
+     * Reference number assigned by a buyer for a revision of a purchase order.
+     */
+    public const PURC_ORDE_CHAN_NUMB = 'PP';
+
+    /**
+     * Purchase order number suffix (PS)
+     *
+     * A number added at the end of a purchase order number.
+     */
+    public const PURC_ORDE_NUMB_SUFF = 'PS';
+
+    /**
+     * Purchase order response number (POR)
+     *
+     * Reference number assigned by the seller to an order response.
+     */
+    public const PURC_ORDE_RESP_NUMB = 'POR';
+
+    /**
+     * Purchaser's request reference (APN)
+     *
+     * Reference identifying a request made by the purchaser.
+     */
+    public const PURC_REQU_REFE = 'APN';
+
+    /**
+     * Purchasing activity clause number (AJC)
+     *
+     * A number indicating a clause applicable to a purchasing activity.
+     */
+    public const PURC_ACTI_CLAU_NUMB = 'AJC';
+
+    /**
+     * Quantity valuation number (AFV)
+     *
+     * Reference number assigned to a quantity valuation.
+     */
+    public const QUAN_VALU_NUMB = 'AFV';
+
+    /**
+     * Quantity valuation request number (AFW)
+     *
+     * Reference number assigned to a quantity valuation request.
+     */
+    public const QUAN_VALU_REQU_NUMB = 'AFW';
+
+    /**
+     * Quarantine/treatment status reference number (AHT)
+     *
+     * Coded quarantine/treatment status of a container and its cargo and packing
+     * materials, generated by a shipping company based upon declarations
+     * presented by a shipper.
+     */
+    public const QUAR_STAT_REFE_NUMB = 'AHT';
+
+    /**
+     * Quota number (ABJ)
+     *
+     * Reference number allocated by a government authority to identify a quota.
+     */
+    public const QUOT_NUMB = 'ABJ';
+
+    /**
+     * Rail waybill number (WY)
+     *
+     * The number on a rail waybill.
+     */
+    public const RAIL_WAYB_NUMB = 'WY';
+
+    /**
+     * Rail/road routing code (RC)
+     *
+     * International Western and Eastern European route code used in all rail
+     * organizations and specified in the international tariffs (rail tariffs)
+     * known by the customers.
+     */
+    public const RAIL_ROUT_CODE = 'RC';
+
+    /**
+     * Railway consignment note number (RCN)
+     *
+     * Reference number assigned to a rail consignment note, see: 1001 = 720.
+     */
+    public const RAIL_CONS_NOTE_NUMB = 'RCN';
+
+    /**
+     * Railway wagon number (ACR)
+     *
+     * (8260) Registered identification initials and numbers of railway wagon.
+     * Synonym: Rail car number.
+     */
+    public const RAIL_WAGO_NUMB = 'ACR';
+
+    /**
+     * Rate code number (AWA)
+     *
+     * Number assigned by a buyer to rate a product.
+     */
+    public const RATE_CODE_NUMB = 'AWA';
+
+    /**
+     * Rate note number (AHX)
+     *
+     * Reference assigned to a specific rate.
+     */
+    public const RATE_NOTE_NUMB = 'AHX';
+
+    /**
+     * Receiver's file reference number (AOF)
+     *
+     * File reference number assigned by the receiver.
+     */
+    public const RECE_FILE_REFE_NUMB = 'AOF';
+
+    /**
+     * Receiving advice number (ALO)
+     *
+     * A reference number to a receiving advice.
+     */
+    public const RECE_ADVI_NUMB = 'ALO';
+
+    /**
+     * Receiving bank's authorization number (ANW)
+     *
+     * Authorization number of the receiving bank.
+     */
+    public const RECE_BANK_AUTH_NUMB = 'ANW';
+
+    /**
+     * Receiving Bankgiro number (ATJ)
+     *
+     * Number of the receiving Bankgiro.
+     */
+    public const RECE_BANK_NUMB = 'ATJ';
+
+    /**
+     * Receiving party's member identification (AGY)
+     *
+     * Identification used by the receiving party for a member of a service scheme
+     * or group of persons.
+     */
+    public const RECE_PART_MEMB_IDEN = 'AGY';
+
+    /**
+     * Reference number assigned by third party (ANK)
+     *
+     * Reference number assigned by a third party.
+     */
+    public const REFE_NUMB_ASSI_BY_THIR_PART = 'ANK';
+
+    /**
+     * Reference number of a request for metered reading (AMC)
+     *
+     * Number to identify a request for a recording or reading of a measuring
+     * device to be taken.
+     */
+    public const REFE_NUMB_OF_A_REQU_FOR_METE_READ = 'AMC';
+
+    /**
+     * Reference number quoted on statement (AGN)
+     *
+     * Reference number quoted on the statement sent to the beneficiary for
+     * information purposes.
+     */
+    public const REFE_NUMB_QUOT_ON_STAT = 'AGN';
+
+    /**
+     * Reference number to previous message (ACW)
+     *
+     * Reference number assigned to the message which was previously issued (e.g.
+     * in the case of a cancellation, the primary reference of the message to be
+     * cancelled will be quoted in this element).
+     */
+    public const REFE_NUMB_TO_PREV_MESS = 'ACW';
+
+    /**
+     * Reference to account servicing bank's message (APL)
+     *
+     * Reference to the account servicing bank's message.
+     */
+    public const REFE_TO_ACCO_SERV_BANK_MESS = 'APL';
+
+    /**
+     * Referred product for chemical analysis (AIY)
+     *
+     * A product number identifying the product which is used for chemical
+     * analysis considered valid for a group of products.
+     */
+    public const REFE_PROD_FOR_CHEM_ANAL = 'AIY';
+
+    /**
+     * Referred product for mechanical analysis (AIX)
+     *
+     * A product number identifying the product which is used for mechanical
+     * analysis considered valid for a group of products.
+     */
+    public const REFE_PROD_FOR_MECH_ANAL = 'AIX';
+
+    /**
+     * Regiristo Federal de Contribuyentes (ARQ)
+     *
+     * A federal tax identification number assigned by the Mexican tax authority.
+     */
+    public const REGI_FEDE_DE_CONT = 'ARQ';
+
+    /**
+     * Registered capital reference (ALV)
+     *
+     * Registered capital reference of a company.
+     */
+    public const REGI_CAPI_REFE = 'ALV';
+
+    /**
+     * Registered contractor activity type (AQU)
+     *
+     * Reference number identifying the type of registered contractor activity.
+     */
+    public const REGI_CONT_ACTI_TYPE = 'AQU';
+
+    /**
+     * Registration number of previous Customs declaration (AEI)
+     *
+     * Registration number of the Customs declaration lodged for the previous
+     * Customs procedure.
+     */
+    public const REGI_NUMB_OF_PREV_CUST_DECL = 'AEI';
+
+    /**
+     * Registro Informacion Fiscal (RIF) number (ARG)
+     *
+     * A number assigned by the government to a business in some Latin American
+     * countries.
+     */
+    public const REGI_INFO_FISC_RIF_NUMB = 'ARG';
+
+    /**
+     * Registro Unico de Contribuyente (RUC) number (ARH)
+     *
+     * A number assigned by the government to a business in some Latin American
+     * countries.
+     */
+    public const REGI_UNIC_DE_CONT_RUC_NUMB = 'ARH';
+
+    /**
+     * Registro Unico Tributario (RUT) (ATV)
+     *
+     * Tax identification number in Chile.
+     */
+    public const REGI_UNIC_TRIB_RUT = 'ATV';
+
+    /**
+     * Reinsurer's claim number (APE)
+     *
+     * To identify the number assigned to the claim by the reinsurer.
+     */
+    public const REIN_CLAI_NUMB = 'APE';
+
+    /**
+     * Related document number (ACE)
+     *
+     * Reference number identifying a related document.
+     */
+    public const RELA_DOCU_NUMB = 'ACE';
+
+    /**
+     * Related party (AWO)
+     *
+     * Reference of a related party.
+     */
+    public const RELA_PART = 'AWO';
+
+    /**
+     * Release number (RE)
+     *
+     * Reference number assigned to identify a release of a set of rules,
+     * conventions, conditions, etc.
+     */
+    public const RELE_NUMB = 'RE';
+
+    /**
+     * Remittance advice number (RA)
+     *
+     * A number that identifies a remittance advice.
+     */
+    public const REMI_ADVI_NUMB = 'RA';
+
+    /**
+     * Remitting bank's reference (ANQ)
+     *
+     * Reference number of the remitting bank.
+     */
+    public const REMI_BANK_REFE = 'ANQ';
+
+    /**
+     * Repair data request number (AME)
+     *
+     * A number which uniquely identifies a request for data about repairs.
+     */
+    public const REPA_DATA_REQU_NUMB = 'AME';
+
+    /**
+     * Repair estimate number (ABF)
+     *
+     * A number identifying a repair estimate.
+     */
+    public const REPA_ESTI_NUMB = 'ABF';
+
+    /**
+     * Replaced meter unit number (AMK)
+     *
+     * Number identifying the replaced meter unit.
+     */
+    public const REPL_METE_UNIT_NUMB = 'AMK';
+
+    /**
+     * Replacing part number (ABM)
+     *
+     * New part number which replaces the existing part number.
+     */
+    public const REPL_PART_NUMB = 'ABM';
+
+    /**
+     * Replenishment purchase order number (AFH)
+     *
+     * Purchase order number specified by the buyer for the assignment to vendor's
+     * replenishment orders in a vendor managed inventory program.
+     */
+    public const REPL_PURC_ORDE_NUMB = 'AFH';
+
+    /**
+     * Replenishment purchase order range end number (AML)
+     *
+     * Ending number of a range of purchase order numbers assigned by the buyer to
+     * vendor's replenishment orders.
+     */
+    public const REPL_PURC_ORDE_RANG_END_NUMB = 'AML';
+
+    /**
+     * Replenishment purchase order range start number (AKM)
+     *
+     * Starting number of a range of purchase order numbers assigned by the buyer
+     * to vendor's replenishment orders.
+     */
+    public const REPL_PURC_ORDE_RANG_STAR_NUMB = 'AKM';
+
+    /**
+     * Report number (ADY)
+     *
+     * Reference to a report to Customs by a carrier at the point of entry,
+     * encompassing both conveyance and consignment information.
+     */
+    public const REPO_NUMB = 'ADY';
+
+    /**
+     * Reporting form number (ALE)
+     *
+     * Reference number assigned to the reporting form.
+     */
+    public const REPO_FORM_NUMB = 'ALE';
+
+    /**
+     * Request for cancellation number (AET)
+     *
+     * A number that identifies a request for cancellation.
+     */
+    public const REQU_FOR_CANC_NUMB = 'AET';
+
+    /**
+     * Request for quote number (AHU)
+     *
+     * Reference number assigned by the requestor to a request for quote.
+     */
+    public const REQU_FOR_QUOT_NUMB = 'AHU';
+
+    /**
+     * Request number (AGI)
+     *
+     * The reference number of a request.
+     */
+    public const REQU_NUMB = 'AGI';
+
+    /**
+     * Reservation office identifier (LRC)
+     *
+     * Reference to the office where a reservation was made.
+     */
+    public const RESE_OFFI_IDEN = 'LRC';
+
+    /**
+     * Reservation station indentifier (AVT)
+     *
+     * Reference to the station where a reservation was made.
+     */
+    public const RESE_STAT_INDE = 'AVT';
+
+    /**
+     * Reserved goods identifier (AWY)
+     *
+     * A reference number identifying goods in stock which have been reserved for
+     * a party.
+     */
+    public const RESE_GOOD_IDEN = 'AWY';
+
+    /**
+     * Returnable container reference number (ALP)
+     *
+     * A reference number identifying a returnable container.
+     */
+    public const RETU_CONT_REFE_NUMB = 'ALP';
+
+    /**
+     * Returns notice number (ALQ)
+     *
+     * A reference number to a returns notice.
+     */
+    public const RETU_NOTI_NUMB = 'ALQ';
+
+    /**
+     * Road consignment note number (CMR)
+     *
+     * Reference number assigned to a road consignment note, see: 1001 = 730.
+     */
+    public const ROAD_CONS_NOTE_NUMB = 'CMR';
+
+    /**
+     * Safe custody number (ASR)
+     *
+     * The number of a file or portfolio kept for safe custody on behalf of
+     * clients.
+     */
+    public const SAFE_CUST_NUMB = 'ASR';
+
+    /**
+     * Safe deposit box number (ATI)
+     *
+     * Number of the safe deposit box.
+     */
+    public const SAFE_DEPO_BOX_NUMB = 'ATI';
+
+    /**
+     * Sales department number (SD)
+     *
+     * A number that identifies a sales department.
+     */
+    public const SALE_DEPA_NUMB = 'SD';
+
+    /**
+     * Sales forecast number (ALR)
+     *
+     * A reference number identifying a sales forecast.
+     */
+    public const SALE_FORE_NUMB = 'ALR';
+
+    /**
+     * Sales office number (SM)
+     *
+     * A number that identifies a sales office.
+     */
+    public const SALE_OFFI_NUMB = 'SM';
+
+    /**
+     * Sales person number (SA)
+     *
+     * Identification number of a sales person.
+     */
+    public const SALE_PERS_NUMB = 'SA';
+
+    /**
+     * Sales region number (SB)
+     *
+     * A number that identifies a sales region.
+     */
+    public const SALE_REGI_NUMB = 'SB';
+
+    /**
+     * Sales report number (ALS)
+     *
+     * A reference number identifying a sales report.
+     */
+    public const SALE_REPO_NUMB = 'ALS';
+
+    /**
+     * Scan line (SP)
+     *
+     * A number that identifies a scan line.
+     */
+    public const SCAN_LINE = 'SP';
+
+    /**
+     * Scheme/plan number (AGW)
+     *
+     * Reference number assigned to a service scheme or plan.
+     */
+    public const SCHE_NUMB = 'AGW';
+
+    /**
+     * Second beneficiary's reference (AFP)
+     *
+     * Reference of the second beneficiary.
+     */
+    public const SECO_BENE_REFE = 'AFP';
+
+    /**
+     * Secondary Customs reference (AFM)
+     *
+     * A number that identifies the secondary customs reference.
+     */
+    public const SECO_CUST_REFE = 'AFM';
+
+    /**
+     * Secretariat number (ATD)
+     *
+     * A reference number identifying a secretariat.
+     */
+    public const SECR_NUMB = 'ATD';
+
+    /**
+     * Secure delivery terms and conditions agreement reference (ADX)
+     *
+     * A reference to a secure delivery terms and conditions agreement. A secured
+     * delivery agreement is an agreement containing terms and conditions to
+     * secure deliveries in case of failure in the production or logistics process
+     * of the supplier.
+     */
+    public const SECU_DELI_TERM_AND_COND_AGRE_REFE = 'ADX';
+
+    /**
+     * Seller's catalogue number (ABN)
+     *
+     * Identification number assigned to a seller's catalogue.
+     */
+    public const SELL_CATA_NUMB = 'ABN';
+
+    /**
+     * Sellers reference number (SS)
+     *
+     * Reference number assigned to a transaction by the seller.
+     */
+    public const SELL_REFE_NUMB = 'SS';
+
+    /**
+     * Sender's clause number (AQO)
+     *
+     * The number that identifies the sender's clause.
+     */
+    public const SEND_CLAU_NUMB = 'AQO';
+
+    /**
+     * Sender's file reference number (AOE)
+     *
+     * File reference number assigned by the sender.
+     */
+    public const SEND_FILE_REFE_NUMB = 'AOE';
+
+    /**
+     * Sender's reference to the original message (AGO)
+     *
+     * The reference provided by the sender of the original message.
+     */
+    public const SEND_REFE_TO_THE_ORIG_MESS = 'AGO';
+
+    /**
+     * Sending bank's reference number (ANY)
+     *
+     * Reference number of the sending bank.
+     */
+    public const SEND_BANK_REFE_NUMB = 'ANY';
+
+    /**
+     * Sending Bankgiro number (ATK)
+     *
+     * Number of the sending Bankgiro.
+     */
+    public const SEND_BANK_NUMB = 'ATK';
+
+    /**
+     * Serial number (SE)
+     *
+     * Identification number of an item which distinguishes this specific item out
+     * of an number of identical items.
+     */
+    public const SERI_NUMB = 'SE';
+
+    /**
+     * Serial shipping container code (AXI)
+     *
+     * Reference number identifying a logistic unit.
+     */
+    public const SERI_SHIP_CONT_CODE = 'AXI';
+
+    /**
+     * Service category reference (AWM)
+     *
+     * Reference identifying the service category.
+     */
+    public const SERV_CATE_REFE = 'AWM';
+
+    /**
+     * Service group identification number (AGT)
+     *
+     * Identification used for a group of services.
+     */
+    public const SERV_GROU_IDEN_NUMB = 'AGT';
+
+    /**
+     * Service provider (AWK)
+     *
+     * Reference of the service provider.
+     */
+    public const SERV_PROV = 'AWK';
+
+    /**
+     * Service relation number (AXH)
+     *
+     * A reference number identifying the relationship between a service provider
+     * and a service client, e.g., treatment of a patient in a hospital, usage by
+     * a member of a library facility, etc.
+     */
+    public const SERV_RELA_NUMB = 'AXH';
+
+    /**
+     * Ship from (SF)
+     *
+     * A number that identifies a ship from location.
+     */
+    public const SHIP_FROM = 'SF';
+
+    /**
+     * Ship notice/manifest number (MA)
+     *
+     * The number assigned to a ship notice or manifest.
+     */
+    public const SHIP_NOTI_NUMB = 'MA';
+
+    /**
+     * Ship's stay reference number (ATZ)
+     *
+     * (1099) Reference number assigned by a port authority to the stay of a
+     * vessel in the port.
+     */
+    public const SHIP_STAY_REFE_NUMB = 'ATZ';
+
+    /**
+     * Shipment reference number (SRN)
+     *
+     * [1065] Reference number assigned to a shipment.
+     */
+    public const SHIP_REFE_NUMB = 'SRN';
+
+    /**
+     * Shipowner's authorization number (ADM)
+     *
+     * Reference number assigned by the shipowner as an authorization number to
+     * transport certain goods (such as hazardous goods, cool or reefer goods).
+     */
+    public const SHIP_AUTH_NUMB = 'ADM';
+
+    /**
+     * Shipping label serial number (LA)
+     *
+     * The serial number on a shipping label.
+     */
+    public const SHIP_LABE_SERI_NUMB = 'LA';
+
+    /**
+     * Shipping note number (AEV)
+     *
+     * [1123] Reference number assigned to a shipping note.
+     */
+    public const SHIP_NOTE_NUMB = 'AEV';
+
+    /**
+     * Shipping unit identification (ACC)
+     *
+     * Identifying marks on the outermost unit that is used to transport
+     * merchandise.
+     */
+    public const SHIP_UNIT_IDEN = 'ACC';
+
+    /**
+     * SID (Shipper's identifying number for shipment) (SI)
+     *
+     * A number that identifies the SID (shipper's identification) number for a
+     * shipment.
+     */
+    public const SID_SHIP_IDEN_NUMB_FOR_SHIP = 'SI';
+
+    /**
+     * Signal code number (AHE)
+     *
+     * Reference number to identify a signal.
+     */
+    public const SIGN_CODE_NUMB = 'AHE';
+
+    /**
+     * Single transaction sequence number (AGJ)
+     *
+     * A number that identifies a single transaction sequence.
+     */
+    public const SING_TRAN_SEQU_NUMB = 'AGJ';
+
+    /**
+     * Site specific procedures, terms, and conditions number (AJL)
+     *
+     * A number indicating a set of site specific procedures, terms and
+     * conditions.
+     */
+    public const SITE_SPEC_PROC_TERM_AND_COND_NUMB = 'AJL';
+
+    /**
+     * Situation number (AFZ)
+     *
+     * Common reference number given to documents concerning a determined period
+     * of works.
+     */
+    public const SITU_NUMB = 'AFZ';
+
+    /**
+     * Slaughter plant number (AIT)
+     *
+     * Number to identify slaughter plant.
+     */
+    public const SLAU_PLAN_NUMB = 'AIT';
+
+    /**
+     * Slaughterhouse approval number (AVG)
+     *
+     * Veterinary licence number allocated by a national authority to a
+     * slaughterhouse.
+     */
+    public const SLAU_APPR_NUMB = 'AVG';
+
+    /**
+     * Social security number (ARR)
+     *
+     * An identification number assigned to an individual by the social security
+     * administration.
+     */
+    public const SOCI_SECU_NUMB = 'ARR';
+
+    /**
+     * Software editor reference (AUM)
+     *
+     * Reference identifying the software editor.
+     */
+    public const SOFT_EDIT_REFE = 'AUM';
+
+    /**
+     * Software quality reference (AUO)
+     *
+     * Reference allocated to the software by a quality assurance agency.
+     */
+    public const SOFT_QUAL_REFE = 'AUO';
+
+    /**
+     * Software reference (AUN)
+     *
+     * Reference identifying the software.
+     */
+    public const SOFT_REFE = 'AUN';
+
+    /**
+     * Source document internal reference (AOG)
+     *
+     * Reference number assigned to a source document for internal usage.
+     */
+    public const SOUR_DOCU_INTE_REFE = 'AOG';
+
+    /**
+     * Special budget account number (APU)
+     *
+     * The number of a special budget account.
+     */
+    public const SPEC_BUDG_ACCO_NUMB = 'APU';
+
+    /**
+     * Special instructions number (AJK)
+     *
+     * A number indicating a citation used for special instructions.
+     */
+    public const SPEC_INST_NUMB = 'AJK';
+
+    /**
+     * Specification number (SZ)
+     *
+     * Number assigned by the issuer to his specification.
+     */
+    public const SPEC_NUMB = 'SZ';
+
+    /**
+     * Split delivery number (AXG)
+     *
+     * A reference number identifying a split delivery.
+     */
+    public const SPLI_DELI_NUMB = 'AXG';
+
+    /**
+     * Standard Carrier Alpha Code (SCAC) number (AAZ)
+     *
+     * For maritime shipments, this code qualifies a Standard Alpha Carrier Code
+     * (SCAC) as issued by the United Stated National Motor Traffic Association
+     * Inc.
+     */
+    public const STAN_CARR_ALPH_CODE_SCAC_NUMB = 'AAZ';
+
+    /**
+     * Standard Industry Classification (SIC) number (AJT)
+     *
+     * A number specifying a standard industry classification.
+     */
+    public const STAN_INDU_CLAS_SIC_NUMB = 'AJT';
+
+    /**
+     * Standard number of inspection document (ALW)
+     *
+     * Code identifying the standard number of the inspection document supplied.
+     */
+    public const STAN_NUMB_OF_INSP_DOCU = 'ALW';
+
+    /**
+     * Standard's code number (GD)
+     *
+     * Number to identify a specific parameter within a standardization
+     * description (e.g. M5 for screws or DIN A4 for paper).
+     */
+    public const STAN_CODE_NUMB = 'GD';
+
+    /**
+     * Standard's number (GA)
+     *
+     * Number to identify a standardization description (e.g. ISO 9375).
+     */
+    public const STAN_NUMB = 'GA';
+
+    /**
+     * Standard's version number (AMY)
+     *
+     * The version number assigned to a standard.
+     */
+    public const STAN_VERS_NUMB = 'AMY';
+
+    /**
+     * State or province assigned entity identification (AQW)
+     *
+     * Reference number of an entity assigned by a state or province.
+     */
+    public const STAT_OR_PROV_ASSI_ENTI_IDEN = 'AQW';
+
+    /**
+     * Statement number (ADP)
+     *
+     * A reference number identifying a statement.
+     */
+    public const STAT_NUMB = 'ADP';
+
+    /**
+     * Statement of work (AOR)
+     *
+     * A reference number for a statement of work.
+     */
+    public const STAT_OF_WORK = 'AOR';
+
+    /**
+     * Station reference number (STA)
+     *
+     * International UIC code assigned to every European rail station (CIM
+     * convention).
+     */
+    public const STAT_REFE_NUMB = 'STA';
+
+    /**
+     * Statistic Bundes Amt (SBA) identifier (AQV)
+     *
+     * A German industry classification code issued by Statistic Bundes Amt (SBA)
+     * to identify the activity of a company.
+     */
+    public const STAT_BUND_AMT_SBA_IDEN = 'AQV';
+
+    /**
+     * Status report number (AQK)
+     *
+     * (1125) The reference number for a status report.
+     */
+    public const STAT_REPO_NUMB = 'AQK';
+
+    /**
+     * Stock adjustment number (ARZ)
+     *
+     * A number identifying a stock adjustment.
+     */
+    public const STOC_ADJU_NUMB = 'ARZ';
+
+    /**
+     * Stock exchange company identifier (ARU)
+     *
+     * A reference assigned by the stock exchange to a company.
+     */
+    public const STOC_EXCH_COMP_IDEN = 'ARU';
+
+    /**
+     * Stock keeping unit number (ABW)
+     *
+     * A number that identifies the stock keeping unit.
+     */
+    public const STOC_KEEP_UNIT_NUMB = 'ABW';
+
+    /**
+     * Sub file (ANE)
+     *
+     * Identifies the sub file in a structure of related files.
+     */
+    public const SUB_FILE = 'ANE';
+
+    /**
+     * Sub-house bill of lading number (ABH)
+     *
+     * Reference assigned to a sub-house bill of lading.
+     */
+    public const SUBH_BILL_OF_LADI_NUMB = 'ABH';
+
+    /**
+     * Substitute air waybill number (AEY)
+     *
+     * Reference number assigned to a substitute air waybill, see: 1001 = 743.
+     */
+    public const SUBS_AIR_WAYB_NUMB = 'AEY';
+
+    /**
+     * Suffix (AJY)
+     *
+     * A reference to specify a suffix added to the end of a basic identifier.
+     */
+    public const SUFFIX = 'AJY';
+
+    /**
+     * Supplier's control number (AEU)
+     *
+     * Reference to a file regarding a control of the supplier carried out on
+     * departure of the goods.
+     */
+    public const SUPP_CONT_NUMB = 'AEU';
+
+    /**
+     * Supplier's credit claim reference number (ASJ)
+     *
+     * A reference number identifying a supplier's credit claim.
+     */
+    public const SUPP_CRED_CLAI_REFE_NUMB = 'ASJ';
+
+    /**
+     * Supplier's customer reference number (AVC)
+     *
+     * A number, assigned by a supplier, to reference a customer.
+     */
+    public const SUPP_CUST_REFE_NUMB = 'AVC';
+
+    /**
+     * Swap order number (SW)
+     *
+     * Number assigned by the seller to a swap order (see definition of DE 1001,
+     * code 229).
+     */
+    public const SWAP_ORDE_NUMB = 'SW';
+
+    /**
+     * Symbol number (AEC)
+     *
+     * A number that identifies a symbol.
+     */
+    public const SYMB_NUMB = 'AEC';
+
+    /**
+     * Systeme Informatique pour le Repertoire des ENtreprises (SIREN) number (ARK)
+     *
+     * An identification number known as a SIREN assigned to a business in France.
+     */
+    public const SYST_INFO_POUR_LE_REPE_DES_ENTR_SIRE_NUMB = 'ARK';
+
+    /**
+     * Systeme Informatique pour le Repertoire des ETablissements (SIRET) number (ARL)
+     *
+     * An identification number known as a SIRET assigned to a business location
+     * in France.
+     */
+    public const SYST_INFO_POUR_LE_REPE_DES_ETAB_SIRE_NUMB = 'ARL';
+
+    /**
+     * Tariff number (AFG)
+     *
+     * A number that identifies a tariff.
+     */
+    public const TARI_NUMB = 'AFG';
+
+    /**
+     * Tax exemption licence number (TL)
+     *
+     * Number assigned by the tax authorities to a party indicating its tax
+     * exemption authorization. This number could relate to a specified business
+     * type, a specified local area or a class of products.
+     */
+    public const TAX_EXEM_LICE_NUMB = 'TL';
+
+    /**
+     * Tax payment identifier (ABI)
+     *
+     * [1168] Reference number identifying a payment of a duty or tax e.g. under a
+     * transit procedure.
+     */
+    public const TAX_PAYM_IDEN = 'ABI';
+
+    /**
+     * Tax registration number (AHP)
+     *
+     * The registration number by which a company/organization is identified with
+     * the tax administration.
+     */
+    public const TAX_REGI_NUMB = 'AHP';
+
+    /**
+     * Team assignment number (CST)
+     *
+     * Team number assigned to a group that is responsible for working a
+     * particular transaction.
+     */
+    public const TEAM_ASSI_NUMB = 'CST';
+
+    /**
+     * Technical document number (AJW)
+     *
+     * A number specifying a technical document.
+     */
+    public const TECH_DOCU_NUMB = 'AJW';
+
+    /**
+     * Technical order number (AJX)
+     *
+     * A reference to an order that specifies a technical change.
+     */
+    public const TECH_ORDE_NUMB = 'AJX';
+
+    /**
+     * Technical phase reference (ARX)
+     *
+     * A reference which identifies a specific technical phase.
+     */
+    public const TECH_PHAS_REFE = 'ARX';
+
+    /**
+     * Technical regulation (ANG)
+     *
+     * Reference number identifying a technical regulation.
+     */
+    public const TECH_REGU = 'ANG';
+
+    /**
+     * Telex message number (TE)
+     *
+     * Reference number identifying a telex message.
+     */
+    public const TELE_MESS_NUMB = 'TE';
+
+    /**
+     * Terminal operator's consignment reference (TCR)
+     *
+     * Reference assigned to a consignment by the terminal operator.
+     */
+    public const TERM_OPER_CONS_REFE = 'TCR';
+
+    /**
+     * Test report number (TP)
+     *
+     * Reference number identifying a test report document relevant to the
+     * product.
+     */
+    public const TEST_REPO_NUMB = 'TP';
+
+    /**
+     * Test specification number (AXJ)
+     *
+     * A reference number identifying a test specification.
+     */
+    public const TEST_SPEC_NUMB = 'AXJ';
+
+    /**
+     * Text Element Identifier deletion reference (ABX)
+     *
+     * The reference used within a given TEI (Text Element Identifier) which is to
+     * be deleted.
+     */
+    public const TEXT_ELEM_IDEN_DELE_REFE = 'ABX';
+
+    /**
+     * Third bank's reference (AKN)
+     *
+     * Reference number of the third bank.
+     */
+    public const THIR_BANK_REFE = 'AKN';
+
+    /**
+     * Through bill of lading number (AFA)
+     *
+     * Reference number assigned to a through bill of lading, see: 1001 = 761.
+     */
+    public const THRO_BILL_OF_LADI_NUMB = 'AFA';
+
+    /**
+     * Ticket control number (CBA)
+     *
+     * Reference giving access to all the details associated with the ticket.
+     */
+    public const TICK_CONT_NUMB = 'CBA';
+
+    /**
+     * Time series reference (AUU)
+     *
+     * Reference to a time series.
+     */
+    public const TIME_SERI_REFE = 'AUU';
+
+    /**
+     * TIR carnet number (TI)
+     *
+     * Reference number assigned to a TIR carnet.
+     */
+    public const TIR_CARN_NUMB = 'TI';
+
+    /**
+     * Tokyo SHOKO Research (TSR) business identifier (ARI)
+     *
+     * A number assigned to a business by TSR.
+     */
+    public const TOKY_SHOK_RESE_TSR_BUSI_IDEN = 'ARI';
+
+    /**
+     * Tooling contract number (AXL)
+     *
+     * A reference number of the tooling contract.
+     */
+    public const TOOL_CONT_NUMB = 'AXL';
+
+    /**
+     * TRACES party identification (AXS)
+     *
+     * The party identification number used in the European Union's Trade Control
+     * and Expert System (TRACES).
+     */
+    public const TRAC_PART_IDEN = 'AXS';
+
+    /**
+     * Trader account number (ADZ)
+     *
+     * Number assigned by a Customs authority which uniquely identifies a trader
+     * (i.e. importer, exporter or declarant) for Customs purposes.
+     */
+    public const TRAD_ACCO_NUMB = 'ADZ';
+
+    /**
+     * Trading partner identification number (ASM)
+     *
+     * Code specifying an identification assigned to an entity with whom one
+     * conducts trade.
+     */
+    public const TRAD_PART_IDEN_NUMB = 'ASM';
+
+    /**
+     * Training flight number (AHC)
+     *
+     * Non-revenue producing airline flight for training purposes.
+     */
+    public const TRAI_FLIG_NUMB = 'AHC';
+
+    /**
+     * Transaction reference number (TN)
+     *
+     * Reference applied to a transaction between two or more parties over a
+     * defined life cycle; e.g. number applied by importer or broker to obtain
+     * release from Customs, may then used to control declaration through final
+     * accounting (synonyms: declaration, entry number).
+     */
+    public const TRAN_REFE_NUMB = 'TN';
+
+    /**
+     * Transfer number (TF)
+     *
+     * An extra number assigned to goods or a container which functions as a
+     * reference number or as an authorization number to get the goods or
+     * container released from a certain party.
+     */
+    public const TRAN_NUMB = 'TF';
+
+    /**
+     * Transit (onward carriage) guarantee (bond) number (ABK)
+     *
+     * Reference number to identify the guarantee or security provided for Customs
+     * transit operation (CCC).
+     */
+    public const TRAN_ONWA_CARR_GUAR_BOND_NUMB = 'ABK';
+
+    /**
+     * Transport contract document identifier (AAS)
+     *
+     * [1188] Reference number to identify a document evidencing a transport
+     * contract.
+     */
+    public const TRAN_CONT_DOCU_IDEN = 'AAS';
+
+    /**
+     * Transport contract reference number (AHI)
+     *
+     * Reference number of a transport contract.
+     */
+    public const TRAN_CONT_REFE_NUMB = 'AHI';
+
+    /**
+     * Transport costs reference number (AKW)
+     *
+     * Reference number of the transport costs.
+     */
+    public const TRAN_COST_REFE_NUMB = 'AKW';
+
+    /**
+     * Transport equipment acceptance order reference (ATX)
+     *
+     * Reference number assigned to an order to accept transport equipment that is
+     * to be delivered by an inland carrier to a specified facility.
+     */
+    public const TRAN_EQUI_ACCE_ORDE_REFE = 'ATX';
+
+    /**
+     * Transport equipment gross mass verification order reference (VOR)
+     *
+     * Reference number identifying the order for obtaining a Verified Gross Mass
+     * (weight) of a packed transport equipment as per SOLAS Chapter VI,
+     * Regulation 2, paragraphs 4-6.
+     */
+    public const TRAN_EQUI_GROS_MASS_VERI_ORDE_REFE = 'VOR';
+
+    /**
+     * Transport equipment gross mass verification reference number (VGR)
+     *
+     * Reference number identifying the documentation of a transport equipment
+     * gross mass (weight) verification.
+     */
+    public const TRAN_EQUI_GROS_MASS_VERI_REFE_NUMB = 'VGR';
+
+    /**
+     * Transport equipment identifier (AAQ)
+     *
+     * [8260] To identify a piece if transport equipment e.g. container or unit
+     * load device.
+     */
+    public const TRAN_EQUI_IDEN = 'AAQ';
+
+    /**
+     * Transport equipment release order reference (ATY)
+     *
+     * Reference number assigned to an order to release transport equipment which
+     * is to be picked up by an inland carrier from a specified facility.
+     */
+    public const TRAN_EQUI_RELE_ORDE_REFE = 'ATY';
+
+    /**
+     * Transport equipment return reference (AKC)
+     *
+     * Reference known at the address to return equipment to.
+     */
+    public const TRAN_EQUI_RETU_REFE = 'AKC';
+
+    /**
+     * Transport equipment seal identifier (SN)
+     *
+     * [9308] The identification number of a seal affixed to a piece of transport
+     * equipment.
+     */
+    public const TRAN_EQUI_SEAL_IDEN = 'SN';
+
+    /**
+     * Transport equipment stripping order (AKX)
+     *
+     * Reference number assigned to the order to strip goods from transport
+     * equipment.
+     */
+    public const TRAN_EQUI_STRI_ORDE = 'AKX';
+
+    /**
+     * Transport equipment stuffing order (AKF)
+     *
+     * Reference number assigned to the order to stuff goods in transport
+     * equipment.
+     */
+    public const TRAN_EQUI_STUF_ORDE = 'AKF';
+
+    /**
+     * Transport equipment survey reference (AKD)
+     *
+     * Reference number assigned by the ordering party to the transport equipment
+     * survey order.
+     */
+    public const TRAN_EQUI_SURV_REFE = 'AKD';
+
+    /**
+     * Transport equipment survey reference number (AKU)
+     *
+     * Reference number known at the address where the transport equipment will be
+     * or has been surveyed.
+     */
+    public const TRAN_EQUI_SURV_REFE_NUMB = 'AKU';
+
+    /**
+     * Transport equipment survey report number (AKE)
+     *
+     * Reference number used by a party to identify its transport equipment survey
+     * report.
+     */
+    public const TRAN_EQUI_SURV_REPO_NUMB = 'AKE';
+
+    /**
+     * Transport instruction number (TIN)
+     *
+     * Reference number identifying a transport instruction.
+     */
+    public const TRAN_INST_NUMB = 'TIN';
+
+    /**
+     * Transport means journey identifier (CRN)
+     *
+     * [8028] To identify a journey of a means of transport, for example voyage
+     * number, flight number, trip number.
+     */
+    public const TRAN_MEAN_JOUR_IDEN = 'CRN';
+
+    /**
+     * Transport route (AEM)
+     *
+     * A predefined and identified sequence of points where goods are collected,
+     * agreed between partners, e.g. the party in charge of organizing the
+     * transport and the parties where goods will be collected. The same
+     * collecting points may be included in different transport routes, but in a
+     * different sequence.
+     */
+    public const TRAN_ROUT = 'AEM';
+
+    /**
+     * Transport section reference number (AIW)
+     *
+     * A number identifying a transport section.
+     */
+    public const TRAN_SECT_REFE_NUMB = 'AIW';
+
+    /**
+     * Transport status report number (AXK)
+     *
+     * [1125] A reference number identifying a transport status report.
+     */
+    public const TRAN_STAT_REPO_NUMB = 'AXK';
+
+    /**
+     * Transportation account number (AJZ)
+     *
+     * An account number to be charged or credited for transportation.
+     */
+    public const TRAN_ACCO_NUMB = 'AJZ';
+
+    /**
+     * Transportation Control Number (TCN) (AOW)
+     *
+     * A number assigned for transportation purposes.
+     */
+    public const TRAN_CONT_NUMB_TCN = 'AOW';
+
+    /**
+     * Transportation exportation no. for in bond movement (AFJ)
+     *
+     * A number that identifies the transportation exportation number for an in
+     * bond movement.
+     */
+    public const TRAN_EXPO_NO_FOR_IN_BOND_MOVE = 'AFJ';
+
+    /**
+     * Travel service (AUE)
+     *
+     * Reference identifying a travel service.
+     */
+    public const TRAV_SERV = 'AUE';
+
+    /**
+     * Treaty number (ADF)
+     *
+     * A number that identifies a treaty.
+     */
+    public const TREA_NUMB = 'ADF';
+
+    /**
+     * Trucker's bill of lading (TB)
+     *
+     * A cargo list/description issued by a motor carrier of freight.
+     */
+    public const TRUC_BILL_OF_LADI = 'TB';
+
+    /**
+     * U.S. Code of Federal Regulations (CFR) (AJB)
+     *
+     * A reference indicating a citation from the U.S. Code of Federal Regulations
+     * (CFR).
+     */
+    public const US_CODE_OF_FEDE_REGU_CFR = 'AJB';
+
+    /**
+     * U.S. Defense Federal Acquisition Regulation Supplement (AJD)
+     *
+     * A reference indicating a citation from the U.S. Defense Federal Acquisition
+     * Regulation Supplement.
+     */
+    public const US_DEFE_FEDE_ACQU_REGU_SUPP = 'AJD';
+
+    /**
+     * U.S. Department of Veterans Affairs Acquisition Regulation (AJN)
+     *
+     * A reference indicating a citation from the U.S. Department of Veterans
+     * Affairs Acquisition Regulation.
+     */
+    public const US_DEPA_OF_VETE_AFFA_ACQU_REGU = 'AJN';
+
+    /**
+     * U.S. Federal Acquisition Regulation (AJG)
+     *
+     * A reference indicating a citation from the U.S. Federal Acquisition
+     * Regulation.
+     */
+    public const US_FEDE_ACQU_REGU = 'AJG';
+
+    /**
+     * U.S. Federal Information Resources Management Regulation (AJI)
+     *
+     * A reference indicating a citation from U.S. Federal Information Resources
+     * Management Regulation.
+     */
+    public const US_FEDE_INFO_RESO_MANA_REGU = 'AJI';
+
+    /**
+     * U.S. General Services Administration Regulation (AJH)
+     *
+     * A reference indicating a citation from U.S. General Services Administration
+     * Regulation.
+     */
+    public const US_GENE_SERV_ADMI_REGU = 'AJH';
+
+    /**
+     * Ultimate customer's order number (UO)
+     *
+     * The originator's order number as forwarded in a sequence of parties
+     * involved.
+     */
+    public const ULTI_CUST_ORDE_NUMB = 'UO';
+
+    /**
+     * Ultimate customer's reference number (UC)
+     *
+     * The originator's reference number as forwarded in a sequence of parties
+     * involved.
+     */
+    public const ULTI_CUST_REFE_NUMB = 'UC';
+
+    /**
+     * Uniform Resource Identifier (URI)
+     *
+     * A string of characters used to identify a name of a resource on the
+     * worldwide web.
+     */
+    public const UNIF_RESO_IDEN = 'URI';
+
+    /**
+     * Unique claims reference number of the sender (ACT)
+     *
+     * A number that identifies the unique claims reference of the sender.
+     */
+    public const UNIQ_CLAI_REFE_NUMB_OF_THE_SEND = 'ACT';
+
+    /**
+     * Unique consignment reference number (UCN)
+     *
+     * [1202] Unique reference identifying a particular consignment of goods.
+     * Synonym: UCR, UCRN.
+     */
+    public const UNIQ_CONS_REFE_NUMB = 'UCN';
+
+    /**
+     * Unique goods shipment identifier (AVU)
+     *
+     * Unique identifier assigned to a shipment of goods linking trade, tracking
+     * and transport information.
+     */
+    public const UNIQ_GOOD_SHIP_IDEN = 'AVU';
+
+    /**
+     * Unique market reference (ADQ)
+     *
+     * A number that identifies a unique market.
+     */
+    public const UNIQ_MARK_REFE = 'ADQ';
+
+    /**
+     * United Nations Dangerous Goods identifier (UN)
+     *
+     * [7124] United Nations Dangerous Goods Identifier (UNDG) is the unique
+     * serial number assigned within the United Nations to substances and articles
+     * contained in a list of the dangerous goods most commonly carried.
+     */
+    public const UNIT_NATI_DANG_GOOD_IDEN = 'UN';
+
+    /**
+     * Upper number of range (UAR)
+     *
+     * Upper number in a range of numbers.
+     */
+    public const UPPE_NUMB_OF_RANG = 'UAR';
+
+    /**
+     * US Customs Service (USCS) entry code (AQM)
+     *
+     * An entry number assigned by the United States (US) customs service.
+     */
+    public const US_CUST_SERV_USCS_ENTR_CODE = 'AQM';
+
+    /**
+     * US government agency number (ACB)
+     *
+     * A number that identifies a United States Government agency.
+     */
+    public const US_GOVE_AGEN_NUMB = 'ACB';
+
+    /**
+     * US, Department of Transportation bond surety code (AMQ)
+     *
+     * A bond surety code assigned by the United States Department of
+     * Transportation (DOT).
+     */
+    public const US_DEPA_OF_TRAN_BOND_SURE_CODE = 'AMQ';
+
+    /**
+     * US, Federal Communications Commission (FCC) import condition number (AMS)
+     *
+     * A number known as the United States Federal Communications Commission (FCC)
+     * import condition number applying to certain types of regulated
+     * communications equipment.
+     */
+    public const US_FEDE_COMM_COMM_FCC_IMPO_COND_NUMB = 'AMS';
+
+    /**
+     * US, Food and Drug Administration establishment indicator (AMR)
+     *
+     * An establishment indicator assigned by the United States Food and Drug
+     * Administration.
+     */
+    public const US_FOOD_AND_DRUG_ADMI_ESTA_INDI = 'AMR';
+
+    /**
+     * VAT registration number (VA)
+     *
+     * Unique number assigned by the relevant tax authority to identify a party
+     * for use in relation to Value Added Tax (VAT).
+     */
+    public const VAT_REGI_NUMB = 'VA';
+
+    /**
+     * Vehicle Identification Number (VIN) (AKG)
+     *
+     * The identification number which uniquely distinguishes one vehicle from
+     * another through the lifespan of the vehicle.
+     */
+    public const VEHI_IDEN_NUMB_VIN = 'AKG';
+
+    /**
+     * Vehicle licence number (ABZ)
+     *
+     * Number of the licence issued for a vehicle by an agency of government.
+     */
+    public const VEHI_LICE_NUMB = 'ABZ';
+
+    /**
+     * Vendor contract number (VC)
+     *
+     * Number assigned by the vendor to a contract.
+     */
+    public const VEND_CONT_NUMB = 'VC';
+
+    /**
+     * Vendor ID number (VR)
+     *
+     * A number that identifies a vendor's identification.
+     */
+    public const VEND_ID_NUMB = 'VR';
+
+    /**
+     * Vendor order number suffix (VS)
+     *
+     * The suffix for a vendor order number.
+     */
+    public const VEND_ORDE_NUMB_SUFF = 'VS';
+
+    /**
+     * Vendor product number (VP)
+     *
+     * Number assigned by vendor to another manufacturer's product.
+     */
+    public const VEND_PROD_NUMB = 'VP';
+
+    /**
+     * Vessel identifier (VM)
+     *
+     * (8123) Reference identifying a vessel.
+     */
+    public const VESS_IDEN = 'VM';
+
+    /**
+     * Voucher number (VV)
+     *
+     * Reference number identifying a voucher.
+     */
+    public const VOUC_NUMB = 'VV';
+
+    /**
+     * Voyage number (VON)
+     *
+     * (8028) Reference number assigned to the voyage of the vessel.
+     */
+    public const VOYA_NUMB = 'VON';
+
+    /**
+     * Wage determination number (AJR)
+     *
+     * A number specifying a wage determination.
+     */
+    public const WAGE_DETE_NUMB = 'AJR';
+
+    /**
+     * Warehouse entry number (WE)
+     *
+     * Entry number under which imported merchandise was placed in a Customs
+     * bonded warehouse.
+     */
+    public const WARE_ENTR_NUMB = 'WE';
+
+    /**
+     * Warehouse receipt number (WR)
+     *
+     * A number identifying a warehouse receipt.
+     */
+    public const WARE_RECE_NUMB = 'WR';
+
+    /**
+     * Warehouse storage location number (WS)
+     *
+     * A number identifying a warehouse storage location.
+     */
+    public const WARE_STOR_LOCA_NUMB = 'WS';
+
+    /**
+     * Waybill number (AAM)
+     *
+     * Reference number assigned to a waybill, see: 1001 = 700.
+     */
+    public const WAYB_NUMB = 'AAM';
+
+    /**
+     * Weight agreement number (WM)
+     *
+     * A number identifying a weight agreement.
+     */
+    public const WEIG_AGRE_NUMB = 'WM';
+
+    /**
+     * Well number (WN)
+     *
+     * A number assigned to a shaft sunk into the ground.
+     */
+    public const WELL_NUMB = 'WN';
+
+    /**
+     * Wool identification number (AHQ)
+     *
+     * Shipping Identification Mark (SIM) allocated to a wool consignment by a
+     * shipping company.
+     */
+    public const WOOL_IDEN_NUMB = 'AHQ';
+
+    /**
+     * Wool tax reference number (AHR)
+     *
+     * Reference or indication of the payment of wool tax.
+     */
+    public const WOOL_TAX_REFE_NUMB = 'AHR';
+
+    /**
+     * Work breakdown structure (AOL)
+     *
+     * A structure reference that identifies the breakdown of work for a project.
+     */
+    public const WORK_BREA_STRU = 'AOL';
+
+    /**
+     * Work item quantity determination (AWF)
+     *
+     * A reference assigned to a work item quantity determination.
+     */
+    public const WORK_ITEM_QUAN_DETE = 'AWF';
+
+    /**
+     * Work order (AOV)
+     *
+     * Reference number for an order to do work.
+     */
+    public const WORK_ORDE = 'AOV';
+
+    /**
+     * Work package (AOS)
+     *
+     * A reference for a detailed package of work.
+     */
+    public const WORK_PACK = 'AOS';
+
+    /**
+     * Work shift (AOK)
+     *
+     * A work shift reference number.
+     */
+    public const WORK_SHIF = 'AOK';
+
+    /**
+     * Work task charge number (AON)
+     *
+     * A reference assigned to a specific work task charge.
+     */
+    public const WORK_TASK_CHAR_NUMB = 'AON';
+
+    /**
+     * Work team (AOP)
+     *
+     * A reference to identify a team performing work.
+     */
+    public const WORK_TEAM = 'AOP';
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdSchemeIdentifiers.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdSchemeIdentifiers.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdSchemeIdentifiers.php	(revision 8504)
@@ -25,45 +25,45 @@
      * SIRENE
      */
-    const ISO_6523_0002 = '0002';
+    public const ISO_6523_0002 = '0002';
 
     /**
      * Codification Numerique des Etablissments Financiers En Belgique
      */
-    const ISO_6523_0003 = '0003';
+    public const ISO_6523_0003 = '0003';
 
     /**
      * NBS/OSI NETWORK
      */
-    const ISO_6523_0004 = '0004';
+    public const ISO_6523_0004 = '0004';
 
     /**
      * USA FED GOV OSI NETWORK
      */
-    const ISO_6523_0005 = '0005';
+    public const ISO_6523_0005 = '0005';
 
     /**
      * USA DOD OSI NETWORK
      */
-    const ISO_6523_0006 = '0006';
+    public const ISO_6523_0006 = '0006';
 
     /**
      * Organisationsnummer
      */
-    const ISO_6523_0007 = '0007';
+    public const ISO_6523_0007 = '0007';
 
     /**
      * LE NUMERO NATIONAL
      */
-    const ISO_6523_0008 = '0008';
+    public const ISO_6523_0008 = '0008';
 
     /**
      * SIRET-CODE
      */
-    const ISO_6523_0009 = '0009';
+    public const ISO_6523_0009 = '0009';
 
     /**
      * Organizational Identifiers for Structured Names under ISO 9541 Part 2
      */
-    const ISO_6523_0010 = '0010';
+    public const ISO_6523_0010 = '0010';
 
     /**
@@ -71,50 +71,50 @@
      * Amateur Radio Organizations, Network Objects and Application Services.
      */
-    const ISO_6523_0011 = '0011';
+    public const ISO_6523_0011 = '0011';
 
     /**
      * European Computer Manufacturers Association: ECMA
      */
-    const ISO_6523_0012 = '0012';
+    public const ISO_6523_0012 = '0012';
 
     /**
      * VSA FTP CODE (FTP = File Transfer Protocol)
      */
-    const ISO_6523_0013 = '0013';
+    public const ISO_6523_0013 = '0013';
 
     /**
      * NIST/OSI Implememts' Workshop
      */
-    const ISO_6523_0014 = '0014';
+    public const ISO_6523_0014 = '0014';
 
     /**
      * Electronic Data Interchange: EDI
      */
-    const ISO_6523_0015 = '0015';
+    public const ISO_6523_0015 = '0015';
 
     /**
      * EWOS Object Identifiers
      */
-    const ISO_6523_0016 = '0016';
+    public const ISO_6523_0016 = '0016';
 
     /**
      * COMMON LANGUAGE
      */
-    const ISO_6523_0017 = '0017';
+    public const ISO_6523_0017 = '0017';
 
     /**
      * SNA/OSI Network
      */
-    const ISO_6523_0018 = '0018';
+    public const ISO_6523_0018 = '0018';
 
     /**
      * Air Transport Industry Services Communications Network
      */
-    const ISO_6523_0019 = '0019';
+    public const ISO_6523_0019 = '0019';
 
     /**
      * European Laboratory for Particle Physics: CERN
      */
-    const ISO_6523_0020 = '0020';
+    public const ISO_6523_0020 = '0020';
 
     /**
@@ -122,305 +122,305 @@
      * S.W.I.F.T.
      */
-    const ISO_6523_0021 = '0021';
+    public const ISO_6523_0021 = '0021';
 
     /**
      * OSF Distributed Computing Object Identification
      */
-    const ISO_6523_0022 = '0022';
+    public const ISO_6523_0022 = '0022';
 
     /**
      * Nordic University and Research Network: NORDUnet
      */
-    const ISO_6523_0023 = '0023';
+    public const ISO_6523_0023 = '0023';
 
     /**
      * Digital Equipment Corporation: DEC
      */
-    const ISO_6523_0024 = '0024';
+    public const ISO_6523_0024 = '0024';
 
     /**
      * OSI ASIA-OCEANIA WORKSHOP
      */
-    const ISO_6523_0025 = '0025';
+    public const ISO_6523_0025 = '0025';
 
     /**
      * NATO ISO 6523 ICDE coding scheme
      */
-    const ISO_6523_0026 = '0026';
+    public const ISO_6523_0026 = '0026';
 
     /**
      * Aeronautical Telecommunications Network (ATN)
      */
-    const ISO_6523_0027 = '0027';
+    public const ISO_6523_0027 = '0027';
 
     /**
      * International Standard ISO 6523
      */
-    const ISO_6523_0028 = '0028';
+    public const ISO_6523_0028 = '0028';
 
     /**
      * The All-Union Classifier of Enterprises and Organisations
      */
-    const ISO_6523_0029 = '0029';
+    public const ISO_6523_0029 = '0029';
 
     /**
      * AT&T/OSI Network
      */
-    const ISO_6523_0030 = '0030';
+    public const ISO_6523_0030 = '0030';
 
     /**
      * EDI Partner Identification Code
      */
-    const ISO_6523_0031 = '0031';
+    public const ISO_6523_0031 = '0031';
 
     /**
      * Telecom Australia
      */
-    const ISO_6523_0032 = '0032';
+    public const ISO_6523_0032 = '0032';
 
     /**
      * S G W OSI Internetwork
      */
-    const ISO_6523_0033 = '0033';
+    public const ISO_6523_0033 = '0033';
 
     /**
      * Reuter Open Address Standard
      */
-    const ISO_6523_0034 = '0034';
+    public const ISO_6523_0034 = '0034';
 
     /**
      * ISO 6523 - ICD
      */
-    const ISO_6523_0035 = '0035';
+    public const ISO_6523_0035 = '0035';
 
     /**
      * TeleTrust Object Identifiers
      */
-    const ISO_6523_0036 = '0036';
+    public const ISO_6523_0036 = '0036';
 
     /**
      * LY-tunnus
      */
-    const ISO_6523_0037 = '0037';
+    public const ISO_6523_0037 = '0037';
 
     /**
      * The Australian GOSIP Network
      */
-    const ISO_6523_0038 = '0038';
+    public const ISO_6523_0038 = '0038';
 
     /**
      * The OZ DOD OSI Network
      */
-    const ISO_6523_0039 = '0039';
+    public const ISO_6523_0039 = '0039';
 
     /**
      * Unilever Group Companies
      */
-    const ISO_6523_0040 = '0040';
+    public const ISO_6523_0040 = '0040';
 
     /**
      * Citicorp Global Information Network
      */
-    const ISO_6523_0041 = '0041';
+    public const ISO_6523_0041 = '0041';
 
     /**
      * DBP Telekom Object Identifiers
      */
-    const ISO_6523_0042 = '0042';
+    public const ISO_6523_0042 = '0042';
 
     /**
      * HydroNETT
      */
-    const ISO_6523_0043 = '0043';
+    public const ISO_6523_0043 = '0043';
 
     /**
      * Thai Industrial Standards Institute (TISI)
      */
-    const ISO_6523_0044 = '0044';
+    public const ISO_6523_0044 = '0044';
 
     /**
      * ICI Company Identification System
      */
-    const ISO_6523_0045 = '0045';
+    public const ISO_6523_0045 = '0045';
 
     /**
      * FUNLOC
      */
-    const ISO_6523_0046 = '0046';
+    public const ISO_6523_0046 = '0046';
 
     /**
      * BULL ODI/DSA/UNIX Network
      */
-    const ISO_6523_0047 = '0047';
+    public const ISO_6523_0047 = '0047';
 
     /**
      * OSINZ
      */
-    const ISO_6523_0048 = '0048';
+    public const ISO_6523_0048 = '0048';
 
     /**
      * Auckland Area Health
      */
-    const ISO_6523_0049 = '0049';
+    public const ISO_6523_0049 = '0049';
 
     /**
      * Firmenich
      */
-    const ISO_6523_0050 = '0050';
+    public const ISO_6523_0050 = '0050';
 
     /**
      * AGFA-DIS
      */
-    const ISO_6523_0051 = '0051';
+    public const ISO_6523_0051 = '0051';
 
     /**
      * Society of Motion Picture and Television Engineers (SMPTE)
      */
-    const ISO_6523_0052 = '0052';
+    public const ISO_6523_0052 = '0052';
 
     /**
      * Migros_Network M_NETOPZ
      */
-    const ISO_6523_0053 = '0053';
+    public const ISO_6523_0053 = '0053';
 
     /**
      * ISO6523 - ICDPCR
      */
-    const ISO_6523_0054 = '0054';
+    public const ISO_6523_0054 = '0054';
 
     /**
      * Energy Net
      */
-    const ISO_6523_0055 = '0055';
+    public const ISO_6523_0055 = '0055';
 
     /**
      * Nokia Object Identifiers (NOI)
      */
-    const ISO_6523_0056 = '0056';
+    public const ISO_6523_0056 = '0056';
 
     /**
      * Saint Gobain
      */
-    const ISO_6523_0057 = '0057';
+    public const ISO_6523_0057 = '0057';
 
     /**
      * Siemens Corporate Network
      */
-    const ISO_6523_0058 = '0058';
+    public const ISO_6523_0058 = '0058';
 
     /**
      * DANZNET
      */
-    const ISO_6523_0059 = '0059';
+    public const ISO_6523_0059 = '0059';
 
     /**
      * Data Universal Numbering System (D-U-N-S Number)
      */
-    const ISO_6523_0060 = '0060';
+    public const ISO_6523_0060 = '0060';
 
     /**
      * SOFFEX OSI
      */
-    const ISO_6523_0061 = '0061';
+    public const ISO_6523_0061 = '0061';
 
     /**
      * KPN OVN
      */
-    const ISO_6523_0062 = '0062';
+    public const ISO_6523_0062 = '0062';
 
     /**
      * ascomOSINet
      */
-    const ISO_6523_0063 = '0063';
+    public const ISO_6523_0063 = '0063';
 
     /**
      * UTC: Uniforme Transport Code
      */
-    const ISO_6523_0064 = '0064';
+    public const ISO_6523_0064 = '0064';
 
     /**
      * SOLVAY OSI CODING
      */
-    const ISO_6523_0065 = '0065';
+    public const ISO_6523_0065 = '0065';
 
     /**
      * Roche Corporate Network
      */
-    const ISO_6523_0066 = '0066';
+    public const ISO_6523_0066 = '0066';
 
     /**
      * ZellwegerOSINet
      */
-    const ISO_6523_0067 = '0067';
+    public const ISO_6523_0067 = '0067';
 
     /**
      * Intel Corporation OSI
      */
-    const ISO_6523_0068 = '0068';
+    public const ISO_6523_0068 = '0068';
 
     /**
      * SITA Object Identifier Tree
      */
-    const ISO_6523_0069 = '0069';
+    public const ISO_6523_0069 = '0069';
 
     /**
      * DaimlerChrysler Corporate Network
      */
-    const ISO_6523_0070 = '0070';
+    public const ISO_6523_0070 = '0070';
 
     /**
      * LEGO /OSI NETWORK
      */
-    const ISO_6523_0071 = '0071';
+    public const ISO_6523_0071 = '0071';
 
     /**
      * NAVISTAR/OSI Network
      */
-    const ISO_6523_0072 = '0072';
+    public const ISO_6523_0072 = '0072';
 
     /**
      * ICD Formatted ATM address
      */
-    const ISO_6523_0073 = '0073';
+    public const ISO_6523_0073 = '0073';
 
     /**
      * ARINC
      */
-    const ISO_6523_0074 = '0074';
+    public const ISO_6523_0074 = '0074';
 
     /**
      * Alcanet/Alcatel-Alsthom Corporate Network
      */
-    const ISO_6523_0075 = '0075';
+    public const ISO_6523_0075 = '0075';
 
     /**
      * Sistema Italiano di Identificazione di ogetti gestito da UNINFO
      */
-    const ISO_6523_0076 = '0076';
+    public const ISO_6523_0076 = '0076';
 
     /**
      * Sistema Italiano di Indirizzamento di Reti OSI Gestito da UNINFO
      */
-    const ISO_6523_0077 = '0077';
+    public const ISO_6523_0077 = '0077';
 
     /**
      * Mitel terminal or switching equipment
      */
-    const ISO_6523_0078 = '0078';
+    public const ISO_6523_0078 = '0078';
 
     /**
      * ATM Forum
      */
-    const ISO_6523_0079 = '0079';
+    public const ISO_6523_0079 = '0079';
 
     /**
      * UK National Health Service Scheme, (EDIRA compliant)
      */
-    const ISO_6523_0080 = '0080';
+    public const ISO_6523_0080 = '0080';
 
     /**
      * International NSAP
      */
-    const ISO_6523_0081 = '0081';
+    public const ISO_6523_0081 = '0081';
 
     /**
@@ -428,20 +428,20 @@
      * scheme (EDIRA compliant)
      */
-    const ISO_6523_0082 = '0082';
+    public const ISO_6523_0082 = '0082';
 
     /**
      * Advanced Telecommunications Modules Limited, Corporate Network
      */
-    const ISO_6523_0083 = '0083';
+    public const ISO_6523_0083 = '0083';
 
     /**
      * Athens Chamber of Commerce & Industry Scheme (EDIRA compliant)
      */
-    const ISO_6523_0084 = '0084';
+    public const ISO_6523_0084 = '0084';
 
     /**
      * Swiss Chambers of Commerce Scheme (EDIRA) compliant
      */
-    const ISO_6523_0085 = '0085';
+    public const ISO_6523_0085 = '0085';
 
     /**
@@ -449,5 +449,5 @@
      * (EDIRA compliant)
      */
-    const ISO_6523_0086 = '0086';
+    public const ISO_6523_0086 = '0086';
 
     /**
@@ -455,10 +455,10 @@
      * Scheme (EDIRA compliant)
      */
-    const ISO_6523_0087 = '0087';
+    public const ISO_6523_0087 = '0087';
 
     /**
      * EAN Location Code
      */
-    const ISO_6523_0088 = '0088';
+    public const ISO_6523_0088 = '0088';
 
     /**
@@ -466,75 +466,75 @@
      * compliant)
      */
-    const ISO_6523_0089 = '0089';
+    public const ISO_6523_0089 = '0089';
 
     /**
      * Internet IP addressing - ISO 6523 ICD encoding
      */
-    const ISO_6523_0090 = '0090';
+    public const ISO_6523_0090 = '0090';
 
     /**
      * Cisco Sysytems / OSI Network
      */
-    const ISO_6523_0091 = '0091';
+    public const ISO_6523_0091 = '0091';
 
     /**
      * Revenue Canada Business Number Registration (EDIRA compliant)
      */
-    const ISO_6523_0093 = '0093';
+    public const ISO_6523_0093 = '0093';
 
     /**
      * DEUTSCHER INDUSTRIE- UND HANDELSTAG (DIHT) Scheme (EDIRA compliant)
      */
-    const ISO_6523_0094 = '0094';
+    public const ISO_6523_0094 = '0094';
 
     /**
      * Hewlett - Packard Company Internal AM Network
      */
-    const ISO_6523_0095 = '0095';
+    public const ISO_6523_0095 = '0095';
 
     /**
      * DANISH CHAMBER OF COMMERCE Scheme (EDIRA compliant)
      */
-    const ISO_6523_0096 = '0096';
+    public const ISO_6523_0096 = '0096';
 
     /**
      * FTI - Ediforum Italia, (EDIRA compliant)
      */
-    const ISO_6523_0097 = '0097';
+    public const ISO_6523_0097 = '0097';
 
     /**
      * CHAMBER OF COMMERCE TEL AVIV-JAFFA Scheme (EDIRA compliant)
      */
-    const ISO_6523_0098 = '0098';
+    public const ISO_6523_0098 = '0098';
 
     /**
      * Siemens Supervisory Systems Network
      */
-    const ISO_6523_0099 = '0099';
+    public const ISO_6523_0099 = '0099';
 
     /**
      * PNG_ICD Scheme
      */
-    const ISO_6523_0100 = '0100';
+    public const ISO_6523_0100 = '0100';
 
     /**
      * South African Code Allocation
      */
-    const ISO_6523_0101 = '0101';
+    public const ISO_6523_0101 = '0101';
 
     /**
      * HEAG
      */
-    const ISO_6523_0102 = '0102';
+    public const ISO_6523_0102 = '0102';
 
     /**
      * BT - ICD Coding System
      */
-    const ISO_6523_0104 = '0104';
+    public const ISO_6523_0104 = '0104';
 
     /**
      * Portuguese Chamber of Commerce and Industry Scheme (EDIRA compliant)
      */
-    const ISO_6523_0105 = '0105';
+    public const ISO_6523_0105 = '0105';
 
     /**
@@ -543,5 +543,5 @@
      * Scheme (EDIRA compliant)
      */
-    const ISO_6523_0106 = '0106';
+    public const ISO_6523_0106 = '0106';
 
     /**
@@ -549,85 +549,85 @@
      * compliant)
      */
-    const ISO_6523_0107 = '0107';
+    public const ISO_6523_0107 = '0107';
 
     /**
      * Australian Chambers of Commerce and Industry Scheme (EDIRA compliant)
      */
-    const ISO_6523_0108 = '0108';
+    public const ISO_6523_0108 = '0108';
 
     /**
      * BellSouth ICD AESA (ATM End System Address)
      */
-    const ISO_6523_0109 = '0109';
+    public const ISO_6523_0109 = '0109';
 
     /**
      * Bell Atlantic
      */
-    const ISO_6523_0110 = '0110';
+    public const ISO_6523_0110 = '0110';
 
     /**
      * Object Identifiers
      */
-    const ISO_6523_0111 = '0111';
+    public const ISO_6523_0111 = '0111';
 
     /**
      * ISO register for Standards producing Organizations
      */
-    const ISO_6523_0112 = '0112';
+    public const ISO_6523_0112 = '0112';
 
     /**
      * OriginNet
      */
-    const ISO_6523_0113 = '0113';
+    public const ISO_6523_0113 = '0113';
 
     /**
      * Check Point Software Technologies
      */
-    const ISO_6523_0114 = '0114';
+    public const ISO_6523_0114 = '0114';
 
     /**
      * Pacific Bell Data Communications Network
      */
-    const ISO_6523_0115 = '0115';
+    public const ISO_6523_0115 = '0115';
 
     /**
      * PSS Object Identifiers
      */
-    const ISO_6523_0116 = '0116';
+    public const ISO_6523_0116 = '0116';
 
     /**
      * STENTOR-ICD CODING SYSTEM
      */
-    const ISO_6523_0117 = '0117';
+    public const ISO_6523_0117 = '0117';
 
     /**
      * ATM-Network ZN'96
      */
-    const ISO_6523_0118 = '0118';
+    public const ISO_6523_0118 = '0118';
 
     /**
      * MCI / OSI Network
      */
-    const ISO_6523_0119 = '0119';
+    public const ISO_6523_0119 = '0119';
 
     /**
      * Advantis
      */
-    const ISO_6523_0120 = '0120';
+    public const ISO_6523_0120 = '0120';
 
     /**
      * Affable Software Data Interchange Codes
      */
-    const ISO_6523_0121 = '0121';
+    public const ISO_6523_0121 = '0121';
 
     /**
      * BB-DATA GmbH
      */
-    const ISO_6523_0122 = '0122';
+    public const ISO_6523_0122 = '0122';
 
     /**
      * BASF Company ATM-Network
      */
-    const ISO_6523_0123 = '0123';
+    public const ISO_6523_0123 = '0123';
 
     /**
@@ -635,105 +635,105 @@
      * using the ICD system format defined in ISO/IEC 8348
      */
-    const ISO_6523_0124 = '0124';
+    public const ISO_6523_0124 = '0124';
 
     /**
      * Henkel Corporate Network (H-Net)
      */
-    const ISO_6523_0125 = '0125';
+    public const ISO_6523_0125 = '0125';
 
     /**
      * GTE/OSI Network
      */
-    const ISO_6523_0126 = '0126';
+    public const ISO_6523_0126 = '0126';
 
     /**
      * Dresdner Bank Corporate Network
      */
-    const ISO_6523_0127 = '0127';
+    public const ISO_6523_0127 = '0127';
 
     /**
      * BCNR (Swiss Clearing Bank Number)
      */
-    const ISO_6523_0128 = '0128';
+    public const ISO_6523_0128 = '0128';
 
     /**
      * BPI (Swiss Business Partner Identification) code
      */
-    const ISO_6523_0129 = '0129';
+    public const ISO_6523_0129 = '0129';
 
     /**
      * Directorates of the European Commission
      */
-    const ISO_6523_0130 = '0130';
+    public const ISO_6523_0130 = '0130';
 
     /**
      * Code for the Identification of National Organizations
      */
-    const ISO_6523_0131 = '0131';
+    public const ISO_6523_0131 = '0131';
 
     /**
      * Certicom Object Identifiers
      */
-    const ISO_6523_0132 = '0132';
+    public const ISO_6523_0132 = '0132';
 
     /**
      * TC68 OID
      */
-    const ISO_6523_0133 = '0133';
+    public const ISO_6523_0133 = '0133';
 
     /**
      * Infonet Services Corporation
      */
-    const ISO_6523_0134 = '0134';
+    public const ISO_6523_0134 = '0134';
 
     /**
      * SIA Object Identifiers
      */
-    const ISO_6523_0135 = '0135';
+    public const ISO_6523_0135 = '0135';
 
     /**
      * Cable & Wireless Global ATM End-System Address Plan
      */
-    const ISO_6523_0136 = '0136';
+    public const ISO_6523_0136 = '0136';
 
     /**
      * Global AESA scheme
      */
-    const ISO_6523_0137 = '0137';
+    public const ISO_6523_0137 = '0137';
 
     /**
      * France Telecom ATM End System Address Plan
      */
-    const ISO_6523_0138 = '0138';
+    public const ISO_6523_0138 = '0138';
 
     /**
      * Savvis Communications AESA:.
      */
-    const ISO_6523_0139 = '0139';
+    public const ISO_6523_0139 = '0139';
 
     /**
      * Toshiba Organizations, Partners, And Suppliers' (TOPAS) Code
      */
-    const ISO_6523_0140 = '0140';
+    public const ISO_6523_0140 = '0140';
 
     /**
      * NATO Commercial and Government Entity system
      */
-    const ISO_6523_0141 = '0141';
+    public const ISO_6523_0141 = '0141';
 
     /**
      * SECETI Object Identifiers
      */
-    const ISO_6523_0142 = '0142';
+    public const ISO_6523_0142 = '0142';
 
     /**
      * EINESTEINet AG
      */
-    const ISO_6523_0143 = '0143';
+    public const ISO_6523_0143 = '0143';
 
     /**
      * DoDAAC (Department of Defense Activity Address Code)
      */
-    const ISO_6523_0144 = '0144';
+    public const ISO_6523_0144 = '0144';
 
     /**
@@ -741,15 +741,15 @@
      * accounting identification scheme
      */
-    const ISO_6523_0145 = '0145';
+    public const ISO_6523_0145 = '0145';
 
     /**
      * DGI (Direction GÃ©nÃ©rale des Impots) code
      */
-    const ISO_6523_0146 = '0146';
+    public const ISO_6523_0146 = '0146';
 
     /**
      * Standard Company Code
      */
-    const ISO_6523_0147 = '0147';
+    public const ISO_6523_0147 = '0147';
 
     /**
@@ -757,50 +757,50 @@
      * Identification Codes (DNIC)
      */
-    const ISO_6523_0148 = '0148';
+    public const ISO_6523_0148 = '0148';
 
     /**
      * Global Business Identifier
      */
-    const ISO_6523_0149 = '0149';
+    public const ISO_6523_0149 = '0149';
 
     /**
      * Madge Networks Ltd- ICD ATM Addressing Scheme
      */
-    const ISO_6523_0150 = '0150';
+    public const ISO_6523_0150 = '0150';
 
     /**
      * Australian Business Number (ABN) Scheme
      */
-    const ISO_6523_0151 = '0151';
+    public const ISO_6523_0151 = '0151';
 
     /**
      * Edira Scheme Identifier Code
      */
-    const ISO_6523_0152 = '0152';
+    public const ISO_6523_0152 = '0152';
 
     /**
      * Concert Global Network Services ICD AESA
      */
-    const ISO_6523_0153 = '0153';
+    public const ISO_6523_0153 = '0153';
 
     /**
      * Identification number of economic subjects: (ICO)
      */
-    const ISO_6523_0154 = '0154';
+    public const ISO_6523_0154 = '0154';
 
     /**
      * Global Crossing AESA (ATM End System Address)
      */
-    const ISO_6523_0155 = '0155';
+    public const ISO_6523_0155 = '0155';
 
     /**
      * AUNA
      */
-    const ISO_6523_0156 = '0156';
+    public const ISO_6523_0156 = '0156';
 
     /**
      * ATM interconnection with the Dutch KPN Telecom
      */
-    const ISO_6523_0157 = '0157';
+    public const ISO_6523_0157 = '0157';
 
     /**
@@ -808,55 +808,55 @@
      * Statistics of 29 November 2'001, Â§ 27
      */
-    const ISO_6523_0158 = '0158';
+    public const ISO_6523_0158 = '0158';
 
     /**
      * ACTALIS Object Identifiers
      */
-    const ISO_6523_0159 = '0159';
+    public const ISO_6523_0159 = '0159';
 
     /**
      * GTIN - Global Trade Item Number
      */
-    const ISO_6523_0160 = '0160';
+    public const ISO_6523_0160 = '0160';
 
     /**
      * ECCMA Open Technical Directory
      */
-    const ISO_6523_0161 = '0161';
+    public const ISO_6523_0161 = '0161';
 
     /**
      * CEN/ISSS Object Identifier Scheme
      */
-    const ISO_6523_0162 = '0162';
+    public const ISO_6523_0162 = '0162';
 
     /**
      * US-EPA Facility Identifier
      */
-    const ISO_6523_0163 = '0163';
+    public const ISO_6523_0163 = '0163';
 
     /**
      * TELUS Corporation
      */
-    const ISO_6523_0164 = '0164';
+    public const ISO_6523_0164 = '0164';
 
     /**
      * FIEIE Object identifiers
      */
-    const ISO_6523_0165 = '0165';
+    public const ISO_6523_0165 = '0165';
 
     /**
      * Swissguide Identifier Scheme
      */
-    const ISO_6523_0166 = '0166';
+    public const ISO_6523_0166 = '0166';
 
     /**
      * Priority Telecom ATM End System Address Plan
      */
-    const ISO_6523_0167 = '0167';
+    public const ISO_6523_0167 = '0167';
 
     /**
      * Vodafone Ireland OSI Addressing
      */
-    const ISO_6523_0168 = '0168';
+    public const ISO_6523_0168 = '0168';
 
     /**
@@ -864,10 +864,10 @@
      * Index (zefix) Identification Number
      */
-    const ISO_6523_0169 = '0169';
+    public const ISO_6523_0169 = '0169';
 
     /**
      * Teikoku Company Code
      */
-    const ISO_6523_0170 = '0170';
+    public const ISO_6523_0170 = '0170';
 
     /**
@@ -875,50 +875,50 @@
      * Statement) Index
      */
-    const ISO_6523_0171 = '0171';
+    public const ISO_6523_0171 = '0171';
 
     /**
      * Project Group âLists of Propertiesâ (PROLISTÂ®)
      */
-    const ISO_6523_0172 = '0172';
+    public const ISO_6523_0172 = '0172';
 
     /**
      * eCI@ss
      */
-    const ISO_6523_0173 = '0173';
+    public const ISO_6523_0173 = '0173';
 
     /**
      * StepNexus
      */
-    const ISO_6523_0174 = '0174';
+    public const ISO_6523_0174 = '0174';
 
     /**
      * Siemens AG
      */
-    const ISO_6523_0175 = '0175';
+    public const ISO_6523_0175 = '0175';
 
     /**
      * Paradine GmbH
      */
-    const ISO_6523_0176 = '0176';
+    public const ISO_6523_0176 = '0176';
 
     /**
      * Odette International Limited
      */
-    const ISO_6523_0177 = '0177';
+    public const ISO_6523_0177 = '0177';
 
     /**
      * Route1 MobiNET
      */
-    const ISO_6523_0178 = '0178';
+    public const ISO_6523_0178 = '0178';
 
     /**
      * Penango Object Identifiers
      */
-    const ISO_6523_0179 = '0179';
+    public const ISO_6523_0179 = '0179';
 
     /**
      * Lithuanian military PKI
      */
-    const ISO_6523_0180 = '0180';
+    public const ISO_6523_0180 = '0180';
 
     /**
@@ -926,155 +926,154 @@
      * Business Identification Number (UIDB)
      */
-    const ISO_6523_0183 = '0183';
+    public const ISO_6523_0183 = '0183';
 
     /**
      * DIGSTORG
      */
-    const ISO_6523_0184 = '0184';
+    public const ISO_6523_0184 = '0184';
 
     /**
      * Perceval Object Code
      */
-    const ISO_6523_0185 = '0185';
+    public const ISO_6523_0185 = '0185';
 
     /**
      * TrustPoint Object Identifiers
      */
-    const ISO_6523_0186 = '0186';
+    public const ISO_6523_0186 = '0186';
 
     /**
      * Amazon Unique Identification Scheme
      */
-    const ISO_6523_0187 = '0187';
+    public const ISO_6523_0187 = '0187';
 
     /**
      * Corporate Number of The Social Security and Tax Number System
      */
-    const ISO_6523_0188 = '0188';
+    public const ISO_6523_0188 = '0188';
 
     /**
      * European Business Identifier (EBID)
      */
-    const ISO_6523_0189 = '0189';
+    public const ISO_6523_0189 = '0189';
 
     /**
      * Organisatie Indentificatie Nummer (OIN)
      */
-    const ISO_6523_0190 = '0190';
+    public const ISO_6523_0190 = '0190';
 
     /**
      * Company Code (Estonia)
      */
-    const ISO_6523_0191 = '0191';
+    public const ISO_6523_0191 = '0191';
 
     /**
      * Organisasjonsnummer
      */
-    const ISO_6523_0192 = '0192';
+    public const ISO_6523_0192 = '0192';
 
     /**
      * UBL.BE Party Identifier
      */
-    const ISO_6523_0193 = '0193';
+    public const ISO_6523_0193 = '0193';
 
     /**
      * KOIOS Open Technical Dictionary
      */
-    const ISO_6523_0194 = '0194';
+    public const ISO_6523_0194 = '0194';
 
     /**
      * Singapore Nationwide E-lnvoice Framework
      */
-    const ISO_6523_0195 = '0195';
+    public const ISO_6523_0195 = '0195';
 
     /**
      * Icelandic identifier - Ãslensk kennitala
      */
-    const ISO_6523_0196 = '0196';
+    public const ISO_6523_0196 = '0196';
 
     /**
      * Name not known
      */
-    const ISO_6523_0197 = '0197';
+    public const ISO_6523_0197 = '0197';
 
     /**
      * ERSTORG
      */
-    const ISO_6523_0198 = '0198';
+    public const ISO_6523_0198 = '0198';
 
     /**
      * Legal Entity Identifier (LEI)
      */
-    const ISO_6523_0199 = '0199';
+    public const ISO_6523_0199 = '0199';
 
     /**
      * Legal entity code (Lithuania)
      */
-    const ISO_6523_0200 = '0200';
+    public const ISO_6523_0200 = '0200';
 
     /**
      * Codice Univoco UnitÃ  Organizzativa iPA
      */
-    const ISO_6523_0201 = '0201';
+    public const ISO_6523_0201 = '0201';
 
     /**
      * Indirizzo di Posta Elettronica Certificata
      */
-    const ISO_6523_0202 = '0202';
+    public const ISO_6523_0202 = '0202';
 
     /**
      * eDelivery Network Participant identifier
      */
-    const ISO_6523_0203 = '0203';
+    public const ISO_6523_0203 = '0203';
 
     /**
      * Leitweg-ID
      */
-    const ISO_6523_0204 = '0204';
+    public const ISO_6523_0204 = '0204';
 
     /**
      * CODDEST
      */
-    const ISO_6523_0205 = '0205';
+    public const ISO_6523_0205 = '0205';
 
     /**
      * Registre du Commerce et de lâIndustrie : RCI
-     */ 
-    const ISO_6523_0206 = '0206';
+     */
+    public const ISO_6523_0206 = '0206';
 
     /**
      * PiLog Ontology Codification Identifier (POCI)
      */
-    const ISO_6523_0207 = '0207';
+    public const ISO_6523_0207 = '0207';
 
     /**
      * Numero d'entreprise / ondernemingsnummer / Unternehmensnummer
      */
-    const ISO_6523_0208 = '0208';
+    public const ISO_6523_0208 = '0208';
 
     /**
      * GS1 identification keys
      */
-    const ISO_6523_0209 = '0209';
+    public const ISO_6523_0209 = '0209';
 
     /**
      * CODICE FISCALE
      */
-    const ISO_6523_0210 = '0210';
+    public const ISO_6523_0210 = '0210';
 
     /**
      * PARTITA IVA
      */
-    const ISO_6523_0211 = '0211';
+    public const ISO_6523_0211 = '0211';
 
     /**
      * Finnish Organization Identifier
      */
-    const ISO_6523_0212 = '0212';
-    
+    public const ISO_6523_0212 = '0212';
+
     /**
      * Finnish Organization Value Add Tax Identifier
      */
-    const ISO_6523_0213 = '0213';
-    
+    public const ISO_6523_0213 = '0213';
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdTextSubjectCodeQualifiers.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdTextSubjectCodeQualifiers.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdTextSubjectCodeQualifiers.php	(revision 8504)
@@ -24,1914 +24,1914 @@
      * Goods item description
      */
-    const UNTDID_4451_AAA = 'AAA';
+    public const UNTDID_4451_AAA = 'AAA';
 
     /**
      * Payment term
      */
-    const UNTDID_4451_AAB = 'AAB';
+    public const UNTDID_4451_AAB = 'AAB';
 
     /**
      * Dangerous goods additional information
      */
-    const UNTDID_4451_AAC = 'AAC';
+    public const UNTDID_4451_AAC = 'AAC';
 
     /**
      * Dangerous goods technical name
      */
-    const UNTDID_4451_AAD = 'AAD';
+    public const UNTDID_4451_AAD = 'AAD';
 
     /**
      * Acknowledgement description
      */
-    const UNTDID_4451_AAE = 'AAE';
+    public const UNTDID_4451_AAE = 'AAE';
 
     /**
      * Rate additional information
      */
-    const UNTDID_4451_AAF = 'AAF';
+    public const UNTDID_4451_AAF = 'AAF';
 
     /**
      * Party instructions
      */
-    const UNTDID_4451_AAG = 'AAG';
+    public const UNTDID_4451_AAG = 'AAG';
 
     /**
      * General information
      */
-    const UNTDID_4451_AAI = 'AAI';
+    public const UNTDID_4451_AAI = 'AAI';
 
     /**
      * Additional conditions of sale/purchase
      */
-    const UNTDID_4451_AAJ = 'AAJ';
+    public const UNTDID_4451_AAJ = 'AAJ';
 
     /**
      * Price conditions
      */
-    const UNTDID_4451_AAK = 'AAK';
+    public const UNTDID_4451_AAK = 'AAK';
 
     /**
      * Goods dimensions in characters
      */
-    const UNTDID_4451_AAL = 'AAL';
+    public const UNTDID_4451_AAL = 'AAL';
 
     /**
      * Equipment re-usage restrictions
      */
-    const UNTDID_4451_AAM = 'AAM';
+    public const UNTDID_4451_AAM = 'AAM';
 
     /**
      * Handling restriction
      */
-    const UNTDID_4451_AAN = 'AAN';
+    public const UNTDID_4451_AAN = 'AAN';
 
     /**
      * Error description (free text)
      */
-    const UNTDID_4451_AAO = 'AAO';
+    public const UNTDID_4451_AAO = 'AAO';
 
     /**
      * Response (free text)
      */
-    const UNTDID_4451_AAP = 'AAP';
+    public const UNTDID_4451_AAP = 'AAP';
 
     /**
      * Package content's description
      */
-    const UNTDID_4451_AAQ = 'AAQ';
+    public const UNTDID_4451_AAQ = 'AAQ';
 
     /**
      * Terms of delivery
      */
-    const UNTDID_4451_AAR = 'AAR';
+    public const UNTDID_4451_AAR = 'AAR';
 
     /**
      * Bill of lading remarks
      */
-    const UNTDID_4451_AAS = 'AAS';
+    public const UNTDID_4451_AAS = 'AAS';
 
     /**
      * Mode of settlement information
      */
-    const UNTDID_4451_AAT = 'AAT';
+    public const UNTDID_4451_AAT = 'AAT';
 
     /**
      * Consignment invoice information
      */
-    const UNTDID_4451_AAU = 'AAU';
+    public const UNTDID_4451_AAU = 'AAU';
 
     /**
      * Clearance invoice information
      */
-    const UNTDID_4451_AAV = 'AAV';
+    public const UNTDID_4451_AAV = 'AAV';
 
     /**
      * Letter of credit information
      */
-    const UNTDID_4451_AAW = 'AAW';
+    public const UNTDID_4451_AAW = 'AAW';
 
     /**
      * License information
      */
-    const UNTDID_4451_AAX = 'AAX';
+    public const UNTDID_4451_AAX = 'AAX';
 
     /**
      * Certification statements
      */
-    const UNTDID_4451_AAY = 'AAY';
+    public const UNTDID_4451_AAY = 'AAY';
 
     /**
      * Additional export information
      */
-    const UNTDID_4451_AAZ = 'AAZ';
+    public const UNTDID_4451_AAZ = 'AAZ';
 
     /**
      * Tariff statements
      */
-    const UNTDID_4451_ABA = 'ABA';
+    public const UNTDID_4451_ABA = 'ABA';
 
     /**
      * Medical history
      */
-    const UNTDID_4451_ABB = 'ABB';
+    public const UNTDID_4451_ABB = 'ABB';
 
     /**
      * Conditions of sale or purchase
      */
-    const UNTDID_4451_ABC = 'ABC';
+    public const UNTDID_4451_ABC = 'ABC';
 
     /**
      * Contract document type
      */
-    const UNTDID_4451_ABD = 'ABD';
+    public const UNTDID_4451_ABD = 'ABD';
 
     /**
      * Additional terms and/or conditions (documentary credit)
      */
-    const UNTDID_4451_ABE = 'ABE';
+    public const UNTDID_4451_ABE = 'ABE';
 
     /**
      * Instructions or information about standby documentary
      */
-    const UNTDID_4451_ABF = 'ABF';
+    public const UNTDID_4451_ABF = 'ABF';
 
     /**
      * Instructions or information about partial shipment(s)
      */
-    const UNTDID_4451_ABG = 'ABG';
+    public const UNTDID_4451_ABG = 'ABG';
 
     /**
      * Instructions or information about transhipment(s)
      */
-    const UNTDID_4451_ABH = 'ABH';
+    public const UNTDID_4451_ABH = 'ABH';
 
     /**
      * Additional handling instructions documentary credit
      */
-    const UNTDID_4451_ABI = 'ABI';
+    public const UNTDID_4451_ABI = 'ABI';
 
     /**
      * Domestic routing information
      */
-    const UNTDID_4451_ABJ = 'ABJ';
+    public const UNTDID_4451_ABJ = 'ABJ';
 
     /**
      * Chargeable category of equipment
      */
-    const UNTDID_4451_ABK = 'ABK';
+    public const UNTDID_4451_ABK = 'ABK';
 
     /**
      * Government information
      */
-    const UNTDID_4451_ABL = 'ABL';
+    public const UNTDID_4451_ABL = 'ABL';
 
     /**
      * Onward routing information
      */
-    const UNTDID_4451_ABM = 'ABM';
+    public const UNTDID_4451_ABM = 'ABM';
 
     /**
      * Accounting information
      */
-    const UNTDID_4451_ABN = 'ABN';
+    public const UNTDID_4451_ABN = 'ABN';
 
     /**
      * Discrepancy information
      */
-    const UNTDID_4451_ABO = 'ABO';
+    public const UNTDID_4451_ABO = 'ABO';
 
     /**
      * Confirmation instructions
      */
-    const UNTDID_4451_ABP = 'ABP';
+    public const UNTDID_4451_ABP = 'ABP';
 
     /**
      * Method of issuance
      */
-    const UNTDID_4451_ABQ = 'ABQ';
+    public const UNTDID_4451_ABQ = 'ABQ';
 
     /**
      * Documents delivery instructions
      */
-    const UNTDID_4451_ABR = 'ABR';
+    public const UNTDID_4451_ABR = 'ABR';
 
     /**
      * Additional conditions
      */
-    const UNTDID_4451_ABS = 'ABS';
+    public const UNTDID_4451_ABS = 'ABS';
 
     /**
      * Information/instructions about additional amounts covered
      */
-    const UNTDID_4451_ABT = 'ABT';
+    public const UNTDID_4451_ABT = 'ABT';
 
     /**
      * Deferred payment termed additional
      */
-    const UNTDID_4451_ABU = 'ABU';
+    public const UNTDID_4451_ABU = 'ABU';
 
     /**
      * Acceptance terms additional
      */
-    const UNTDID_4451_ABV = 'ABV';
+    public const UNTDID_4451_ABV = 'ABV';
 
     /**
      * Negotiation terms additional
      */
-    const UNTDID_4451_ABW = 'ABW';
+    public const UNTDID_4451_ABW = 'ABW';
 
     /**
      * Document name and documentary requirements
      */
-    const UNTDID_4451_ABX = 'ABX';
+    public const UNTDID_4451_ABX = 'ABX';
 
     /**
      * Instructions/information about revolving documentary credit
      */
-    const UNTDID_4451_ABZ = 'ABZ';
+    public const UNTDID_4451_ABZ = 'ABZ';
 
     /**
      * Documentary requirements
      */
-    const UNTDID_4451_ACA = 'ACA';
+    public const UNTDID_4451_ACA = 'ACA';
 
     /**
      * Additional information
      */
-    const UNTDID_4451_ACB = 'ACB';
+    public const UNTDID_4451_ACB = 'ACB';
 
     /**
      * Factor assignment clause
      */
-    const UNTDID_4451_ACC = 'ACC';
+    public const UNTDID_4451_ACC = 'ACC';
 
     /**
      * Reason
      */
-    const UNTDID_4451_ACD = 'ACD';
+    public const UNTDID_4451_ACD = 'ACD';
 
     /**
      * Dispute
      */
-    const UNTDID_4451_ACE = 'ACE';
+    public const UNTDID_4451_ACE = 'ACE';
 
     /**
      * Additional attribute information
      */
-    const UNTDID_4451_ACF = 'ACF';
+    public const UNTDID_4451_ACF = 'ACF';
 
     /**
      * Absence declaration
      */
-    const UNTDID_4451_ACG = 'ACG';
+    public const UNTDID_4451_ACG = 'ACG';
 
     /**
      * Aggregation statement
      */
-    const UNTDID_4451_ACH = 'ACH';
+    public const UNTDID_4451_ACH = 'ACH';
 
     /**
      * Compilation statement
      */
-    const UNTDID_4451_ACI = 'ACI';
+    public const UNTDID_4451_ACI = 'ACI';
 
     /**
      * Definitional exception
      */
-    const UNTDID_4451_ACJ = 'ACJ';
+    public const UNTDID_4451_ACJ = 'ACJ';
 
     /**
      * Privacy statement
      */
-    const UNTDID_4451_ACK = 'ACK';
+    public const UNTDID_4451_ACK = 'ACK';
 
     /**
      * Quality statement
      */
-    const UNTDID_4451_ACL = 'ACL';
+    public const UNTDID_4451_ACL = 'ACL';
 
     /**
      * Statistical description
      */
-    const UNTDID_4451_ACM = 'ACM';
+    public const UNTDID_4451_ACM = 'ACM';
 
     /**
      * Statistical definition
      */
-    const UNTDID_4451_ACN = 'ACN';
+    public const UNTDID_4451_ACN = 'ACN';
 
     /**
      * Statistical name
      */
-    const UNTDID_4451_ACO = 'ACO';
+    public const UNTDID_4451_ACO = 'ACO';
 
     /**
      * Statistical title
      */
-    const UNTDID_4451_ACP = 'ACP';
+    public const UNTDID_4451_ACP = 'ACP';
 
     /**
      * Off-dimension information
      */
-    const UNTDID_4451_ACQ = 'ACQ';
+    public const UNTDID_4451_ACQ = 'ACQ';
 
     /**
      * Unexpected stops information
      */
-    const UNTDID_4451_ACR = 'ACR';
+    public const UNTDID_4451_ACR = 'ACR';
 
     /**
      * Principles
      */
-    const UNTDID_4451_ACS = 'ACS';
+    public const UNTDID_4451_ACS = 'ACS';
 
     /**
      * Terms and definition
      */
-    const UNTDID_4451_ACT = 'ACT';
+    public const UNTDID_4451_ACT = 'ACT';
 
     /**
      * Segment name
      */
-    const UNTDID_4451_ACU = 'ACU';
+    public const UNTDID_4451_ACU = 'ACU';
 
     /**
      * Simple data element name
      */
-    const UNTDID_4451_ACV = 'ACV';
+    public const UNTDID_4451_ACV = 'ACV';
 
     /**
      * Scope
      */
-    const UNTDID_4451_ACW = 'ACW';
+    public const UNTDID_4451_ACW = 'ACW';
 
     /**
      * Message type name
      */
-    const UNTDID_4451_ACX = 'ACX';
+    public const UNTDID_4451_ACX = 'ACX';
 
     /**
      * Introduction
      */
-    const UNTDID_4451_ACY = 'ACY';
+    public const UNTDID_4451_ACY = 'ACY';
 
     /**
      * Glossary
      */
-    const UNTDID_4451_ACZ = 'ACZ';
+    public const UNTDID_4451_ACZ = 'ACZ';
 
     /**
      * Functional definition
      */
-    const UNTDID_4451_ADA = 'ADA';
+    public const UNTDID_4451_ADA = 'ADA';
 
     /**
      * Examples
      */
-    const UNTDID_4451_ADB = 'ADB';
+    public const UNTDID_4451_ADB = 'ADB';
 
     /**
      * Cover page
      */
-    const UNTDID_4451_ADC = 'ADC';
+    public const UNTDID_4451_ADC = 'ADC';
 
     /**
      * Dependency (syntax) notes
      */
-    const UNTDID_4451_ADD = 'ADD';
+    public const UNTDID_4451_ADD = 'ADD';
 
     /**
      * Code value name
      */
-    const UNTDID_4451_ADE = 'ADE';
+    public const UNTDID_4451_ADE = 'ADE';
 
     /**
      * Code list name
      */
-    const UNTDID_4451_ADF = 'ADF';
+    public const UNTDID_4451_ADF = 'ADF';
 
     /**
      * Clarification of usage
      */
-    const UNTDID_4451_ADG = 'ADG';
+    public const UNTDID_4451_ADG = 'ADG';
 
     /**
      * Composite data element name
      */
-    const UNTDID_4451_ADH = 'ADH';
+    public const UNTDID_4451_ADH = 'ADH';
 
     /**
      * Field of application
      */
-    const UNTDID_4451_ADI = 'ADI';
+    public const UNTDID_4451_ADI = 'ADI';
 
     /**
      * Type of assets and liabilities
      */
-    const UNTDID_4451_ADJ = 'ADJ';
+    public const UNTDID_4451_ADJ = 'ADJ';
 
     /**
      * Promotion information
      */
-    const UNTDID_4451_ADK = 'ADK';
+    public const UNTDID_4451_ADK = 'ADK';
 
     /**
      * Meter condition
      */
-    const UNTDID_4451_ADL = 'ADL';
+    public const UNTDID_4451_ADL = 'ADL';
 
     /**
      * Meter reading information
      */
-    const UNTDID_4451_ADM = 'ADM';
+    public const UNTDID_4451_ADM = 'ADM';
 
     /**
      * Type of transaction reason
      */
-    const UNTDID_4451_ADN = 'ADN';
+    public const UNTDID_4451_ADN = 'ADN';
 
     /**
      * Type of survey question
      */
-    const UNTDID_4451_ADO = 'ADO';
+    public const UNTDID_4451_ADO = 'ADO';
 
     /**
      * Carrier's agent counter information
      */
-    const UNTDID_4451_ADP = 'ADP';
+    public const UNTDID_4451_ADP = 'ADP';
 
     /**
      * Description of work item on equipment
      */
-    const UNTDID_4451_ADQ = 'ADQ';
+    public const UNTDID_4451_ADQ = 'ADQ';
 
     /**
      * Message definition
      */
-    const UNTDID_4451_ADR = 'ADR';
+    public const UNTDID_4451_ADR = 'ADR';
 
     /**
      * Booked item information
      */
-    const UNTDID_4451_ADS = 'ADS';
+    public const UNTDID_4451_ADS = 'ADS';
 
     /**
      * Source of document
      */
-    const UNTDID_4451_ADT = 'ADT';
+    public const UNTDID_4451_ADT = 'ADT';
 
     /**
      * Note
      */
-    const UNTDID_4451_ADU = 'ADU';
+    public const UNTDID_4451_ADU = 'ADU';
 
     /**
      * Fixed part of segment clarification text
      */
-    const UNTDID_4451_ADV = 'ADV';
+    public const UNTDID_4451_ADV = 'ADV';
 
     /**
      * Characteristics of goods
      */
-    const UNTDID_4451_ADW = 'ADW';
+    public const UNTDID_4451_ADW = 'ADW';
 
     /**
      * Additional discharge instructions
      */
-    const UNTDID_4451_ADX = 'ADX';
+    public const UNTDID_4451_ADX = 'ADX';
 
     /**
      * Container stripping instructions
      */
-    const UNTDID_4451_ADY = 'ADY';
+    public const UNTDID_4451_ADY = 'ADY';
 
     /**
      * CSC (Container Safety Convention) plate information
      */
-    const UNTDID_4451_ADZ = 'ADZ';
+    public const UNTDID_4451_ADZ = 'ADZ';
 
     /**
      * Cargo remarks
      */
-    const UNTDID_4451_AEA = 'AEA';
+    public const UNTDID_4451_AEA = 'AEA';
 
     /**
      * Temperature control instructions
      */
-    const UNTDID_4451_AEB = 'AEB';
+    public const UNTDID_4451_AEB = 'AEB';
 
     /**
      * Text refers to expected data
      */
-    const UNTDID_4451_AEC = 'AEC';
+    public const UNTDID_4451_AEC = 'AEC';
 
     /**
      * Text refers to received data
      */
-    const UNTDID_4451_AED = 'AED';
+    public const UNTDID_4451_AED = 'AED';
 
     /**
      * Section clarification text
      */
-    const UNTDID_4451_AEE = 'AEE';
+    public const UNTDID_4451_AEE = 'AEE';
 
     /**
      * Information to the beneficiary
      */
-    const UNTDID_4451_AEF = 'AEF';
+    public const UNTDID_4451_AEF = 'AEF';
 
     /**
      * Information to the applicant
      */
-    const UNTDID_4451_AEG = 'AEG';
+    public const UNTDID_4451_AEG = 'AEG';
 
     /**
      * Instructions to the beneficiary
      */
-    const UNTDID_4451_AEH = 'AEH';
+    public const UNTDID_4451_AEH = 'AEH';
 
     /**
      * Instructions to the applicant
      */
-    const UNTDID_4451_AEI = 'AEI';
+    public const UNTDID_4451_AEI = 'AEI';
 
     /**
      * Controlled atmosphere
      */
-    const UNTDID_4451_AEJ = 'AEJ';
+    public const UNTDID_4451_AEJ = 'AEJ';
 
     /**
      * Take off annotation
      */
-    const UNTDID_4451_AEK = 'AEK';
+    public const UNTDID_4451_AEK = 'AEK';
 
     /**
      * Price variation narrative
      */
-    const UNTDID_4451_AEL = 'AEL';
+    public const UNTDID_4451_AEL = 'AEL';
 
     /**
      * Documentary credit amendment instructions
      */
-    const UNTDID_4451_AEM = 'AEM';
+    public const UNTDID_4451_AEM = 'AEM';
 
     /**
      * Standard method narrative
      */
-    const UNTDID_4451_AEN = 'AEN';
+    public const UNTDID_4451_AEN = 'AEN';
 
     /**
      * Project narrative
      */
-    const UNTDID_4451_AEO = 'AEO';
+    public const UNTDID_4451_AEO = 'AEO';
 
     /**
      * Radioactive goods, additional information
      */
-    const UNTDID_4451_AEP = 'AEP';
+    public const UNTDID_4451_AEP = 'AEP';
 
     /**
      * Bank-to-bank information
      */
-    const UNTDID_4451_AEQ = 'AEQ';
+    public const UNTDID_4451_AEQ = 'AEQ';
 
     /**
      * Reimbursement instructions
      */
-    const UNTDID_4451_AER = 'AER';
+    public const UNTDID_4451_AER = 'AER';
 
     /**
      * Reason for amending a message
      */
-    const UNTDID_4451_AES = 'AES';
+    public const UNTDID_4451_AES = 'AES';
 
     /**
      * Instructions to the paying and/or accepting and/or
      */
-    const UNTDID_4451_AET = 'AET';
+    public const UNTDID_4451_AET = 'AET';
 
     /**
      * Interest instructions
      */
-    const UNTDID_4451_AEU = 'AEU';
+    public const UNTDID_4451_AEU = 'AEU';
 
     /**
      * Agent commission
      */
-    const UNTDID_4451_AEV = 'AEV';
+    public const UNTDID_4451_AEV = 'AEV';
 
     /**
      * Remitting bank instructions
      */
-    const UNTDID_4451_AEW = 'AEW';
+    public const UNTDID_4451_AEW = 'AEW';
 
     /**
      * Instructions to the collecting bank
      */
-    const UNTDID_4451_AEX = 'AEX';
+    public const UNTDID_4451_AEX = 'AEX';
 
     /**
      * Collection amount instructions
      */
-    const UNTDID_4451_AEY = 'AEY';
+    public const UNTDID_4451_AEY = 'AEY';
 
     /**
      * Internal auditing information
      */
-    const UNTDID_4451_AEZ = 'AEZ';
+    public const UNTDID_4451_AEZ = 'AEZ';
 
     /**
      * Constraint
      */
-    const UNTDID_4451_AFA = 'AFA';
+    public const UNTDID_4451_AFA = 'AFA';
 
     /**
      * Comment
      */
-    const UNTDID_4451_AFB = 'AFB';
+    public const UNTDID_4451_AFB = 'AFB';
 
     /**
      * Semantic note
      */
-    const UNTDID_4451_AFC = 'AFC';
+    public const UNTDID_4451_AFC = 'AFC';
 
     /**
      * Help text
      */
-    const UNTDID_4451_AFD = 'AFD';
+    public const UNTDID_4451_AFD = 'AFD';
 
     /**
      * Legend
      */
-    const UNTDID_4451_AFE = 'AFE';
+    public const UNTDID_4451_AFE = 'AFE';
 
     /**
      * Batch code structure
      */
-    const UNTDID_4451_AFF = 'AFF';
+    public const UNTDID_4451_AFF = 'AFF';
 
     /**
      * Product application
      */
-    const UNTDID_4451_AFG = 'AFG';
+    public const UNTDID_4451_AFG = 'AFG';
 
     /**
      * Customer complaint
      */
-    const UNTDID_4451_AFH = 'AFH';
+    public const UNTDID_4451_AFH = 'AFH';
 
     /**
      * Probable cause of fault
      */
-    const UNTDID_4451_AFI = 'AFI';
+    public const UNTDID_4451_AFI = 'AFI';
 
     /**
      * Defect description
      */
-    const UNTDID_4451_AFJ = 'AFJ';
+    public const UNTDID_4451_AFJ = 'AFJ';
 
     /**
      * Repair description
      */
-    const UNTDID_4451_AFK = 'AFK';
+    public const UNTDID_4451_AFK = 'AFK';
 
     /**
      * Review comments
      */
-    const UNTDID_4451_AFL = 'AFL';
+    public const UNTDID_4451_AFL = 'AFL';
 
     /**
      * Title
      */
-    const UNTDID_4451_AFM = 'AFM';
+    public const UNTDID_4451_AFM = 'AFM';
 
     /**
      * Description of amount
      */
-    const UNTDID_4451_AFN = 'AFN';
+    public const UNTDID_4451_AFN = 'AFN';
 
     /**
      * Responsibilities
      */
-    const UNTDID_4451_AFO = 'AFO';
+    public const UNTDID_4451_AFO = 'AFO';
 
     /**
      * Supplier
      */
-    const UNTDID_4451_AFP = 'AFP';
+    public const UNTDID_4451_AFP = 'AFP';
 
     /**
      * Purchase region
      */
-    const UNTDID_4451_AFQ = 'AFQ';
+    public const UNTDID_4451_AFQ = 'AFQ';
 
     /**
      * Affiliation
      */
-    const UNTDID_4451_AFR = 'AFR';
+    public const UNTDID_4451_AFR = 'AFR';
 
     /**
      * Borrower
      */
-    const UNTDID_4451_AFS = 'AFS';
+    public const UNTDID_4451_AFS = 'AFS';
 
     /**
      * Line of business
      */
-    const UNTDID_4451_AFT = 'AFT';
+    public const UNTDID_4451_AFT = 'AFT';
 
     /**
      * Financial institution
      */
-    const UNTDID_4451_AFU = 'AFU';
+    public const UNTDID_4451_AFU = 'AFU';
 
     /**
      * Business founder
      */
-    const UNTDID_4451_AFV = 'AFV';
+    public const UNTDID_4451_AFV = 'AFV';
 
     /**
      * Business history
      */
-    const UNTDID_4451_AFW = 'AFW';
+    public const UNTDID_4451_AFW = 'AFW';
 
     /**
      * Banking arrangements
      */
-    const UNTDID_4451_AFX = 'AFX';
+    public const UNTDID_4451_AFX = 'AFX';
 
     /**
      * Business origin
      */
-    const UNTDID_4451_AFY = 'AFY';
+    public const UNTDID_4451_AFY = 'AFY';
 
     /**
      * Brand names' description
      */
-    const UNTDID_4451_AFZ = 'AFZ';
+    public const UNTDID_4451_AFZ = 'AFZ';
 
     /**
      * Business financing details
      */
-    const UNTDID_4451_AGA = 'AGA';
+    public const UNTDID_4451_AGA = 'AGA';
 
     /**
      * Competition
      */
-    const UNTDID_4451_AGB = 'AGB';
+    public const UNTDID_4451_AGB = 'AGB';
 
     /**
      * Construction process details
      */
-    const UNTDID_4451_AGC = 'AGC';
+    public const UNTDID_4451_AGC = 'AGC';
 
     /**
      * Construction specialty
      */
-    const UNTDID_4451_AGD = 'AGD';
+    public const UNTDID_4451_AGD = 'AGD';
 
     /**
      * Contract information
      */
-    const UNTDID_4451_AGE = 'AGE';
+    public const UNTDID_4451_AGE = 'AGE';
 
     /**
      * Corporate filing
      */
-    const UNTDID_4451_AGF = 'AGF';
+    public const UNTDID_4451_AGF = 'AGF';
 
     /**
      * Customer information
      */
-    const UNTDID_4451_AGG = 'AGG';
+    public const UNTDID_4451_AGG = 'AGG';
 
     /**
      * Copyright notice
      */
-    const UNTDID_4451_AGH = 'AGH';
+    public const UNTDID_4451_AGH = 'AGH';
 
     /**
      * Contingent debt
      */
-    const UNTDID_4451_AGI = 'AGI';
+    public const UNTDID_4451_AGI = 'AGI';
 
     /**
      * Conviction details
      */
-    const UNTDID_4451_AGJ = 'AGJ';
+    public const UNTDID_4451_AGJ = 'AGJ';
 
     /**
      * Equipment
      */
-    const UNTDID_4451_AGK = 'AGK';
+    public const UNTDID_4451_AGK = 'AGK';
 
     /**
      * Workforce description
      */
-    const UNTDID_4451_AGL = 'AGL';
+    public const UNTDID_4451_AGL = 'AGL';
 
     /**
      * Exemption
      */
-    const UNTDID_4451_AGM = 'AGM';
+    public const UNTDID_4451_AGM = 'AGM';
 
     /**
      * Future plans
      */
-    const UNTDID_4451_AGN = 'AGN';
+    public const UNTDID_4451_AGN = 'AGN';
 
     /**
      * Interviewee conversation information
      */
-    const UNTDID_4451_AGO = 'AGO';
+    public const UNTDID_4451_AGO = 'AGO';
 
     /**
      * Intangible asset
      */
-    const UNTDID_4451_AGP = 'AGP';
+    public const UNTDID_4451_AGP = 'AGP';
 
     /**
      * Inventory
      */
-    const UNTDID_4451_AGQ = 'AGQ';
+    public const UNTDID_4451_AGQ = 'AGQ';
 
     /**
      * Investment
      */
-    const UNTDID_4451_AGR = 'AGR';
+    public const UNTDID_4451_AGR = 'AGR';
 
     /**
      * Intercompany relations information
      */
-    const UNTDID_4451_AGS = 'AGS';
+    public const UNTDID_4451_AGS = 'AGS';
 
     /**
      * Joint venture
      */
-    const UNTDID_4451_AGT = 'AGT';
+    public const UNTDID_4451_AGT = 'AGT';
 
     /**
      * Loan
      */
-    const UNTDID_4451_AGU = 'AGU';
+    public const UNTDID_4451_AGU = 'AGU';
 
     /**
      * Long term debt
      */
-    const UNTDID_4451_AGV = 'AGV';
+    public const UNTDID_4451_AGV = 'AGV';
 
     /**
      * Location
      */
-    const UNTDID_4451_AGW = 'AGW';
+    public const UNTDID_4451_AGW = 'AGW';
 
     /**
      * Current legal structure
      */
-    const UNTDID_4451_AGX = 'AGX';
+    public const UNTDID_4451_AGX = 'AGX';
 
     /**
      * Marital contract
      */
-    const UNTDID_4451_AGY = 'AGY';
+    public const UNTDID_4451_AGY = 'AGY';
 
     /**
      * Marketing activities
      */
-    const UNTDID_4451_AGZ = 'AGZ';
+    public const UNTDID_4451_AGZ = 'AGZ';
 
     /**
      * Merger
      */
-    const UNTDID_4451_AHA = 'AHA';
+    public const UNTDID_4451_AHA = 'AHA';
 
     /**
      * Marketable securities
      */
-    const UNTDID_4451_AHB = 'AHB';
+    public const UNTDID_4451_AHB = 'AHB';
 
     /**
      * Business debt
      */
-    const UNTDID_4451_AHC = 'AHC';
+    public const UNTDID_4451_AHC = 'AHC';
 
     /**
      * Original legal structure
      */
-    const UNTDID_4451_AHD = 'AHD';
+    public const UNTDID_4451_AHD = 'AHD';
 
     /**
      * Employee sharing arrangements
      */
-    const UNTDID_4451_AHE = 'AHE';
+    public const UNTDID_4451_AHE = 'AHE';
 
     /**
      * Organization details
      */
-    const UNTDID_4451_AHF = 'AHF';
+    public const UNTDID_4451_AHF = 'AHF';
 
     /**
      * Public record details
      */
-    const UNTDID_4451_AHG = 'AHG';
+    public const UNTDID_4451_AHG = 'AHG';
 
     /**
      * Price range
      */
-    const UNTDID_4451_AHH = 'AHH';
+    public const UNTDID_4451_AHH = 'AHH';
 
     /**
      * Qualifications
      */
-    const UNTDID_4451_AHI = 'AHI';
+    public const UNTDID_4451_AHI = 'AHI';
 
     /**
      * Registered activity
      */
-    const UNTDID_4451_AHJ = 'AHJ';
+    public const UNTDID_4451_AHJ = 'AHJ';
 
     /**
      * Criminal sentence
      */
-    const UNTDID_4451_AHK = 'AHK';
+    public const UNTDID_4451_AHK = 'AHK';
 
     /**
      * Sales method
      */
-    const UNTDID_4451_AHL = 'AHL';
+    public const UNTDID_4451_AHL = 'AHL';
 
     /**
      * Educational institution information
      */
-    const UNTDID_4451_AHM = 'AHM';
+    public const UNTDID_4451_AHM = 'AHM';
 
     /**
      * Status details
      */
-    const UNTDID_4451_AHN = 'AHN';
+    public const UNTDID_4451_AHN = 'AHN';
 
     /**
      * Sales
      */
-    const UNTDID_4451_AHO = 'AHO';
+    public const UNTDID_4451_AHO = 'AHO';
 
     /**
      * Spouse information
      */
-    const UNTDID_4451_AHP = 'AHP';
+    public const UNTDID_4451_AHP = 'AHP';
 
     /**
      * Educational degree information
      */
-    const UNTDID_4451_AHQ = 'AHQ';
+    public const UNTDID_4451_AHQ = 'AHQ';
 
     /**
      * Shareholding information
      */
-    const UNTDID_4451_AHR = 'AHR';
+    public const UNTDID_4451_AHR = 'AHR';
 
     /**
      * Sales territory
      */
-    const UNTDID_4451_AHS = 'AHS';
+    public const UNTDID_4451_AHS = 'AHS';
 
     /**
      * Accountant's comments
      */
-    const UNTDID_4451_AHT = 'AHT';
+    public const UNTDID_4451_AHT = 'AHT';
 
     /**
      * Exemption law location
      */
-    const UNTDID_4451_AHU = 'AHU';
+    public const UNTDID_4451_AHU = 'AHU';
 
     /**
      * Share classifications
      */
-    const UNTDID_4451_AHV = 'AHV';
+    public const UNTDID_4451_AHV = 'AHV';
 
     /**
      * Forecast
      */
-    const UNTDID_4451_AHW = 'AHW';
+    public const UNTDID_4451_AHW = 'AHW';
 
     /**
      * Event location
      */
-    const UNTDID_4451_AHX = 'AHX';
+    public const UNTDID_4451_AHX = 'AHX';
 
     /**
      * Facility occupancy
      */
-    const UNTDID_4451_AHY = 'AHY';
+    public const UNTDID_4451_AHY = 'AHY';
 
     /**
      * Import and export details
      */
-    const UNTDID_4451_AHZ = 'AHZ';
+    public const UNTDID_4451_AHZ = 'AHZ';
 
     /**
      * Additional facility information
      */
-    const UNTDID_4451_AIA = 'AIA';
+    public const UNTDID_4451_AIA = 'AIA';
 
     /**
      * Inventory value
      */
-    const UNTDID_4451_AIB = 'AIB';
+    public const UNTDID_4451_AIB = 'AIB';
 
     /**
      * Education
      */
-    const UNTDID_4451_AIC = 'AIC';
+    public const UNTDID_4451_AIC = 'AIC';
 
     /**
      * Event
      */
-    const UNTDID_4451_AID = 'AID';
+    public const UNTDID_4451_AID = 'AID';
 
     /**
      * Agent
      */
-    const UNTDID_4451_AIE = 'AIE';
+    public const UNTDID_4451_AIE = 'AIE';
 
     /**
      * Domestically agreed financial statement details
      */
-    const UNTDID_4451_AIF = 'AIF';
+    public const UNTDID_4451_AIF = 'AIF';
 
     /**
      * Other current asset description
      */
-    const UNTDID_4451_AIG = 'AIG';
+    public const UNTDID_4451_AIG = 'AIG';
 
     /**
      * Other current liability description
      */
-    const UNTDID_4451_AIH = 'AIH';
+    public const UNTDID_4451_AIH = 'AIH';
 
     /**
      * Former business activity
      */
-    const UNTDID_4451_AII = 'AII';
+    public const UNTDID_4451_AII = 'AII';
 
     /**
      * Trade name use
      */
-    const UNTDID_4451_AIJ = 'AIJ';
+    public const UNTDID_4451_AIJ = 'AIJ';
 
     /**
      * Signing authority
      */
-    const UNTDID_4451_AIK = 'AIK';
+    public const UNTDID_4451_AIK = 'AIK';
 
     /**
      * Guarantee
      */
-    const UNTDID_4451_AIL = 'AIL';
+    public const UNTDID_4451_AIL = 'AIL';
 
     /**
      * Holding company operation
      */
-    const UNTDID_4451_AIM = 'AIM';
+    public const UNTDID_4451_AIM = 'AIM';
 
     /**
      * Consignment routing
      */
-    const UNTDID_4451_AIN = 'AIN';
+    public const UNTDID_4451_AIN = 'AIN';
 
     /**
      * Letter of protest
      */
-    const UNTDID_4451_AIO = 'AIO';
+    public const UNTDID_4451_AIO = 'AIO';
 
     /**
      * Question
      */
-    const UNTDID_4451_AIP = 'AIP';
+    public const UNTDID_4451_AIP = 'AIP';
 
     /**
      * Party information
      */
-    const UNTDID_4451_AIQ = 'AIQ';
+    public const UNTDID_4451_AIQ = 'AIQ';
 
     /**
      * Area boundaries description
      */
-    const UNTDID_4451_AIR = 'AIR';
+    public const UNTDID_4451_AIR = 'AIR';
 
     /**
      * Advertisement information
      */
-    const UNTDID_4451_AIS = 'AIS';
+    public const UNTDID_4451_AIS = 'AIS';
 
     /**
      * Financial statement details
      */
-    const UNTDID_4451_AIT = 'AIT';
+    public const UNTDID_4451_AIT = 'AIT';
 
     /**
      * Access instructions
      */
-    const UNTDID_4451_AIU = 'AIU';
+    public const UNTDID_4451_AIU = 'AIU';
 
     /**
      * Liquidity
      */
-    const UNTDID_4451_AIV = 'AIV';
+    public const UNTDID_4451_AIV = 'AIV';
 
     /**
      * Credit line
      */
-    const UNTDID_4451_AIW = 'AIW';
+    public const UNTDID_4451_AIW = 'AIW';
 
     /**
      * Warranty terms
      */
-    const UNTDID_4451_AIX = 'AIX';
+    public const UNTDID_4451_AIX = 'AIX';
 
     /**
      * Division description
      */
-    const UNTDID_4451_AIY = 'AIY';
+    public const UNTDID_4451_AIY = 'AIY';
 
     /**
      * Reporting instruction
      */
-    const UNTDID_4451_AIZ = 'AIZ';
+    public const UNTDID_4451_AIZ = 'AIZ';
 
     /**
      * Examination result
      */
-    const UNTDID_4451_AJA = 'AJA';
+    public const UNTDID_4451_AJA = 'AJA';
 
     /**
      * Laboratory result
      */
-    const UNTDID_4451_AJB = 'AJB';
+    public const UNTDID_4451_AJB = 'AJB';
 
     /**
      * Allowance/charge information
      */
-    const UNTDID_4451_ALC = 'ALC';
+    public const UNTDID_4451_ALC = 'ALC';
 
     /**
      * X-ray result
      */
-    const UNTDID_4451_ALD = 'ALD';
+    public const UNTDID_4451_ALD = 'ALD';
 
     /**
      * Pathology result
      */
-    const UNTDID_4451_ALE = 'ALE';
+    public const UNTDID_4451_ALE = 'ALE';
 
     /**
      * Intervention description
      */
-    const UNTDID_4451_ALF = 'ALF';
+    public const UNTDID_4451_ALF = 'ALF';
 
     /**
      * Summary of admittance
      */
-    const UNTDID_4451_ALG = 'ALG';
+    public const UNTDID_4451_ALG = 'ALG';
 
     /**
      * Medical treatment course detail
      */
-    const UNTDID_4451_ALH = 'ALH';
+    public const UNTDID_4451_ALH = 'ALH';
 
     /**
      * Prognosis
      */
-    const UNTDID_4451_ALI = 'ALI';
+    public const UNTDID_4451_ALI = 'ALI';
 
     /**
      * Instruction to patient
      */
-    const UNTDID_4451_ALJ = 'ALJ';
+    public const UNTDID_4451_ALJ = 'ALJ';
 
     /**
      * Instruction to physician
      */
-    const UNTDID_4451_ALK = 'ALK';
+    public const UNTDID_4451_ALK = 'ALK';
 
     /**
      * All documents
      */
-    const UNTDID_4451_ALL = 'ALL';
+    public const UNTDID_4451_ALL = 'ALL';
 
     /**
      * Medicine treatment
      */
-    const UNTDID_4451_ALM = 'ALM';
+    public const UNTDID_4451_ALM = 'ALM';
 
     /**
      * Medicine dosage and administration
      */
-    const UNTDID_4451_ALN = 'ALN';
+    public const UNTDID_4451_ALN = 'ALN';
 
     /**
      * Availability of patient
      */
-    const UNTDID_4451_ALO = 'ALO';
+    public const UNTDID_4451_ALO = 'ALO';
 
     /**
      * Reason for service request
      */
-    const UNTDID_4451_ALP = 'ALP';
+    public const UNTDID_4451_ALP = 'ALP';
 
     /**
      * Purpose of service
      */
-    const UNTDID_4451_ALQ = 'ALQ';
+    public const UNTDID_4451_ALQ = 'ALQ';
 
     /**
      * Arrival conditions
      */
-    const UNTDID_4451_ARR = 'ARR';
+    public const UNTDID_4451_ARR = 'ARR';
 
     /**
      * Service requester's comment
      */
-    const UNTDID_4451_ARS = 'ARS';
+    public const UNTDID_4451_ARS = 'ARS';
 
     /**
      * Authentication
      */
-    const UNTDID_4451_AUT = 'AUT';
+    public const UNTDID_4451_AUT = 'AUT';
 
     /**
      * Requested location description
      */
-    const UNTDID_4451_AUU = 'AUU';
+    public const UNTDID_4451_AUU = 'AUU';
 
     /**
      * Medicine administration condition
      */
-    const UNTDID_4451_AUV = 'AUV';
+    public const UNTDID_4451_AUV = 'AUV';
 
     /**
      * Patient information
      */
-    const UNTDID_4451_AUW = 'AUW';
+    public const UNTDID_4451_AUW = 'AUW';
 
     /**
      * Precautionary measure
      */
-    const UNTDID_4451_AUX = 'AUX';
+    public const UNTDID_4451_AUX = 'AUX';
 
     /**
      * Service characteristic
      */
-    const UNTDID_4451_AUY = 'AUY';
+    public const UNTDID_4451_AUY = 'AUY';
 
     /**
      * Planned event comment
      */
-    const UNTDID_4451_AUZ = 'AUZ';
+    public const UNTDID_4451_AUZ = 'AUZ';
 
     /**
      * Expected delay comment
      */
-    const UNTDID_4451_AVA = 'AVA';
+    public const UNTDID_4451_AVA = 'AVA';
 
     /**
      * Transport requirements comment
      */
-    const UNTDID_4451_AVB = 'AVB';
+    public const UNTDID_4451_AVB = 'AVB';
 
     /**
      * Temporary approval condition
      */
-    const UNTDID_4451_AVC = 'AVC';
+    public const UNTDID_4451_AVC = 'AVC';
 
     /**
      * Customs Valuation Information
      */
-    const UNTDID_4451_AVD = 'AVD';
+    public const UNTDID_4451_AVD = 'AVD';
 
     /**
      * Value Added Tax (VAT) margin scheme
      */
-    const UNTDID_4451_AVE = 'AVE';
+    public const UNTDID_4451_AVE = 'AVE';
 
     /**
      * Maritime Declaration of Health
      */
-    const UNTDID_4451_AVF = 'AVF';
+    public const UNTDID_4451_AVF = 'AVF';
 
     /**
      * Passenger baggage information
      */
-    const UNTDID_4451_BAG = 'BAG';
+    public const UNTDID_4451_BAG = 'BAG';
 
     /**
      * Maritime Declaration of Health
      */
-    const UNTDID_4451_BAH = 'BAH';
+    public const UNTDID_4451_BAH = 'BAH';
 
     /**
      * Additional product information address
      */
-    const UNTDID_4451_BAI = 'BAI';
+    public const UNTDID_4451_BAI = 'BAI';
 
     /**
      * Information to be printed on despatch advice
      */
-    const UNTDID_4451_BAJ = 'BAJ';
+    public const UNTDID_4451_BAJ = 'BAJ';
 
     /**
      * Missing goods remarks
      */
-    const UNTDID_4451_BAK = 'BAK';
+    public const UNTDID_4451_BAK = 'BAK';
 
     /**
      * Non-acceptance information
      */
-    const UNTDID_4451_BAL = 'BAL';
+    public const UNTDID_4451_BAL = 'BAL';
 
     /**
      * Returns information
      */
-    const UNTDID_4451_BAM = 'BAM';
+    public const UNTDID_4451_BAM = 'BAM';
 
     /**
      * Sub-line item information
      */
-    const UNTDID_4451_BAN = 'BAN';
+    public const UNTDID_4451_BAN = 'BAN';
 
     /**
      * Test information
      */
-    const UNTDID_4451_BAO = 'BAO';
+    public const UNTDID_4451_BAO = 'BAO';
 
     /**
      * External link
      */
-    const UNTDID_4451_BAP = 'BAP';
+    public const UNTDID_4451_BAP = 'BAP';
 
     /**
      * VAT exemption reason
      */
-    const UNTDID_4451_BAQ = 'BAQ';
+    public const UNTDID_4451_BAQ = 'BAQ';
 
     /**
      * Processing Instructions
      */
-    const UNTDID_4451_BAR = 'BAR';
+    public const UNTDID_4451_BAR = 'BAR';
 
     /**
      * Relay Instructions
      */
-    const UNTDID_4451_BAS = 'BAS';
+    public const UNTDID_4451_BAS = 'BAS';
 
     /**
      * Transport contract document clause
      */
-    const UNTDID_4451_BLC = 'BLC';
+    public const UNTDID_4451_BLC = 'BLC';
 
     /**
      * Instruction to prepare the patient
      */
-    const UNTDID_4451_BLD = 'BLD';
+    public const UNTDID_4451_BLD = 'BLD';
 
     /**
      * Medicine treatment comment
      */
-    const UNTDID_4451_BLE = 'BLE';
+    public const UNTDID_4451_BLE = 'BLE';
 
     /**
      * Examination result comment
      */
-    const UNTDID_4451_BLF = 'BLF';
+    public const UNTDID_4451_BLF = 'BLF';
 
     /**
      * Service request comment
      */
-    const UNTDID_4451_BLG = 'BLG';
+    public const UNTDID_4451_BLG = 'BLG';
 
     /**
      * Prescription reason
      */
-    const UNTDID_4451_BLH = 'BLH';
+    public const UNTDID_4451_BLH = 'BLH';
 
     /**
      * Prescription comment
      */
-    const UNTDID_4451_BLI = 'BLI';
+    public const UNTDID_4451_BLI = 'BLI';
 
     /**
      * Clinical investigation comment
      */
-    const UNTDID_4451_BLJ = 'BLJ';
+    public const UNTDID_4451_BLJ = 'BLJ';
 
     /**
      * Medicinal specification comment
      */
-    const UNTDID_4451_BLK = 'BLK';
+    public const UNTDID_4451_BLK = 'BLK';
 
     /**
      * Economic contribution comment
      */
-    const UNTDID_4451_BLL = 'BLL';
+    public const UNTDID_4451_BLL = 'BLL';
 
     /**
      * Status of a plan
      */
-    const UNTDID_4451_BLM = 'BLM';
+    public const UNTDID_4451_BLM = 'BLM';
 
     /**
      * Random sample test information
      */
-    const UNTDID_4451_BLN = 'BLN';
+    public const UNTDID_4451_BLN = 'BLN';
 
     /**
      * Period of time
      */
-    const UNTDID_4451_BLO = 'BLO';
+    public const UNTDID_4451_BLO = 'BLO';
 
     /**
      * Legislation
      */
-    const UNTDID_4451_BLP = 'BLP';
+    public const UNTDID_4451_BLP = 'BLP';
 
     /**
      * Security measures requested
      */
-    const UNTDID_4451_BLQ = 'BLQ';
+    public const UNTDID_4451_BLQ = 'BLQ';
 
     /**
      * Transport contract document remark
      */
-    const UNTDID_4451_BLR = 'BLR';
+    public const UNTDID_4451_BLR = 'BLR';
 
     /**
      * Previous port of call security information
      */
-    const UNTDID_4451_BLS = 'BLS';
+    public const UNTDID_4451_BLS = 'BLS';
 
     /**
      * Security information
      */
-    const UNTDID_4451_BLT = 'BLT';
+    public const UNTDID_4451_BLT = 'BLT';
 
     /**
      * Waste information
      */
-    const UNTDID_4451_BLU = 'BLU';
+    public const UNTDID_4451_BLU = 'BLU';
 
     /**
      * B2C marketing information, short description
      */
-    const UNTDID_4451_BLV = 'BLV';
+    public const UNTDID_4451_BLV = 'BLV';
 
     /**
      * B2B marketing information, long description
      */
-    const UNTDID_4451_BLW = 'BLW';
+    public const UNTDID_4451_BLW = 'BLW';
 
     /**
      * B2C marketing information, long description
      */
-    const UNTDID_4451_BLX = 'BLX';
+    public const UNTDID_4451_BLX = 'BLX';
 
     /**
      * Product ingredients
      */
-    const UNTDID_4451_BLY = 'BLY';
+    public const UNTDID_4451_BLY = 'BLY';
 
     /**
      * Location short name
      */
-    const UNTDID_4451_BLZ = 'BLZ';
+    public const UNTDID_4451_BLZ = 'BLZ';
 
     /**
      * Packaging material information
      */
-    const UNTDID_4451_BMA = 'BMA';
+    public const UNTDID_4451_BMA = 'BMA';
 
     /**
      * Filler material information
      */
-    const UNTDID_4451_BMB = 'BMB';
+    public const UNTDID_4451_BMB = 'BMB';
 
     /**
      * Ship-to-ship activity information
      */
-    const UNTDID_4451_BMC = 'BMC';
+    public const UNTDID_4451_BMC = 'BMC';
 
     /**
      * Package material description
      */
-    const UNTDID_4451_BMD = 'BMD';
+    public const UNTDID_4451_BMD = 'BMD';
 
     /**
      * Consumer level package marking
      */
-    const UNTDID_4451_BME = 'BME';
+    public const UNTDID_4451_BME = 'BME';
 
     /**
      * Customs clearance instructions
      */
-    const UNTDID_4451_CCI = 'CCI';
+    public const UNTDID_4451_CCI = 'CCI';
 
     /**
      * Customs clearance instructions export
      */
-    const UNTDID_4451_CEX = 'CEX';
+    public const UNTDID_4451_CEX = 'CEX';
 
     /**
      * Change information
      */
-    const UNTDID_4451_CHG = 'CHG';
+    public const UNTDID_4451_CHG = 'CHG';
 
     /**
      * Customs clearance instruction import
      */
-    const UNTDID_4451_CIP = 'CIP';
+    public const UNTDID_4451_CIP = 'CIP';
 
     /**
      * Clearance place requested
      */
-    const UNTDID_4451_CLP = 'CLP';
+    public const UNTDID_4451_CLP = 'CLP';
 
     /**
      * Loading remarks
      */
-    const UNTDID_4451_CLR = 'CLR';
+    public const UNTDID_4451_CLR = 'CLR';
 
     /**
      * Order information
      */
-    const UNTDID_4451_COI = 'COI';
+    public const UNTDID_4451_COI = 'COI';
 
     /**
      * Customer remarks
      */
-    const UNTDID_4451_CUR = 'CUR';
+    public const UNTDID_4451_CUR = 'CUR';
 
     /**
      * Customs declaration information
      */
-    const UNTDID_4451_CUS = 'CUS';
+    public const UNTDID_4451_CUS = 'CUS';
 
     /**
      * Damage remarks
      */
-    const UNTDID_4451_DAR = 'DAR';
+    public const UNTDID_4451_DAR = 'DAR';
 
     /**
      * Document issuer declaration
      */
-    const UNTDID_4451_DCL = 'DCL';
+    public const UNTDID_4451_DCL = 'DCL';
 
     /**
      * Delivery information
      */
-    const UNTDID_4451_DEL = 'DEL';
+    public const UNTDID_4451_DEL = 'DEL';
 
     /**
      * Delivery instructions
      */
-    const UNTDID_4451_DIN = 'DIN';
+    public const UNTDID_4451_DIN = 'DIN';
 
     /**
      * Documentation instructions
      */
-    const UNTDID_4451_DOC = 'DOC';
+    public const UNTDID_4451_DOC = 'DOC';
 
     /**
      * Duty declaration
      */
-    const UNTDID_4451_DUT = 'DUT';
+    public const UNTDID_4451_DUT = 'DUT';
 
     /**
      * Effective used routing
      */
-    const UNTDID_4451_EUR = 'EUR';
+    public const UNTDID_4451_EUR = 'EUR';
 
     /**
      * First block to be printed on the transport contract
      */
-    const UNTDID_4451_FBC = 'FBC';
+    public const UNTDID_4451_FBC = 'FBC';
 
     /**
      * Government bill of lading information
      */
-    const UNTDID_4451_GBL = 'GBL';
+    public const UNTDID_4451_GBL = 'GBL';
 
     /**
      * Entire transaction set
      */
-    const UNTDID_4451_GEN = 'GEN';
+    public const UNTDID_4451_GEN = 'GEN';
 
     /**
      * Further information concerning GGVS par. 7
      */
-    const UNTDID_4451_GS7 = 'GS7';
+    public const UNTDID_4451_GS7 = 'GS7';
 
     /**
      * Consignment handling instruction
      */
-    const UNTDID_4451_HAN = 'HAN';
+    public const UNTDID_4451_HAN = 'HAN';
 
     /**
      * Hazard information
      */
-    const UNTDID_4451_HAZ = 'HAZ';
+    public const UNTDID_4451_HAZ = 'HAZ';
 
     /**
      * Consignment information for consignee
      */
-    const UNTDID_4451_ICN = 'ICN';
+    public const UNTDID_4451_ICN = 'ICN';
 
     /**
      * Insurance instructions
      */
-    const UNTDID_4451_IIN = 'IIN';
+    public const UNTDID_4451_IIN = 'IIN';
 
     /**
      * Invoice mailing instructions
      */
-    const UNTDID_4451_IMI = 'IMI';
+    public const UNTDID_4451_IMI = 'IMI';
 
     /**
      * Commercial invoice item description
      */
-    const UNTDID_4451_IND = 'IND';
+    public const UNTDID_4451_IND = 'IND';
 
     /**
      * Insurance information
      */
-    const UNTDID_4451_INS = 'INS';
+    public const UNTDID_4451_INS = 'INS';
 
     /**
      * Invoice instruction
      */
-    const UNTDID_4451_INV = 'INV';
+    public const UNTDID_4451_INV = 'INV';
 
     /**
      * Information for railway purpose
      */
-    const UNTDID_4451_IRP = 'IRP';
+    public const UNTDID_4451_IRP = 'IRP';
 
     /**
      * Inland transport details
      */
-    const UNTDID_4451_ITR = 'ITR';
+    public const UNTDID_4451_ITR = 'ITR';
 
     /**
      * Testing instructions
      */
-    const UNTDID_4451_ITS = 'ITS';
+    public const UNTDID_4451_ITS = 'ITS';
 
     /**
      * Location Alias
      */
-    const UNTDID_4451_LAN = 'LAN';
+    public const UNTDID_4451_LAN = 'LAN';
 
     /**
      * Line item
      */
-    const UNTDID_4451_LIN = 'LIN';
+    public const UNTDID_4451_LIN = 'LIN';
 
     /**
      * Loading instruction
      */
-    const UNTDID_4451_LOI = 'LOI';
+    public const UNTDID_4451_LOI = 'LOI';
 
     /**
      * Miscellaneous charge order
      */
-    const UNTDID_4451_MCO = 'MCO';
+    public const UNTDID_4451_MCO = 'MCO';
 
     /**
      * Maritime Declaration of Health
      */
-    const UNTDID_4451_MDH = 'MDH';
+    public const UNTDID_4451_MDH = 'MDH';
 
     /**
      * Additional marks/numbers information
      */
-    const UNTDID_4451_MKS = 'MKS';
+    public const UNTDID_4451_MKS = 'MKS';
 
     /**
      * Order instruction
      */
-    const UNTDID_4451_ORI = 'ORI';
+    public const UNTDID_4451_ORI = 'ORI';
 
     /**
      * Other service information
      */
-    const UNTDID_4451_OSI = 'OSI';
+    public const UNTDID_4451_OSI = 'OSI';
 
     /**
      * Packing/marking information
      */
-    const UNTDID_4451_PAC = 'PAC';
+    public const UNTDID_4451_PAC = 'PAC';
 
     /**
      * Payment instructions information
      */
-    const UNTDID_4451_PAI = 'PAI';
+    public const UNTDID_4451_PAI = 'PAI';
 
     /**
      * Payables information
      */
-    const UNTDID_4451_PAY = 'PAY';
+    public const UNTDID_4451_PAY = 'PAY';
 
     /**
      * Packaging information
      */
-    const UNTDID_4451_PKG = 'PKG';
+    public const UNTDID_4451_PKG = 'PKG';
 
     /**
      * Packaging terms information
      */
-    const UNTDID_4451_PKT = 'PKT';
+    public const UNTDID_4451_PKT = 'PKT';
 
     /**
      * Payment detail/remittance information
      */
-    const UNTDID_4451_PMD = 'PMD';
+    public const UNTDID_4451_PMD = 'PMD';
 
     /**
      * Payment information
      */
-    const UNTDID_4451_PMT = 'PMT';
+    public const UNTDID_4451_PMT = 'PMT';
 
     /**
      * Product information
      */
-    const UNTDID_4451_PRD = 'PRD';
+    public const UNTDID_4451_PRD = 'PRD';
 
     /**
      * Price calculation formula
      */
-    const UNTDID_4451_PRF = 'PRF';
+    public const UNTDID_4451_PRF = 'PRF';
 
     /**
      * Priority information
      */
-    const UNTDID_4451_PRI = 'PRI';
+    public const UNTDID_4451_PRI = 'PRI';
 
     /**
      * Purchasing information
      */
-    const UNTDID_4451_PUR = 'PUR';
+    public const UNTDID_4451_PUR = 'PUR';
 
     /**
      * Quarantine instructions
      */
-    const UNTDID_4451_QIN = 'QIN';
+    public const UNTDID_4451_QIN = 'QIN';
 
     /**
      * Quality demands/requirements
      */
-    const UNTDID_4451_QQD = 'QQD';
+    public const UNTDID_4451_QQD = 'QQD';
 
     /**
      * Quotation instruction/information
      */
-    const UNTDID_4451_QUT = 'QUT';
+    public const UNTDID_4451_QUT = 'QUT';
 
     /**
      * Risk and handling information
      */
-    const UNTDID_4451_RAH = 'RAH';
+    public const UNTDID_4451_RAH = 'RAH';
 
     /**
      * Regulatory information
      */
-    const UNTDID_4451_REG = 'REG';
+    public const UNTDID_4451_REG = 'REG';
 
     /**
      * Return to origin information
      */
-    const UNTDID_4451_RET = 'RET';
+    public const UNTDID_4451_RET = 'RET';
 
     /**
      * Receivables
      */
-    const UNTDID_4451_REV = 'REV';
+    public const UNTDID_4451_REV = 'REV';
 
     /**
      * Consignment route
      */
-    const UNTDID_4451_RQR = 'RQR';
+    public const UNTDID_4451_RQR = 'RQR';
 
     /**
      * Safety information
      */
-    const UNTDID_4451_SAF = 'SAF';
+    public const UNTDID_4451_SAF = 'SAF';
 
     /**
      * Consignment documentary instruction
      */
-    const UNTDID_4451_SIC = 'SIC';
+    public const UNTDID_4451_SIC = 'SIC';
 
     /**
      * Special instructions
      */
-    const UNTDID_4451_SIN = 'SIN';
+    public const UNTDID_4451_SIN = 'SIN';
 
     /**
      * Ship line requested
      */
-    const UNTDID_4451_SLR = 'SLR';
+    public const UNTDID_4451_SLR = 'SLR';
 
     /**
      * Special permission for transport, generally
      */
-    const UNTDID_4451_SPA = 'SPA';
+    public const UNTDID_4451_SPA = 'SPA';
 
     /**
      * Special permission concerning the goods to be transported
      */
-    const UNTDID_4451_SPG = 'SPG';
+    public const UNTDID_4451_SPG = 'SPG';
 
     /**
      * Special handling
      */
-    const UNTDID_4451_SPH = 'SPH';
+    public const UNTDID_4451_SPH = 'SPH';
 
     /**
      * Special permission concerning package
      */
-    const UNTDID_4451_SPP = 'SPP';
+    public const UNTDID_4451_SPP = 'SPP';
 
     /**
      * Special permission concerning transport means
      */
-    const UNTDID_4451_SPT = 'SPT';
+    public const UNTDID_4451_SPT = 'SPT';
 
     /**
      * Subsidiary risk number (IATA/DGR)
      */
-    const UNTDID_4451_SRN = 'SRN';
+    public const UNTDID_4451_SRN = 'SRN';
 
     /**
      * Special service request
      */
-    const UNTDID_4451_SSR = 'SSR';
+    public const UNTDID_4451_SSR = 'SSR';
 
     /**
      * Supplier remarks
      */
-    const UNTDID_4451_SUR = 'SUR';
+    public const UNTDID_4451_SUR = 'SUR';
 
     /**
      * Consignment tariff
      */
-    const UNTDID_4451_TCA = 'TCA';
+    public const UNTDID_4451_TCA = 'TCA';
 
     /**
      * Consignment transport
      */
-    const UNTDID_4451_TDT = 'TDT';
+    public const UNTDID_4451_TDT = 'TDT';
 
     /**
      * Transportation information
      */
-    const UNTDID_4451_TRA = 'TRA';
+    public const UNTDID_4451_TRA = 'TRA';
 
     /**
      * Requested tariff
      */
-    const UNTDID_4451_TRR = 'TRR';
+    public const UNTDID_4451_TRR = 'TRR';
 
     /**
      * Tax declaration
      */
-    const UNTDID_4451_TXD = 'TXD';
+    public const UNTDID_4451_TXD = 'TXD';
 
     /**
      * Warehouse instruction/information
      */
-    const UNTDID_4451_WHI = 'WHI';
+    public const UNTDID_4451_WHI = 'WHI';
 
     /**
      * Mutually defined
      */
-    const UNTDID_4451_ZZZ = 'ZZZ';
+    public const UNTDID_4451_ZZZ = 'ZZZ';
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdUnitCodes.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdUnitCodes.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdUnitCodes.php	(revision 8504)
@@ -24,425 +24,425 @@
      * group
      */
-    const REC20_GROUP = '10';
+    public const REC20_GROUP = '10';
 
     /**
      * outfit
      */
-    const REC20_OUTFIT = '11';
+    public const REC20_OUTFIT = '11';
 
     /**
      * ration
      */
-    const REC20_RATION = '13';
+    public const REC20_RATION = '13';
 
     /**
      * shot
      */
-    const REC20_SHOT = '14';
+    public const REC20_SHOT = '14';
 
     /**
      * stick, military
      */
-    const REC20_STICK_MILITARY = '15';
+    public const REC20_STICK_MILITARY = '15';
 
     /**
      * twenty foot container
      */
-    const REC20_TWENTY_FOOT_CONTAINER = '20';
+    public const REC20_TWENTY_FOOT_CONTAINER = '20';
 
     /**
      * forty foot container
      */
-    const REC20_FORTY_FOOT_CONTAINER = '21';
+    public const REC20_FORTY_FOOT_CONTAINER = '21';
 
     /**
      * decilitre per gram
      */
-    const REC20_DECILITRE_PER_GRAM = '22';
+    public const REC20_DECILITRE_PER_GRAM = '22';
 
     /**
      * gram per cubic centimetre
      */
-    const REC20_GRAM_PER_CUBIC_CENTIMETRE = '23';
+    public const REC20_GRAM_PER_CUBIC_CENTIMETRE = '23';
 
     /**
      * theoretical pound
      */
-    const REC20_THEORETICAL_POUND = '24';
+    public const REC20_THEORETICAL_POUND = '24';
 
     /**
      * gram per square centimetre
      */
-    const REC20_GRAM_PER_SQUARE_CENTIMETRE = '25';
+    public const REC20_GRAM_PER_SQUARE_CENTIMETRE = '25';
 
     /**
      * theoretical ton
      */
-    const REC20_THEORETICAL_TON = '27';
+    public const REC20_THEORETICAL_TON = '27';
 
     /**
      * kilogram per square metre
      */
-    const REC20_KILOGRAM_PER_SQUARE_METRE = '28';
+    public const REC20_KILOGRAM_PER_SQUARE_METRE = '28';
 
     /**
      * kilopascal square metre per gram
      */
-    const REC20_KILOPASCAL_SQUARE_METRE_PER_GRAM = '33';
+    public const REC20_KILOPASCAL_SQUARE_METRE_PER_GRAM = '33';
 
     /**
      * kilopascal per millimetre
      */
-    const REC20_KILOPASCAL_PER_MILLIMETRE = '34';
+    public const REC20_KILOPASCAL_PER_MILLIMETRE = '34';
 
     /**
      * millilitre per square centimetre second
      */
-    const REC20_MILLILITRE_PER_SQUARE_CENTIMETRE_SECOND = '35';
+    public const REC20_MILLILITRE_PER_SQUARE_CENTIMETRE_SECOND = '35';
 
     /**
      * ounce per square foot
      */
-    const REC20_OUNCE_PER_SQUARE_FOOT = '37';
+    public const REC20_OUNCE_PER_SQUARE_FOOT = '37';
 
     /**
      * ounce per square foot per 0,01inch
      */
-    const REC20_OUNCE_PER_SQUARE_FOOT_PER_001INCH = '38';
+    public const REC20_OUNCE_PER_SQUARE_FOOT_PER_001INCH = '38';
 
     /**
      * millilitre per second
      */
-    const REC20_MILLILITRE_PER_SECOND = '40';
+    public const REC20_MILLILITRE_PER_SECOND = '40';
 
     /**
      * millilitre per minute
      */
-    const REC20_MILLILITRE_PER_MINUTE = '41';
+    public const REC20_MILLILITRE_PER_MINUTE = '41';
 
     /**
      * sitas
      */
-    const REC20_SITAS = '56';
+    public const REC20_SITAS = '56';
 
     /**
      * mesh
      */
-    const REC20_MESH = '57';
+    public const REC20_MESH = '57';
 
     /**
      * net kilogram
      */
-    const REC20_NET_KILOGRAM = '58';
+    public const REC20_NET_KILOGRAM = '58';
 
     /**
      * part per million
      */
-    const REC20_PART_PER_MILLION = '59';
+    public const REC20_PART_PER_MILLION = '59';
 
     /**
      * percent weight
      */
-    const REC20_PERCENT_WEIGHT = '60';
+    public const REC20_PERCENT_WEIGHT = '60';
 
     /**
      * part per billion (US)
      */
-    const REC20_PART_PER_BILLION_US = '61';
+    public const REC20_PART_PER_BILLION_US = '61';
 
     /**
      * millipascal
      */
-    const REC20_MILLIPASCAL = '74';
+    public const REC20_MILLIPASCAL = '74';
 
     /**
      * milli-inch
      */
-    const REC20_MILLIINCH = '77';
+    public const REC20_MILLIINCH = '77';
 
     /**
      * pound per square inch absolute
      */
-    const REC20_POUND_PER_SQUARE_INCH_ABSOLUTE = '80';
+    public const REC20_POUND_PER_SQUARE_INCH_ABSOLUTE = '80';
 
     /**
      * henry
      */
-    const REC20_HENRY = '81';
+    public const REC20_HENRY = '81';
 
     /**
      * foot pound-force
      */
-    const REC20_FOOT_POUNDFORCE = '85';
+    public const REC20_FOOT_POUNDFORCE = '85';
 
     /**
      * pound per cubic foot
      */
-    const REC20_POUND_PER_CUBIC_FOOT = '87';
+    public const REC20_POUND_PER_CUBIC_FOOT = '87';
 
     /**
      * poise
      */
-    const REC20_POISE = '89';
+    public const REC20_POISE = '89';
 
     /**
      * stokes
      */
-    const REC20_STOKES = '91';
+    public const REC20_STOKES = '91';
 
     /**
      * fixed rate
      */
-    const REC20_FIXED_RATE = '1I';
+    public const REC20_FIXED_RATE = '1I';
 
     /**
      * radian per second
      */
-    const REC20_RADIAN_PER_SECOND = '2A';
+    public const REC20_RADIAN_PER_SECOND = '2A';
 
     /**
      * radian per second squared
      */
-    const REC20_RADIAN_PER_SECOND_SQUARED = '2B';
+    public const REC20_RADIAN_PER_SECOND_SQUARED = '2B';
 
     /**
      * roentgen
      */
-    const REC20_ROENTGEN = '2C';
+    public const REC20_ROENTGEN = '2C';
 
     /**
      * volt AC
      */
-    const REC20_VOLT_AC = '2G';
+    public const REC20_VOLT_AC = '2G';
 
     /**
      * volt DC
      */
-    const REC20_VOLT_DC = '2H';
+    public const REC20_VOLT_DC = '2H';
 
     /**
      * British thermal unit (international table) per hour
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_HOUR = '2I';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_HOUR = '2I';
 
     /**
      * cubic centimetre per second
      */
-    const REC20_CUBIC_CENTIMETRE_PER_SECOND = '2J';
+    public const REC20_CUBIC_CENTIMETRE_PER_SECOND = '2J';
 
     /**
      * cubic foot per hour
      */
-    const REC20_CUBIC_FOOT_PER_HOUR = '2K';
+    public const REC20_CUBIC_FOOT_PER_HOUR = '2K';
 
     /**
      * cubic foot per minute
      */
-    const REC20_CUBIC_FOOT_PER_MINUTE = '2L';
+    public const REC20_CUBIC_FOOT_PER_MINUTE = '2L';
 
     /**
      * centimetre per second
      */
-    const REC20_CENTIMETRE_PER_SECOND = '2M';
+    public const REC20_CENTIMETRE_PER_SECOND = '2M';
 
     /**
      * decibel
      */
-    const REC20_DECIBEL = '2N';
+    public const REC20_DECIBEL = '2N';
 
     /**
      * kilobyte
      */
-    const REC20_KILOBYTE = '2P';
+    public const REC20_KILOBYTE = '2P';
 
     /**
      * kilobecquerel
      */
-    const REC20_KILOBECQUEREL = '2Q';
+    public const REC20_KILOBECQUEREL = '2Q';
 
     /**
      * kilocurie
      */
-    const REC20_KILOCURIE = '2R';
+    public const REC20_KILOCURIE = '2R';
 
     /**
      * megagram
      */
-    const REC20_MEGAGRAM = '2U';
+    public const REC20_MEGAGRAM = '2U';
 
     /**
      * metre per minute
      */
-    const REC20_METRE_PER_MINUTE = '2X';
+    public const REC20_METRE_PER_MINUTE = '2X';
 
     /**
      * milliroentgen
      */
-    const REC20_MILLIROENTGEN = '2Y';
+    public const REC20_MILLIROENTGEN = '2Y';
 
     /**
      * millivolt
      */
-    const REC20_MILLIVOLT = '2Z';
+    public const REC20_MILLIVOLT = '2Z';
 
     /**
      * megajoule
      */
-    const REC20_MEGAJOULE = '3B';
+    public const REC20_MEGAJOULE = '3B';
 
     /**
      * manmonth
      */
-    const REC20_MANMONTH = '3C';
+    public const REC20_MANMONTH = '3C';
 
     /**
      * centistokes
      */
-    const REC20_CENTISTOKES = '4C';
+    public const REC20_CENTISTOKES = '4C';
 
     /**
      * microlitre
      */
-    const REC20_MICROLITRE = '4G';
+    public const REC20_MICROLITRE = '4G';
 
     /**
      * micrometre (micron)
      */
-    const REC20_MICROMETRE_MICRON = '4H';
+    public const REC20_MICROMETRE_MICRON = '4H';
 
     /**
      * milliampere
      */
-    const REC20_MILLIAMPERE = '4K';
+    public const REC20_MILLIAMPERE = '4K';
 
     /**
      * megabyte
      */
-    const REC20_MEGABYTE = '4L';
+    public const REC20_MEGABYTE = '4L';
 
     /**
      * milligram per hour
      */
-    const REC20_MILLIGRAM_PER_HOUR = '4M';
+    public const REC20_MILLIGRAM_PER_HOUR = '4M';
 
     /**
      * megabecquerel
      */
-    const REC20_MEGABECQUEREL = '4N';
+    public const REC20_MEGABECQUEREL = '4N';
 
     /**
      * microfarad
      */
-    const REC20_MICROFARAD = '4O';
+    public const REC20_MICROFARAD = '4O';
 
     /**
      * newton per metre
      */
-    const REC20_NEWTON_PER_METRE = '4P';
+    public const REC20_NEWTON_PER_METRE = '4P';
 
     /**
      * ounce inch
      */
-    const REC20_OUNCE_INCH = '4Q';
+    public const REC20_OUNCE_INCH = '4Q';
 
     /**
      * ounce foot
      */
-    const REC20_OUNCE_FOOT = '4R';
+    public const REC20_OUNCE_FOOT = '4R';
 
     /**
      * picofarad
      */
-    const REC20_PICOFARAD = '4T';
+    public const REC20_PICOFARAD = '4T';
 
     /**
      * pound per hour
      */
-    const REC20_POUND_PER_HOUR = '4U';
+    public const REC20_POUND_PER_HOUR = '4U';
 
     /**
      * ton (US) per hour
      */
-    const REC20_TON_US_PER_HOUR = '4W';
+    public const REC20_TON_US_PER_HOUR = '4W';
 
     /**
      * kilolitre per hour
      */
-    const REC20_KILOLITRE_PER_HOUR = '4X';
+    public const REC20_KILOLITRE_PER_HOUR = '4X';
 
     /**
      * barrel (US) per minute
      */
-    const REC20_BARREL_US_PER_MINUTE = '5A';
+    public const REC20_BARREL_US_PER_MINUTE = '5A';
 
     /**
      * batch
      */
-    const REC20_BATCH = '5B';
+    public const REC20_BATCH = '5B';
 
     /**
      * MMSCF/day
      */
-    const REC20_MMSCF_DAY = '5E';
+    public const REC20_MMSCF_DAY = '5E';
 
     /**
      * hydraulic horse power
      */
-    const REC20_HYDRAULIC_HORSE_POWER = '5J';
+    public const REC20_HYDRAULIC_HORSE_POWER = '5J';
 
     /**
      * ampere square metre per joule second
      */
-    const REC20_AMPERE_SQUARE_METRE_PER_JOULE_SECOND = 'A10';
+    public const REC20_AMPERE_SQUARE_METRE_PER_JOULE_SECOND = 'A10';
 
     /**
      * angstrom
      */
-    const REC20_ANGSTROM = 'A11';
+    public const REC20_ANGSTROM = 'A11';
 
     /**
      * astronomical unit
      */
-    const REC20_ASTRONOMICAL_UNIT = 'A12';
+    public const REC20_ASTRONOMICAL_UNIT = 'A12';
 
     /**
      * attojoule
      */
-    const REC20_ATTOJOULE = 'A13';
+    public const REC20_ATTOJOULE = 'A13';
 
     /**
      * barn
      */
-    const REC20_BARN = 'A14';
+    public const REC20_BARN = 'A14';
 
     /**
      * barn per electronvolt
      */
-    const REC20_BARN_PER_ELECTRONVOLT = 'A15';
+    public const REC20_BARN_PER_ELECTRONVOLT = 'A15';
 
     /**
      * barn per steradian electronvolt
      */
-    const REC20_BARN_PER_STERADIAN_ELECTRONVOLT = 'A16';
+    public const REC20_BARN_PER_STERADIAN_ELECTRONVOLT = 'A16';
 
     /**
      * barn per steradian
      */
-    const REC20_BARN_PER_STERADIAN = 'A17';
+    public const REC20_BARN_PER_STERADIAN = 'A17';
 
     /**
      * becquerel per kilogram
      */
-    const REC20_BECQUEREL_PER_KILOGRAM = 'A18';
+    public const REC20_BECQUEREL_PER_KILOGRAM = 'A18';
 
     /**
      * becquerel per cubic metre
      */
-    const REC20_BECQUEREL_PER_CUBIC_METRE = 'A19';
+    public const REC20_BECQUEREL_PER_CUBIC_METRE = 'A19';
 
     /**
      * ampere per centimetre
      */
-    const REC20_AMPERE_PER_CENTIMETRE = 'A2';
+    public const REC20_AMPERE_PER_CENTIMETRE = 'A2';
 
     /**
@@ -450,10 +450,10 @@
      * degree Rankine
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SECOND_SQUARE_FOOT_DEGREE_RANKINE = 'A20';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SECOND_SQUARE_FOOT_DEGREE_RANKINE = 'A20';
 
     /**
      * British thermal unit (international table) per pound degree Rankine
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_POUND_DEGREE_RANKINE = 'A21';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_POUND_DEGREE_RANKINE = 'A21';
 
     /**
@@ -461,5 +461,5 @@
      * Rankine
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SECOND_FOOT_DEGREE_RANKINE = 'A22';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SECOND_FOOT_DEGREE_RANKINE = 'A22';
 
     /**
@@ -467,4245 +467,4245 @@
      * Rankine
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_HOUR_SQUARE_FOOT_DEGREE_RANKINE = 'A23';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_HOUR_SQUARE_FOOT_DEGREE_RANKINE = 'A23';
 
     /**
      * candela per square metre
      */
-    const REC20_CANDELA_PER_SQUARE_METRE = 'A24';
+    public const REC20_CANDELA_PER_SQUARE_METRE = 'A24';
 
     /**
      * coulomb metre
      */
-    const REC20_COULOMB_METRE = 'A26';
+    public const REC20_COULOMB_METRE = 'A26';
 
     /**
      * coulomb metre squared per volt
      */
-    const REC20_COULOMB_METRE_SQUARED_PER_VOLT = 'A27';
+    public const REC20_COULOMB_METRE_SQUARED_PER_VOLT = 'A27';
 
     /**
      * coulomb per cubic centimetre
      */
-    const REC20_COULOMB_PER_CUBIC_CENTIMETRE = 'A28';
+    public const REC20_COULOMB_PER_CUBIC_CENTIMETRE = 'A28';
 
     /**
      * coulomb per cubic metre
      */
-    const REC20_COULOMB_PER_CUBIC_METRE = 'A29';
+    public const REC20_COULOMB_PER_CUBIC_METRE = 'A29';
 
     /**
      * ampere per millimetre
      */
-    const REC20_AMPERE_PER_MILLIMETRE = 'A3';
+    public const REC20_AMPERE_PER_MILLIMETRE = 'A3';
 
     /**
      * coulomb per cubic millimetre
      */
-    const REC20_COULOMB_PER_CUBIC_MILLIMETRE = 'A30';
+    public const REC20_COULOMB_PER_CUBIC_MILLIMETRE = 'A30';
 
     /**
      * coulomb per kilogram second
      */
-    const REC20_COULOMB_PER_KILOGRAM_SECOND = 'A31';
+    public const REC20_COULOMB_PER_KILOGRAM_SECOND = 'A31';
 
     /**
      * coulomb per mole
      */
-    const REC20_COULOMB_PER_MOLE = 'A32';
+    public const REC20_COULOMB_PER_MOLE = 'A32';
 
     /**
      * coulomb per square centimetre
      */
-    const REC20_COULOMB_PER_SQUARE_CENTIMETRE = 'A33';
+    public const REC20_COULOMB_PER_SQUARE_CENTIMETRE = 'A33';
 
     /**
      * coulomb per square metre
      */
-    const REC20_COULOMB_PER_SQUARE_METRE = 'A34';
+    public const REC20_COULOMB_PER_SQUARE_METRE = 'A34';
 
     /**
      * coulomb per square millimetre
      */
-    const REC20_COULOMB_PER_SQUARE_MILLIMETRE = 'A35';
+    public const REC20_COULOMB_PER_SQUARE_MILLIMETRE = 'A35';
 
     /**
      * cubic centimetre per mole
      */
-    const REC20_CUBIC_CENTIMETRE_PER_MOLE = 'A36';
+    public const REC20_CUBIC_CENTIMETRE_PER_MOLE = 'A36';
 
     /**
      * cubic decimetre per mole
      */
-    const REC20_CUBIC_DECIMETRE_PER_MOLE = 'A37';
+    public const REC20_CUBIC_DECIMETRE_PER_MOLE = 'A37';
 
     /**
      * cubic metre per coulomb
      */
-    const REC20_CUBIC_METRE_PER_COULOMB = 'A38';
+    public const REC20_CUBIC_METRE_PER_COULOMB = 'A38';
 
     /**
      * cubic metre per kilogram
      */
-    const REC20_CUBIC_METRE_PER_KILOGRAM = 'A39';
+    public const REC20_CUBIC_METRE_PER_KILOGRAM = 'A39';
 
     /**
      * ampere per square centimetre
      */
-    const REC20_AMPERE_PER_SQUARE_CENTIMETRE = 'A4';
+    public const REC20_AMPERE_PER_SQUARE_CENTIMETRE = 'A4';
 
     /**
      * cubic metre per mole
      */
-    const REC20_CUBIC_METRE_PER_MOLE = 'A40';
+    public const REC20_CUBIC_METRE_PER_MOLE = 'A40';
 
     /**
      * ampere per square metre
      */
-    const REC20_AMPERE_PER_SQUARE_METRE = 'A41';
+    public const REC20_AMPERE_PER_SQUARE_METRE = 'A41';
 
     /**
      * curie per kilogram
      */
-    const REC20_CURIE_PER_KILOGRAM = 'A42';
+    public const REC20_CURIE_PER_KILOGRAM = 'A42';
 
     /**
      * deadweight tonnage
      */
-    const REC20_DEADWEIGHT_TONNAGE = 'A43';
+    public const REC20_DEADWEIGHT_TONNAGE = 'A43';
 
     /**
      * decalitre
      */
-    const REC20_DECALITRE = 'A44';
+    public const REC20_DECALITRE = 'A44';
 
     /**
      * decametre
      */
-    const REC20_DECAMETRE = 'A45';
+    public const REC20_DECAMETRE = 'A45';
 
     /**
      * decitex
      */
-    const REC20_DECITEX = 'A47';
+    public const REC20_DECITEX = 'A47';
 
     /**
      * degree Rankine
      */
-    const REC20_DEGREE_RANKINE = 'A48';
+    public const REC20_DEGREE_RANKINE = 'A48';
 
     /**
      * ampere square metre
      */
-    const REC20_AMPERE_SQUARE_METRE = 'A5';
+    public const REC20_AMPERE_SQUARE_METRE = 'A5';
 
     /**
      * electronvolt
      */
-    const REC20_ELECTRONVOLT = 'A53';
+    public const REC20_ELECTRONVOLT = 'A53';
 
     /**
      * electronvolt per metre
      */
-    const REC20_ELECTRONVOLT_PER_METRE = 'A54';
+    public const REC20_ELECTRONVOLT_PER_METRE = 'A54';
 
     /**
      * electronvolt square metre
      */
-    const REC20_ELECTRONVOLT_SQUARE_METRE = 'A55';
+    public const REC20_ELECTRONVOLT_SQUARE_METRE = 'A55';
 
     /**
      * electronvolt square metre per kilogram
      */
-    const REC20_ELECTRONVOLT_SQUARE_METRE_PER_KILOGRAM = 'A56';
+    public const REC20_ELECTRONVOLT_SQUARE_METRE_PER_KILOGRAM = 'A56';
 
     /**
      * 8-part cloud cover
      */
-    const REC20_8PART_CLOUD_COVER = 'A59';
+    public const REC20_8PART_CLOUD_COVER = 'A59';
 
     /**
      * ampere per square metre kelvin squared
      */
-    const REC20_AMPERE_PER_SQUARE_METRE_KELVIN_SQUARED = 'A6';
+    public const REC20_AMPERE_PER_SQUARE_METRE_KELVIN_SQUARED = 'A6';
 
     /**
      * exajoule
      */
-    const REC20_EXAJOULE = 'A68';
+    public const REC20_EXAJOULE = 'A68';
 
     /**
      * farad per metre
      */
-    const REC20_FARAD_PER_METRE = 'A69';
+    public const REC20_FARAD_PER_METRE = 'A69';
 
     /**
      * ampere per square millimetre
      */
-    const REC20_AMPERE_PER_SQUARE_MILLIMETRE = 'A7';
+    public const REC20_AMPERE_PER_SQUARE_MILLIMETRE = 'A7';
 
     /**
      * femtojoule
      */
-    const REC20_FEMTOJOULE = 'A70';
+    public const REC20_FEMTOJOULE = 'A70';
 
     /**
      * femtometre
      */
-    const REC20_FEMTOMETRE = 'A71';
+    public const REC20_FEMTOMETRE = 'A71';
 
     /**
      * foot per second squared
      */
-    const REC20_FOOT_PER_SECOND_SQUARED = 'A73';
+    public const REC20_FOOT_PER_SECOND_SQUARED = 'A73';
 
     /**
      * foot pound-force per second
      */
-    const REC20_FOOT_POUNDFORCE_PER_SECOND = 'A74';
+    public const REC20_FOOT_POUNDFORCE_PER_SECOND = 'A74';
 
     /**
      * freight ton
      */
-    const REC20_FREIGHT_TON = 'A75';
+    public const REC20_FREIGHT_TON = 'A75';
 
     /**
      * gal
      */
-    const REC20_GAL = 'A76';
+    public const REC20_GAL = 'A76';
 
     /**
      * ampere second
      */
-    const REC20_AMPERE_SECOND = 'A8';
+    public const REC20_AMPERE_SECOND = 'A8';
 
     /**
      * gigacoulomb per cubic metre
      */
-    const REC20_GIGACOULOMB_PER_CUBIC_METRE = 'A84';
+    public const REC20_GIGACOULOMB_PER_CUBIC_METRE = 'A84';
 
     /**
      * gigaelectronvolt
      */
-    const REC20_GIGAELECTRONVOLT = 'A85';
+    public const REC20_GIGAELECTRONVOLT = 'A85';
 
     /**
      * gigahertz
      */
-    const REC20_GIGAHERTZ = 'A86';
+    public const REC20_GIGAHERTZ = 'A86';
 
     /**
      * gigaohm
      */
-    const REC20_GIGAOHM = 'A87';
+    public const REC20_GIGAOHM = 'A87';
 
     /**
      * gigaohm metre
      */
-    const REC20_GIGAOHM_METRE = 'A88';
+    public const REC20_GIGAOHM_METRE = 'A88';
 
     /**
      * gigapascal
      */
-    const REC20_GIGAPASCAL = 'A89';
+    public const REC20_GIGAPASCAL = 'A89';
 
     /**
      * rate
      */
-    const REC20_RATE = 'A9';
+    public const REC20_RATE = 'A9';
 
     /**
      * gigawatt
      */
-    const REC20_GIGAWATT = 'A90';
+    public const REC20_GIGAWATT = 'A90';
 
     /**
      * gon
      */
-    const REC20_GON = 'A91';
+    public const REC20_GON = 'A91';
 
     /**
      * gram per cubic metre
      */
-    const REC20_GRAM_PER_CUBIC_METRE = 'A93';
+    public const REC20_GRAM_PER_CUBIC_METRE = 'A93';
 
     /**
      * gram per mole
      */
-    const REC20_GRAM_PER_MOLE = 'A94';
+    public const REC20_GRAM_PER_MOLE = 'A94';
 
     /**
      * gray
      */
-    const REC20_GRAY = 'A95';
+    public const REC20_GRAY = 'A95';
 
     /**
      * gray per second
      */
-    const REC20_GRAY_PER_SECOND = 'A96';
+    public const REC20_GRAY_PER_SECOND = 'A96';
 
     /**
      * hectopascal
      */
-    const REC20_HECTOPASCAL = 'A97';
+    public const REC20_HECTOPASCAL = 'A97';
 
     /**
      * henry per metre
      */
-    const REC20_HENRY_PER_METRE = 'A98';
+    public const REC20_HENRY_PER_METRE = 'A98';
 
     /**
      * bit
      */
-    const REC20_BIT = 'A99';
+    public const REC20_BIT = 'A99';
 
     /**
      * ball
      */
-    const REC20_BALL = 'AA';
+    public const REC20_BALL = 'AA';
 
     /**
      * bulk pack
      */
-    const REC20_BULK_PACK = 'AB';
+    public const REC20_BULK_PACK = 'AB';
 
     /**
      * acre
      */
-    const REC20_ACRE = 'ACR';
+    public const REC20_ACRE = 'ACR';
 
     /**
      * activity
      */
-    const REC20_ACTIVITY = 'ACT';
+    public const REC20_ACTIVITY = 'ACT';
 
     /**
      * byte
      */
-    const REC20_BYTE = 'AD';
+    public const REC20_BYTE = 'AD';
 
     /**
      * ampere per metre
      */
-    const REC20_AMPERE_PER_METRE = 'AE';
+    public const REC20_AMPERE_PER_METRE = 'AE';
 
     /**
      * additional minute
      */
-    const REC20_ADDITIONAL_MINUTE = 'AH';
+    public const REC20_ADDITIONAL_MINUTE = 'AH';
 
     /**
      * average minute per call
      */
-    const REC20_AVERAGE_MINUTE_PER_CALL = 'AI';
+    public const REC20_AVERAGE_MINUTE_PER_CALL = 'AI';
 
     /**
      * fathom
      */
-    const REC20_FATHOM = 'AK';
+    public const REC20_FATHOM = 'AK';
 
     /**
      * access line
      */
-    const REC20_ACCESS_LINE = 'AL';
+    public const REC20_ACCESS_LINE = 'AL';
 
     /**
      * ampere hour
      */
-    const REC20_AMPERE_HOUR = 'AMH';
+    public const REC20_AMPERE_HOUR = 'AMH';
 
     /**
      * ampere
      */
-    const REC20_AMPERE = 'AMP';
+    public const REC20_AMPERE = 'AMP';
 
     /**
      * year
      */
-    const REC20_YEAR = 'ANN';
+    public const REC20_YEAR = 'ANN';
 
     /**
      * troy ounce or apothecary ounce
      */
-    const REC20_TROY_OUNCE_OR_APOTHECARY_OUNCE = 'APZ';
+    public const REC20_TROY_OUNCE_OR_APOTHECARY_OUNCE = 'APZ';
 
     /**
      * anti-hemophilic factor (AHF) unit
      */
-    const REC20_ANTIHEMOPHILIC_FACTOR_AHF_UNIT = 'AQ';
+    public const REC20_ANTIHEMOPHILIC_FACTOR_AHF_UNIT = 'AQ';
 
     /**
      * assortment
      */
-    const REC20_ASSORTMENT = 'AS';
+    public const REC20_ASSORTMENT = 'AS';
 
     /**
      * alcoholic strength by mass
      */
-    const REC20_ALCOHOLIC_STRENGTH_BY_MASS = 'ASM';
+    public const REC20_ALCOHOLIC_STRENGTH_BY_MASS = 'ASM';
 
     /**
      * alcoholic strength by volume
      */
-    const REC20_ALCOHOLIC_STRENGTH_BY_VOLUME = 'ASU';
+    public const REC20_ALCOHOLIC_STRENGTH_BY_VOLUME = 'ASU';
 
     /**
      * standard atmosphere
      */
-    const REC20_STANDARD_ATMOSPHERE = 'ATM';
+    public const REC20_STANDARD_ATMOSPHERE = 'ATM';
 
     /**
      * american wire gauge
      */
-    const REC20_AMERICAN_WIRE_GAUGE = 'AWG';
+    public const REC20_AMERICAN_WIRE_GAUGE = 'AWG';
 
     /**
      * assembly
      */
-    const REC20_ASSEMBLY = 'AY';
+    public const REC20_ASSEMBLY = 'AY';
 
     /**
      * British thermal unit (international table) per pound
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_POUND = 'AZ';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_POUND = 'AZ';
 
     /**
      * barrel (US) per day
      */
-    const REC20_BARREL_US_PER_DAY = 'B1';
+    public const REC20_BARREL_US_PER_DAY = 'B1';
 
     /**
      * bit per second
      */
-    const REC20_BIT_PER_SECOND = 'B10';
+    public const REC20_BIT_PER_SECOND = 'B10';
 
     /**
      * joule per kilogram kelvin
      */
-    const REC20_JOULE_PER_KILOGRAM_KELVIN = 'B11';
+    public const REC20_JOULE_PER_KILOGRAM_KELVIN = 'B11';
 
     /**
      * joule per metre
      */
-    const REC20_JOULE_PER_METRE = 'B12';
+    public const REC20_JOULE_PER_METRE = 'B12';
 
     /**
      * joule per square metre
      */
-    const REC20_JOULE_PER_SQUARE_METRE = 'B13';
+    public const REC20_JOULE_PER_SQUARE_METRE = 'B13';
 
     /**
      * joule per metre to the fourth power
      */
-    const REC20_JOULE_PER_METRE_TO_THE_FOURTH_POWER = 'B14';
+    public const REC20_JOULE_PER_METRE_TO_THE_FOURTH_POWER = 'B14';
 
     /**
      * joule per mole
      */
-    const REC20_JOULE_PER_MOLE = 'B15';
+    public const REC20_JOULE_PER_MOLE = 'B15';
 
     /**
      * joule per mole kelvin
      */
-    const REC20_JOULE_PER_MOLE_KELVIN = 'B16';
+    public const REC20_JOULE_PER_MOLE_KELVIN = 'B16';
 
     /**
      * credit
      */
-    const REC20_CREDIT = 'B17';
+    public const REC20_CREDIT = 'B17';
 
     /**
      * joule second
      */
-    const REC20_JOULE_SECOND = 'B18';
+    public const REC20_JOULE_SECOND = 'B18';
 
     /**
      * digit
      */
-    const REC20_DIGIT = 'B19';
+    public const REC20_DIGIT = 'B19';
 
     /**
      * joule square metre per kilogram
      */
-    const REC20_JOULE_SQUARE_METRE_PER_KILOGRAM = 'B20';
+    public const REC20_JOULE_SQUARE_METRE_PER_KILOGRAM = 'B20';
 
     /**
      * kelvin per watt
      */
-    const REC20_KELVIN_PER_WATT = 'B21';
+    public const REC20_KELVIN_PER_WATT = 'B21';
 
     /**
      * kiloampere
      */
-    const REC20_KILOAMPERE = 'B22';
+    public const REC20_KILOAMPERE = 'B22';
 
     /**
      * kiloampere per square metre
      */
-    const REC20_KILOAMPERE_PER_SQUARE_METRE = 'B23';
+    public const REC20_KILOAMPERE_PER_SQUARE_METRE = 'B23';
 
     /**
      * kiloampere per metre
      */
-    const REC20_KILOAMPERE_PER_METRE = 'B24';
+    public const REC20_KILOAMPERE_PER_METRE = 'B24';
 
     /**
      * kilobecquerel per kilogram
      */
-    const REC20_KILOBECQUEREL_PER_KILOGRAM = 'B25';
+    public const REC20_KILOBECQUEREL_PER_KILOGRAM = 'B25';
 
     /**
      * kilocoulomb
      */
-    const REC20_KILOCOULOMB = 'B26';
+    public const REC20_KILOCOULOMB = 'B26';
 
     /**
      * kilocoulomb per cubic metre
      */
-    const REC20_KILOCOULOMB_PER_CUBIC_METRE = 'B27';
+    public const REC20_KILOCOULOMB_PER_CUBIC_METRE = 'B27';
 
     /**
      * kilocoulomb per square metre
      */
-    const REC20_KILOCOULOMB_PER_SQUARE_METRE = 'B28';
+    public const REC20_KILOCOULOMB_PER_SQUARE_METRE = 'B28';
 
     /**
      * kiloelectronvolt
      */
-    const REC20_KILOELECTRONVOLT = 'B29';
+    public const REC20_KILOELECTRONVOLT = 'B29';
 
     /**
      * batting pound
      */
-    const REC20_BATTING_POUND = 'B3';
+    public const REC20_BATTING_POUND = 'B3';
 
     /**
      * gibibit
      */
-    const REC20_GIBIBIT = 'B30';
+    public const REC20_GIBIBIT = 'B30';
 
     /**
      * kilogram metre per second
      */
-    const REC20_KILOGRAM_METRE_PER_SECOND = 'B31';
+    public const REC20_KILOGRAM_METRE_PER_SECOND = 'B31';
 
     /**
      * kilogram metre squared
      */
-    const REC20_KILOGRAM_METRE_SQUARED = 'B32';
+    public const REC20_KILOGRAM_METRE_SQUARED = 'B32';
 
     /**
      * kilogram metre squared per second
      */
-    const REC20_KILOGRAM_METRE_SQUARED_PER_SECOND = 'B33';
+    public const REC20_KILOGRAM_METRE_SQUARED_PER_SECOND = 'B33';
 
     /**
      * kilogram per cubic decimetre
      */
-    const REC20_KILOGRAM_PER_CUBIC_DECIMETRE = 'B34';
+    public const REC20_KILOGRAM_PER_CUBIC_DECIMETRE = 'B34';
 
     /**
      * kilogram per litre
      */
-    const REC20_KILOGRAM_PER_LITRE = 'B35';
+    public const REC20_KILOGRAM_PER_LITRE = 'B35';
 
     /**
      * barrel, imperial
      */
-    const REC20_BARREL_IMPERIAL = 'B4';
+    public const REC20_BARREL_IMPERIAL = 'B4';
 
     /**
      * kilojoule per kelvin
      */
-    const REC20_KILOJOULE_PER_KELVIN = 'B41';
+    public const REC20_KILOJOULE_PER_KELVIN = 'B41';
 
     /**
      * kilojoule per kilogram
      */
-    const REC20_KILOJOULE_PER_KILOGRAM = 'B42';
+    public const REC20_KILOJOULE_PER_KILOGRAM = 'B42';
 
     /**
      * kilojoule per kilogram kelvin
      */
-    const REC20_KILOJOULE_PER_KILOGRAM_KELVIN = 'B43';
+    public const REC20_KILOJOULE_PER_KILOGRAM_KELVIN = 'B43';
 
     /**
      * kilojoule per mole
      */
-    const REC20_KILOJOULE_PER_MOLE = 'B44';
+    public const REC20_KILOJOULE_PER_MOLE = 'B44';
 
     /**
      * kilomole
      */
-    const REC20_KILOMOLE = 'B45';
+    public const REC20_KILOMOLE = 'B45';
 
     /**
      * kilomole per cubic metre
      */
-    const REC20_KILOMOLE_PER_CUBIC_METRE = 'B46';
+    public const REC20_KILOMOLE_PER_CUBIC_METRE = 'B46';
 
     /**
      * kilonewton
      */
-    const REC20_KILONEWTON = 'B47';
+    public const REC20_KILONEWTON = 'B47';
 
     /**
      * kilonewton metre
      */
-    const REC20_KILONEWTON_METRE = 'B48';
+    public const REC20_KILONEWTON_METRE = 'B48';
 
     /**
      * kiloohm
      */
-    const REC20_KILOOHM = 'B49';
+    public const REC20_KILOOHM = 'B49';
 
     /**
      * kiloohm metre
      */
-    const REC20_KILOOHM_METRE = 'B50';
+    public const REC20_KILOOHM_METRE = 'B50';
 
     /**
      * kilosecond
      */
-    const REC20_KILOSECOND = 'B52';
+    public const REC20_KILOSECOND = 'B52';
 
     /**
      * kilosiemens
      */
-    const REC20_KILOSIEMENS = 'B53';
+    public const REC20_KILOSIEMENS = 'B53';
 
     /**
      * kilosiemens per metre
      */
-    const REC20_KILOSIEMENS_PER_METRE = 'B54';
+    public const REC20_KILOSIEMENS_PER_METRE = 'B54';
 
     /**
      * kilovolt per metre
      */
-    const REC20_KILOVOLT_PER_METRE = 'B55';
+    public const REC20_KILOVOLT_PER_METRE = 'B55';
 
     /**
      * kiloweber per metre
      */
-    const REC20_KILOWEBER_PER_METRE = 'B56';
+    public const REC20_KILOWEBER_PER_METRE = 'B56';
 
     /**
      * light year
      */
-    const REC20_LIGHT_YEAR = 'B57';
+    public const REC20_LIGHT_YEAR = 'B57';
 
     /**
      * litre per mole
      */
-    const REC20_LITRE_PER_MOLE = 'B58';
+    public const REC20_LITRE_PER_MOLE = 'B58';
 
     /**
      * lumen hour
      */
-    const REC20_LUMEN_HOUR = 'B59';
+    public const REC20_LUMEN_HOUR = 'B59';
 
     /**
      * lumen per square metre
      */
-    const REC20_LUMEN_PER_SQUARE_METRE = 'B60';
+    public const REC20_LUMEN_PER_SQUARE_METRE = 'B60';
 
     /**
      * lumen per watt
      */
-    const REC20_LUMEN_PER_WATT = 'B61';
+    public const REC20_LUMEN_PER_WATT = 'B61';
 
     /**
      * lumen second
      */
-    const REC20_LUMEN_SECOND = 'B62';
+    public const REC20_LUMEN_SECOND = 'B62';
 
     /**
      * lux hour
      */
-    const REC20_LUX_HOUR = 'B63';
+    public const REC20_LUX_HOUR = 'B63';
 
     /**
      * lux second
      */
-    const REC20_LUX_SECOND = 'B64';
+    public const REC20_LUX_SECOND = 'B64';
 
     /**
      * megaampere per square metre
      */
-    const REC20_MEGAAMPERE_PER_SQUARE_METRE = 'B66';
+    public const REC20_MEGAAMPERE_PER_SQUARE_METRE = 'B66';
 
     /**
      * megabecquerel per kilogram
      */
-    const REC20_MEGABECQUEREL_PER_KILOGRAM = 'B67';
+    public const REC20_MEGABECQUEREL_PER_KILOGRAM = 'B67';
 
     /**
      * gigabit
      */
-    const REC20_GIGABIT = 'B68';
+    public const REC20_GIGABIT = 'B68';
 
     /**
      * megacoulomb per cubic metre
      */
-    const REC20_MEGACOULOMB_PER_CUBIC_METRE = 'B69';
+    public const REC20_MEGACOULOMB_PER_CUBIC_METRE = 'B69';
 
     /**
      * cycle
      */
-    const REC20_CYCLE = 'B7';
+    public const REC20_CYCLE = 'B7';
 
     /**
      * megacoulomb per square metre
      */
-    const REC20_MEGACOULOMB_PER_SQUARE_METRE = 'B70';
+    public const REC20_MEGACOULOMB_PER_SQUARE_METRE = 'B70';
 
     /**
      * megaelectronvolt
      */
-    const REC20_MEGAELECTRONVOLT = 'B71';
+    public const REC20_MEGAELECTRONVOLT = 'B71';
 
     /**
      * megagram per cubic metre
      */
-    const REC20_MEGAGRAM_PER_CUBIC_METRE = 'B72';
+    public const REC20_MEGAGRAM_PER_CUBIC_METRE = 'B72';
 
     /**
      * meganewton
      */
-    const REC20_MEGANEWTON = 'B73';
+    public const REC20_MEGANEWTON = 'B73';
 
     /**
      * meganewton metre
      */
-    const REC20_MEGANEWTON_METRE = 'B74';
+    public const REC20_MEGANEWTON_METRE = 'B74';
 
     /**
      * megaohm
      */
-    const REC20_MEGAOHM = 'B75';
+    public const REC20_MEGAOHM = 'B75';
 
     /**
      * megaohm metre
      */
-    const REC20_MEGAOHM_METRE = 'B76';
+    public const REC20_MEGAOHM_METRE = 'B76';
 
     /**
      * megasiemens per metre
      */
-    const REC20_MEGASIEMENS_PER_METRE = 'B77';
+    public const REC20_MEGASIEMENS_PER_METRE = 'B77';
 
     /**
      * megavolt
      */
-    const REC20_MEGAVOLT = 'B78';
+    public const REC20_MEGAVOLT = 'B78';
 
     /**
      * megavolt per metre
      */
-    const REC20_MEGAVOLT_PER_METRE = 'B79';
+    public const REC20_MEGAVOLT_PER_METRE = 'B79';
 
     /**
      * joule per cubic metre
      */
-    const REC20_JOULE_PER_CUBIC_METRE = 'B8';
+    public const REC20_JOULE_PER_CUBIC_METRE = 'B8';
 
     /**
      * gigabit per second
      */
-    const REC20_GIGABIT_PER_SECOND = 'B80';
+    public const REC20_GIGABIT_PER_SECOND = 'B80';
 
     /**
      * reciprocal metre squared reciprocal second
      */
-    const REC20_RECIPROCAL_METRE_SQUARED_RECIPROCAL_SECOND = 'B81';
+    public const REC20_RECIPROCAL_METRE_SQUARED_RECIPROCAL_SECOND = 'B81';
 
     /**
      * inch per linear foot
      */
-    const REC20_INCH_PER_LINEAR_FOOT = 'B82';
+    public const REC20_INCH_PER_LINEAR_FOOT = 'B82';
 
     /**
      * metre to the fourth power
      */
-    const REC20_METRE_TO_THE_FOURTH_POWER = 'B83';
+    public const REC20_METRE_TO_THE_FOURTH_POWER = 'B83';
 
     /**
      * microampere
      */
-    const REC20_MICROAMPERE = 'B84';
+    public const REC20_MICROAMPERE = 'B84';
 
     /**
      * microbar
      */
-    const REC20_MICROBAR = 'B85';
+    public const REC20_MICROBAR = 'B85';
 
     /**
      * microcoulomb
      */
-    const REC20_MICROCOULOMB = 'B86';
+    public const REC20_MICROCOULOMB = 'B86';
 
     /**
      * microcoulomb per cubic metre
      */
-    const REC20_MICROCOULOMB_PER_CUBIC_METRE = 'B87';
+    public const REC20_MICROCOULOMB_PER_CUBIC_METRE = 'B87';
 
     /**
      * microcoulomb per square metre
      */
-    const REC20_MICROCOULOMB_PER_SQUARE_METRE = 'B88';
+    public const REC20_MICROCOULOMB_PER_SQUARE_METRE = 'B88';
 
     /**
      * microfarad per metre
      */
-    const REC20_MICROFARAD_PER_METRE = 'B89';
+    public const REC20_MICROFARAD_PER_METRE = 'B89';
 
     /**
      * microhenry
      */
-    const REC20_MICROHENRY = 'B90';
+    public const REC20_MICROHENRY = 'B90';
 
     /**
      * microhenry per metre
      */
-    const REC20_MICROHENRY_PER_METRE = 'B91';
+    public const REC20_MICROHENRY_PER_METRE = 'B91';
 
     /**
      * micronewton
      */
-    const REC20_MICRONEWTON = 'B92';
+    public const REC20_MICRONEWTON = 'B92';
 
     /**
      * micronewton metre
      */
-    const REC20_MICRONEWTON_METRE = 'B93';
+    public const REC20_MICRONEWTON_METRE = 'B93';
 
     /**
      * microohm
      */
-    const REC20_MICROOHM = 'B94';
+    public const REC20_MICROOHM = 'B94';
 
     /**
      * microohm metre
      */
-    const REC20_MICROOHM_METRE = 'B95';
+    public const REC20_MICROOHM_METRE = 'B95';
 
     /**
      * micropascal
      */
-    const REC20_MICROPASCAL = 'B96';
+    public const REC20_MICROPASCAL = 'B96';
 
     /**
      * microradian
      */
-    const REC20_MICRORADIAN = 'B97';
+    public const REC20_MICRORADIAN = 'B97';
 
     /**
      * microsecond
      */
-    const REC20_MICROSECOND = 'B98';
+    public const REC20_MICROSECOND = 'B98';
 
     /**
      * microsiemens
      */
-    const REC20_MICROSIEMENS = 'B99';
+    public const REC20_MICROSIEMENS = 'B99';
 
     /**
      * bar [unit of pressure]
      */
-    const REC20_BAR_UNIT_OF_PRESSURE = 'BAR';
+    public const REC20_BAR_UNIT_OF_PRESSURE = 'BAR';
 
     /**
      * base box
      */
-    const REC20_BASE_BOX = 'BB';
+    public const REC20_BASE_BOX = 'BB';
 
     /**
      * board foot
      */
-    const REC20_BOARD_FOOT = 'BFT';
+    public const REC20_BOARD_FOOT = 'BFT';
 
     /**
      * brake horse power
      */
-    const REC20_BRAKE_HORSE_POWER = 'BHP';
+    public const REC20_BRAKE_HORSE_POWER = 'BHP';
 
     /**
      * billion (EUR)
      */
-    const REC20_BILLION_EUR = 'BIL';
+    public const REC20_BILLION_EUR = 'BIL';
 
     /**
      * dry barrel (US)
      */
-    const REC20_DRY_BARREL_US = 'BLD';
+    public const REC20_DRY_BARREL_US = 'BLD';
 
     /**
      * barrel (US)
      */
-    const REC20_BARREL_US = 'BLL';
+    public const REC20_BARREL_US = 'BLL';
 
     /**
      * hundred board foot
      */
-    const REC20_HUNDRED_BOARD_FOOT = 'BP';
+    public const REC20_HUNDRED_BOARD_FOOT = 'BP';
 
     /**
      * beats per minute
      */
-    const REC20_BEATS_PER_MINUTE = 'BPM';
+    public const REC20_BEATS_PER_MINUTE = 'BPM';
 
     /**
      * becquerel
      */
-    const REC20_BECQUEREL = 'BQL';
+    public const REC20_BECQUEREL = 'BQL';
 
     /**
      * British thermal unit (international table)
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE = 'BTU';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE = 'BTU';
 
     /**
      * bushel (US)
      */
-    const REC20_BUSHEL_US = 'BUA';
+    public const REC20_BUSHEL_US = 'BUA';
 
     /**
      * bushel (UK)
      */
-    const REC20_BUSHEL_UK = 'BUI';
+    public const REC20_BUSHEL_UK = 'BUI';
 
     /**
      * call
      */
-    const REC20_CALL = 'C0';
+    public const REC20_CALL = 'C0';
 
     /**
      * millifarad
      */
-    const REC20_MILLIFARAD = 'C10';
+    public const REC20_MILLIFARAD = 'C10';
 
     /**
      * milligal
      */
-    const REC20_MILLIGAL = 'C11';
+    public const REC20_MILLIGAL = 'C11';
 
     /**
      * milligram per metre
      */
-    const REC20_MILLIGRAM_PER_METRE = 'C12';
+    public const REC20_MILLIGRAM_PER_METRE = 'C12';
 
     /**
      * milligray
      */
-    const REC20_MILLIGRAY = 'C13';
+    public const REC20_MILLIGRAY = 'C13';
 
     /**
      * millihenry
      */
-    const REC20_MILLIHENRY = 'C14';
+    public const REC20_MILLIHENRY = 'C14';
 
     /**
      * millijoule
      */
-    const REC20_MILLIJOULE = 'C15';
+    public const REC20_MILLIJOULE = 'C15';
 
     /**
      * millimetre per second
      */
-    const REC20_MILLIMETRE_PER_SECOND = 'C16';
+    public const REC20_MILLIMETRE_PER_SECOND = 'C16';
 
     /**
      * millimetre squared per second
      */
-    const REC20_MILLIMETRE_SQUARED_PER_SECOND = 'C17';
+    public const REC20_MILLIMETRE_SQUARED_PER_SECOND = 'C17';
 
     /**
      * millimole
      */
-    const REC20_MILLIMOLE = 'C18';
+    public const REC20_MILLIMOLE = 'C18';
 
     /**
      * mole per kilogram
      */
-    const REC20_MOLE_PER_KILOGRAM = 'C19';
+    public const REC20_MOLE_PER_KILOGRAM = 'C19';
 
     /**
      * millinewton
      */
-    const REC20_MILLINEWTON = 'C20';
+    public const REC20_MILLINEWTON = 'C20';
 
     /**
      * kibibit
      */
-    const REC20_KIBIBIT = 'C21';
+    public const REC20_KIBIBIT = 'C21';
 
     /**
      * millinewton per metre
      */
-    const REC20_MILLINEWTON_PER_METRE = 'C22';
+    public const REC20_MILLINEWTON_PER_METRE = 'C22';
 
     /**
      * milliohm metre
      */
-    const REC20_MILLIOHM_METRE = 'C23';
+    public const REC20_MILLIOHM_METRE = 'C23';
 
     /**
      * millipascal second
      */
-    const REC20_MILLIPASCAL_SECOND = 'C24';
+    public const REC20_MILLIPASCAL_SECOND = 'C24';
 
     /**
      * milliradian
      */
-    const REC20_MILLIRADIAN = 'C25';
+    public const REC20_MILLIRADIAN = 'C25';
 
     /**
      * millisecond
      */
-    const REC20_MILLISECOND = 'C26';
+    public const REC20_MILLISECOND = 'C26';
 
     /**
      * millisiemens
      */
-    const REC20_MILLISIEMENS = 'C27';
+    public const REC20_MILLISIEMENS = 'C27';
 
     /**
      * millisievert
      */
-    const REC20_MILLISIEVERT = 'C28';
+    public const REC20_MILLISIEVERT = 'C28';
 
     /**
      * millitesla
      */
-    const REC20_MILLITESLA = 'C29';
+    public const REC20_MILLITESLA = 'C29';
 
     /**
      * microvolt per metre
      */
-    const REC20_MICROVOLT_PER_METRE = 'C3';
+    public const REC20_MICROVOLT_PER_METRE = 'C3';
 
     /**
      * millivolt per metre
      */
-    const REC20_MILLIVOLT_PER_METRE = 'C30';
+    public const REC20_MILLIVOLT_PER_METRE = 'C30';
 
     /**
      * milliwatt
      */
-    const REC20_MILLIWATT = 'C31';
+    public const REC20_MILLIWATT = 'C31';
 
     /**
      * milliwatt per square metre
      */
-    const REC20_MILLIWATT_PER_SQUARE_METRE = 'C32';
+    public const REC20_MILLIWATT_PER_SQUARE_METRE = 'C32';
 
     /**
      * milliweber
      */
-    const REC20_MILLIWEBER = 'C33';
+    public const REC20_MILLIWEBER = 'C33';
 
     /**
      * mole
      */
-    const REC20_MOLE = 'C34';
+    public const REC20_MOLE = 'C34';
 
     /**
      * mole per cubic decimetre
      */
-    const REC20_MOLE_PER_CUBIC_DECIMETRE = 'C35';
+    public const REC20_MOLE_PER_CUBIC_DECIMETRE = 'C35';
 
     /**
      * mole per cubic metre
      */
-    const REC20_MOLE_PER_CUBIC_METRE = 'C36';
+    public const REC20_MOLE_PER_CUBIC_METRE = 'C36';
 
     /**
      * kilobit
      */
-    const REC20_KILOBIT = 'C37';
+    public const REC20_KILOBIT = 'C37';
 
     /**
      * mole per litre
      */
-    const REC20_MOLE_PER_LITRE = 'C38';
+    public const REC20_MOLE_PER_LITRE = 'C38';
 
     /**
      * nanoampere
      */
-    const REC20_NANOAMPERE = 'C39';
+    public const REC20_NANOAMPERE = 'C39';
 
     /**
      * nanocoulomb
      */
-    const REC20_NANOCOULOMB = 'C40';
+    public const REC20_NANOCOULOMB = 'C40';
 
     /**
      * nanofarad
      */
-    const REC20_NANOFARAD = 'C41';
+    public const REC20_NANOFARAD = 'C41';
 
     /**
      * nanofarad per metre
      */
-    const REC20_NANOFARAD_PER_METRE = 'C42';
+    public const REC20_NANOFARAD_PER_METRE = 'C42';
 
     /**
      * nanohenry
      */
-    const REC20_NANOHENRY = 'C43';
+    public const REC20_NANOHENRY = 'C43';
 
     /**
      * nanohenry per metre
      */
-    const REC20_NANOHENRY_PER_METRE = 'C44';
+    public const REC20_NANOHENRY_PER_METRE = 'C44';
 
     /**
      * nanometre
      */
-    const REC20_NANOMETRE = 'C45';
+    public const REC20_NANOMETRE = 'C45';
 
     /**
      * nanoohm metre
      */
-    const REC20_NANOOHM_METRE = 'C46';
+    public const REC20_NANOOHM_METRE = 'C46';
 
     /**
      * nanosecond
      */
-    const REC20_NANOSECOND = 'C47';
+    public const REC20_NANOSECOND = 'C47';
 
     /**
      * nanotesla
      */
-    const REC20_NANOTESLA = 'C48';
+    public const REC20_NANOTESLA = 'C48';
 
     /**
      * nanowatt
      */
-    const REC20_NANOWATT = 'C49';
+    public const REC20_NANOWATT = 'C49';
 
     /**
      * neper
      */
-    const REC20_NEPER = 'C50';
+    public const REC20_NEPER = 'C50';
 
     /**
      * neper per second
      */
-    const REC20_NEPER_PER_SECOND = 'C51';
+    public const REC20_NEPER_PER_SECOND = 'C51';
 
     /**
      * picometre
      */
-    const REC20_PICOMETRE = 'C52';
+    public const REC20_PICOMETRE = 'C52';
 
     /**
      * newton metre second
      */
-    const REC20_NEWTON_METRE_SECOND = 'C53';
+    public const REC20_NEWTON_METRE_SECOND = 'C53';
 
     /**
      * newton metre squared per kilogram squared
      */
-    const REC20_NEWTON_METRE_SQUARED_PER_KILOGRAM_SQUARED = 'C54';
+    public const REC20_NEWTON_METRE_SQUARED_PER_KILOGRAM_SQUARED = 'C54';
 
     /**
      * newton per square metre
      */
-    const REC20_NEWTON_PER_SQUARE_METRE = 'C55';
+    public const REC20_NEWTON_PER_SQUARE_METRE = 'C55';
 
     /**
      * newton per square millimetre
      */
-    const REC20_NEWTON_PER_SQUARE_MILLIMETRE = 'C56';
+    public const REC20_NEWTON_PER_SQUARE_MILLIMETRE = 'C56';
 
     /**
      * newton second
      */
-    const REC20_NEWTON_SECOND = 'C57';
+    public const REC20_NEWTON_SECOND = 'C57';
 
     /**
      * newton second per metre
      */
-    const REC20_NEWTON_SECOND_PER_METRE = 'C58';
+    public const REC20_NEWTON_SECOND_PER_METRE = 'C58';
 
     /**
      * octave
      */
-    const REC20_OCTAVE = 'C59';
+    public const REC20_OCTAVE = 'C59';
 
     /**
      * ohm centimetre
      */
-    const REC20_OHM_CENTIMETRE = 'C60';
+    public const REC20_OHM_CENTIMETRE = 'C60';
 
     /**
      * ohm metre
      */
-    const REC20_OHM_METRE = 'C61';
+    public const REC20_OHM_METRE = 'C61';
 
     /**
      * one
      */
-    const REC20_ONE = 'C62';
+    public const REC20_ONE = 'C62';
 
     /**
      * parsec
      */
-    const REC20_PARSEC = 'C63';
+    public const REC20_PARSEC = 'C63';
 
     /**
      * pascal per kelvin
      */
-    const REC20_PASCAL_PER_KELVIN = 'C64';
+    public const REC20_PASCAL_PER_KELVIN = 'C64';
 
     /**
      * pascal second
      */
-    const REC20_PASCAL_SECOND = 'C65';
+    public const REC20_PASCAL_SECOND = 'C65';
 
     /**
      * pascal second per cubic metre
      */
-    const REC20_PASCAL_SECOND_PER_CUBIC_METRE = 'C66';
+    public const REC20_PASCAL_SECOND_PER_CUBIC_METRE = 'C66';
 
     /**
      * pascal second per metre
      */
-    const REC20_PASCAL_SECOND_PER_METRE = 'C67';
+    public const REC20_PASCAL_SECOND_PER_METRE = 'C67';
 
     /**
      * petajoule
      */
-    const REC20_PETAJOULE = 'C68';
+    public const REC20_PETAJOULE = 'C68';
 
     /**
      * phon
      */
-    const REC20_PHON = 'C69';
+    public const REC20_PHON = 'C69';
 
     /**
      * centipoise
      */
-    const REC20_CENTIPOISE = 'C7';
+    public const REC20_CENTIPOISE = 'C7';
 
     /**
      * picoampere
      */
-    const REC20_PICOAMPERE = 'C70';
+    public const REC20_PICOAMPERE = 'C70';
 
     /**
      * picocoulomb
      */
-    const REC20_PICOCOULOMB = 'C71';
+    public const REC20_PICOCOULOMB = 'C71';
 
     /**
      * picofarad per metre
      */
-    const REC20_PICOFARAD_PER_METRE = 'C72';
+    public const REC20_PICOFARAD_PER_METRE = 'C72';
 
     /**
      * picohenry
      */
-    const REC20_PICOHENRY = 'C73';
+    public const REC20_PICOHENRY = 'C73';
 
     /**
      * kilobit per second
      */
-    const REC20_KILOBIT_PER_SECOND = 'C74';
+    public const REC20_KILOBIT_PER_SECOND = 'C74';
 
     /**
      * picowatt
      */
-    const REC20_PICOWATT = 'C75';
+    public const REC20_PICOWATT = 'C75';
 
     /**
      * picowatt per square metre
      */
-    const REC20_PICOWATT_PER_SQUARE_METRE = 'C76';
+    public const REC20_PICOWATT_PER_SQUARE_METRE = 'C76';
 
     /**
      * pound-force
      */
-    const REC20_POUNDFORCE = 'C78';
+    public const REC20_POUNDFORCE = 'C78';
 
     /**
      * kilovolt ampere hour
      */
-    const REC20_KILOVOLT_AMPERE_HOUR = 'C79';
+    public const REC20_KILOVOLT_AMPERE_HOUR = 'C79';
 
     /**
      * millicoulomb per kilogram
      */
-    const REC20_MILLICOULOMB_PER_KILOGRAM = 'C8';
+    public const REC20_MILLICOULOMB_PER_KILOGRAM = 'C8';
 
     /**
      * rad
      */
-    const REC20_RAD = 'C80';
+    public const REC20_RAD = 'C80';
 
     /**
      * radian
      */
-    const REC20_RADIAN = 'C81';
+    public const REC20_RADIAN = 'C81';
 
     /**
      * radian square metre per mole
      */
-    const REC20_RADIAN_SQUARE_METRE_PER_MOLE = 'C82';
+    public const REC20_RADIAN_SQUARE_METRE_PER_MOLE = 'C82';
 
     /**
      * radian square metre per kilogram
      */
-    const REC20_RADIAN_SQUARE_METRE_PER_KILOGRAM = 'C83';
+    public const REC20_RADIAN_SQUARE_METRE_PER_KILOGRAM = 'C83';
 
     /**
      * radian per metre
      */
-    const REC20_RADIAN_PER_METRE = 'C84';
+    public const REC20_RADIAN_PER_METRE = 'C84';
 
     /**
      * reciprocal angstrom
      */
-    const REC20_RECIPROCAL_ANGSTROM = 'C85';
+    public const REC20_RECIPROCAL_ANGSTROM = 'C85';
 
     /**
      * reciprocal cubic metre
      */
-    const REC20_RECIPROCAL_CUBIC_METRE = 'C86';
+    public const REC20_RECIPROCAL_CUBIC_METRE = 'C86';
 
     /**
      * reciprocal cubic metre per second
      */
-    const REC20_RECIPROCAL_CUBIC_METRE_PER_SECOND = 'C87';
+    public const REC20_RECIPROCAL_CUBIC_METRE_PER_SECOND = 'C87';
 
     /**
      * reciprocal electron volt per cubic metre
      */
-    const REC20_RECIPROCAL_ELECTRON_VOLT_PER_CUBIC_METRE = 'C88';
+    public const REC20_RECIPROCAL_ELECTRON_VOLT_PER_CUBIC_METRE = 'C88';
 
     /**
      * reciprocal henry
      */
-    const REC20_RECIPROCAL_HENRY = 'C89';
+    public const REC20_RECIPROCAL_HENRY = 'C89';
 
     /**
      * coil group
      */
-    const REC20_COIL_GROUP = 'C9';
+    public const REC20_COIL_GROUP = 'C9';
 
     /**
      * reciprocal joule per cubic metre
      */
-    const REC20_RECIPROCAL_JOULE_PER_CUBIC_METRE = 'C90';
+    public const REC20_RECIPROCAL_JOULE_PER_CUBIC_METRE = 'C90';
 
     /**
      * reciprocal kelvin or kelvin to the power minus one
      */
-    const REC20_RECIPROCAL_KELVIN_OR_KELVIN_TO_THE_POWER_MINUS_ONE = 'C91';
+    public const REC20_RECIPROCAL_KELVIN_OR_KELVIN_TO_THE_POWER_MINUS_ONE = 'C91';
 
     /**
      * reciprocal metre
      */
-    const REC20_RECIPROCAL_METRE = 'C92';
+    public const REC20_RECIPROCAL_METRE = 'C92';
 
     /**
      * reciprocal square metre
      */
-    const REC20_RECIPROCAL_SQUARE_METRE = 'C93';
+    public const REC20_RECIPROCAL_SQUARE_METRE = 'C93';
 
     /**
      * reciprocal minute
      */
-    const REC20_RECIPROCAL_MINUTE = 'C94';
+    public const REC20_RECIPROCAL_MINUTE = 'C94';
 
     /**
      * reciprocal mole
      */
-    const REC20_RECIPROCAL_MOLE = 'C95';
+    public const REC20_RECIPROCAL_MOLE = 'C95';
 
     /**
      * reciprocal pascal or pascal to the power minus one
      */
-    const REC20_RECIPROCAL_PASCAL_OR_PASCAL_TO_THE_POWER_MINUS_ONE = 'C96';
+    public const REC20_RECIPROCAL_PASCAL_OR_PASCAL_TO_THE_POWER_MINUS_ONE = 'C96';
 
     /**
      * reciprocal second
      */
-    const REC20_RECIPROCAL_SECOND = 'C97';
+    public const REC20_RECIPROCAL_SECOND = 'C97';
 
     /**
      * reciprocal second per metre squared
      */
-    const REC20_RECIPROCAL_SECOND_PER_METRE_SQUARED = 'C99';
+    public const REC20_RECIPROCAL_SECOND_PER_METRE_SQUARED = 'C99';
 
     /**
      * carrying capacity in metric ton
      */
-    const REC20_CARRYING_CAPACITY_IN_METRIC_TON = 'CCT';
+    public const REC20_CARRYING_CAPACITY_IN_METRIC_TON = 'CCT';
 
     /**
      * candela
      */
-    const REC20_CANDELA = 'CDL';
+    public const REC20_CANDELA = 'CDL';
 
     /**
      * degree Celsius
      */
-    const REC20_DEGREE_CELSIUS = 'CEL';
+    public const REC20_DEGREE_CELSIUS = 'CEL';
 
     /**
      * hundred
      */
-    const REC20_HUNDRED = 'CEN';
+    public const REC20_HUNDRED = 'CEN';
 
     /**
      * card
      */
-    const REC20_CARD = 'CG';
+    public const REC20_CARD = 'CG';
 
     /**
      * centigram
      */
-    const REC20_CENTIGRAM = 'CGM';
+    public const REC20_CENTIGRAM = 'CGM';
 
     /**
      * coulomb per kilogram
      */
-    const REC20_COULOMB_PER_KILOGRAM = 'CKG';
+    public const REC20_COULOMB_PER_KILOGRAM = 'CKG';
 
     /**
      * hundred leave
      */
-    const REC20_HUNDRED_LEAVE = 'CLF';
+    public const REC20_HUNDRED_LEAVE = 'CLF';
 
     /**
      * centilitre
      */
-    const REC20_CENTILITRE = 'CLT';
+    public const REC20_CENTILITRE = 'CLT';
 
     /**
      * square centimetre
      */
-    const REC20_SQUARE_CENTIMETRE = 'CMK';
+    public const REC20_SQUARE_CENTIMETRE = 'CMK';
 
     /**
      * cubic centimetre
      */
-    const REC20_CUBIC_CENTIMETRE = 'CMQ';
+    public const REC20_CUBIC_CENTIMETRE = 'CMQ';
 
     /**
      * centimetre
      */
-    const REC20_CENTIMETRE = 'CMT';
+    public const REC20_CENTIMETRE = 'CMT';
 
     /**
      * hundred pack
      */
-    const REC20_HUNDRED_PACK = 'CNP';
+    public const REC20_HUNDRED_PACK = 'CNP';
 
     /**
      * cental (UK)
      */
-    const REC20_CENTAL_UK = 'CNT';
+    public const REC20_CENTAL_UK = 'CNT';
 
     /**
      * coulomb
      */
-    const REC20_COULOMB = 'COU';
+    public const REC20_COULOMB = 'COU';
 
     /**
      * content gram
      */
-    const REC20_CONTENT_GRAM = 'CTG';
+    public const REC20_CONTENT_GRAM = 'CTG';
 
     /**
      * metric carat
      */
-    const REC20_METRIC_CARAT = 'CTM';
+    public const REC20_METRIC_CARAT = 'CTM';
 
     /**
      * content ton (metric)
      */
-    const REC20_CONTENT_TON_METRIC = 'CTN';
+    public const REC20_CONTENT_TON_METRIC = 'CTN';
 
     /**
      * curie
      */
-    const REC20_CURIE = 'CUR';
+    public const REC20_CURIE = 'CUR';
 
     /**
      * hundred pound (cwt) / hundred weight (US)
      */
-    const REC20_HUNDRED_POUND_CWT___HUNDRED_WEIGHT_US = 'CWA';
+    public const REC20_HUNDRED_POUND_CWT___HUNDRED_WEIGHT_US = 'CWA';
 
     /**
      * hundred weight (UK)
      */
-    const REC20_HUNDRED_WEIGHT_UK = 'CWI';
+    public const REC20_HUNDRED_WEIGHT_UK = 'CWI';
 
     /**
      * kilowatt hour per hour
      */
-    const REC20_KILOWATT_HOUR_PER_HOUR = 'D03';
+    public const REC20_KILOWATT_HOUR_PER_HOUR = 'D03';
 
     /**
      * lot  [unit of weight]
      */
-    const REC20_LOT__UNIT_OF_WEIGHT = 'D04';
+    public const REC20_LOT__UNIT_OF_WEIGHT = 'D04';
 
     /**
      * reciprocal second per steradian
      */
-    const REC20_RECIPROCAL_SECOND_PER_STERADIAN = 'D1';
+    public const REC20_RECIPROCAL_SECOND_PER_STERADIAN = 'D1';
 
     /**
      * siemens per metre
      */
-    const REC20_SIEMENS_PER_METRE = 'D10';
+    public const REC20_SIEMENS_PER_METRE = 'D10';
 
     /**
      * mebibit
      */
-    const REC20_MEBIBIT = 'D11';
+    public const REC20_MEBIBIT = 'D11';
 
     /**
      * siemens square metre per mole
      */
-    const REC20_SIEMENS_SQUARE_METRE_PER_MOLE = 'D12';
+    public const REC20_SIEMENS_SQUARE_METRE_PER_MOLE = 'D12';
 
     /**
      * sievert
      */
-    const REC20_SIEVERT = 'D13';
+    public const REC20_SIEVERT = 'D13';
 
     /**
      * sone
      */
-    const REC20_SONE = 'D15';
+    public const REC20_SONE = 'D15';
 
     /**
      * square centimetre per erg
      */
-    const REC20_SQUARE_CENTIMETRE_PER_ERG = 'D16';
+    public const REC20_SQUARE_CENTIMETRE_PER_ERG = 'D16';
 
     /**
      * square centimetre per steradian erg
      */
-    const REC20_SQUARE_CENTIMETRE_PER_STERADIAN_ERG = 'D17';
+    public const REC20_SQUARE_CENTIMETRE_PER_STERADIAN_ERG = 'D17';
 
     /**
      * metre kelvin
      */
-    const REC20_METRE_KELVIN = 'D18';
+    public const REC20_METRE_KELVIN = 'D18';
 
     /**
      * square metre kelvin per watt
      */
-    const REC20_SQUARE_METRE_KELVIN_PER_WATT = 'D19';
+    public const REC20_SQUARE_METRE_KELVIN_PER_WATT = 'D19';
 
     /**
      * reciprocal second per steradian metre squared
      */
-    const REC20_RECIPROCAL_SECOND_PER_STERADIAN_METRE_SQUARED = 'D2';
+    public const REC20_RECIPROCAL_SECOND_PER_STERADIAN_METRE_SQUARED = 'D2';
 
     /**
      * square metre per joule
      */
-    const REC20_SQUARE_METRE_PER_JOULE = 'D20';
+    public const REC20_SQUARE_METRE_PER_JOULE = 'D20';
 
     /**
      * square metre per kilogram
      */
-    const REC20_SQUARE_METRE_PER_KILOGRAM = 'D21';
+    public const REC20_SQUARE_METRE_PER_KILOGRAM = 'D21';
 
     /**
      * square metre per mole
      */
-    const REC20_SQUARE_METRE_PER_MOLE = 'D22';
+    public const REC20_SQUARE_METRE_PER_MOLE = 'D22';
 
     /**
      * pen gram (protein)
      */
-    const REC20_PEN_GRAM_PROTEIN = 'D23';
+    public const REC20_PEN_GRAM_PROTEIN = 'D23';
 
     /**
      * square metre per steradian
      */
-    const REC20_SQUARE_METRE_PER_STERADIAN = 'D24';
+    public const REC20_SQUARE_METRE_PER_STERADIAN = 'D24';
 
     /**
      * square metre per steradian joule
      */
-    const REC20_SQUARE_METRE_PER_STERADIAN_JOULE = 'D25';
+    public const REC20_SQUARE_METRE_PER_STERADIAN_JOULE = 'D25';
 
     /**
      * square metre per volt second
      */
-    const REC20_SQUARE_METRE_PER_VOLT_SECOND = 'D26';
+    public const REC20_SQUARE_METRE_PER_VOLT_SECOND = 'D26';
 
     /**
      * steradian
      */
-    const REC20_STERADIAN = 'D27';
+    public const REC20_STERADIAN = 'D27';
 
     /**
      * terahertz
      */
-    const REC20_TERAHERTZ = 'D29';
+    public const REC20_TERAHERTZ = 'D29';
 
     /**
      * terajoule
      */
-    const REC20_TERAJOULE = 'D30';
+    public const REC20_TERAJOULE = 'D30';
 
     /**
      * terawatt
      */
-    const REC20_TERAWATT = 'D31';
+    public const REC20_TERAWATT = 'D31';
 
     /**
      * terawatt hour
      */
-    const REC20_TERAWATT_HOUR = 'D32';
+    public const REC20_TERAWATT_HOUR = 'D32';
 
     /**
      * tesla
      */
-    const REC20_TESLA = 'D33';
+    public const REC20_TESLA = 'D33';
 
     /**
      * tex
      */
-    const REC20_TEX = 'D34';
+    public const REC20_TEX = 'D34';
 
     /**
      * megabit
      */
-    const REC20_MEGABIT = 'D36';
+    public const REC20_MEGABIT = 'D36';
 
     /**
      * tonne per cubic metre
      */
-    const REC20_TONNE_PER_CUBIC_METRE = 'D41';
+    public const REC20_TONNE_PER_CUBIC_METRE = 'D41';
 
     /**
      * tropical year
      */
-    const REC20_TROPICAL_YEAR = 'D42';
+    public const REC20_TROPICAL_YEAR = 'D42';
 
     /**
      * unified atomic mass unit
      */
-    const REC20_UNIFIED_ATOMIC_MASS_UNIT = 'D43';
+    public const REC20_UNIFIED_ATOMIC_MASS_UNIT = 'D43';
 
     /**
      * var
      */
-    const REC20_VAR = 'D44';
+    public const REC20_VAR = 'D44';
 
     /**
      * volt squared per kelvin squared
      */
-    const REC20_VOLT_SQUARED_PER_KELVIN_SQUARED = 'D45';
+    public const REC20_VOLT_SQUARED_PER_KELVIN_SQUARED = 'D45';
 
     /**
      * volt - ampere
      */
-    const REC20_VOLT__AMPERE = 'D46';
+    public const REC20_VOLT__AMPERE = 'D46';
 
     /**
      * volt per centimetre
      */
-    const REC20_VOLT_PER_CENTIMETRE = 'D47';
+    public const REC20_VOLT_PER_CENTIMETRE = 'D47';
 
     /**
      * volt per kelvin
      */
-    const REC20_VOLT_PER_KELVIN = 'D48';
+    public const REC20_VOLT_PER_KELVIN = 'D48';
 
     /**
      * millivolt per kelvin
      */
-    const REC20_MILLIVOLT_PER_KELVIN = 'D49';
+    public const REC20_MILLIVOLT_PER_KELVIN = 'D49';
 
     /**
      * kilogram per square centimetre
      */
-    const REC20_KILOGRAM_PER_SQUARE_CENTIMETRE = 'D5';
+    public const REC20_KILOGRAM_PER_SQUARE_CENTIMETRE = 'D5';
 
     /**
      * volt per metre
      */
-    const REC20_VOLT_PER_METRE = 'D50';
+    public const REC20_VOLT_PER_METRE = 'D50';
 
     /**
      * volt per millimetre
      */
-    const REC20_VOLT_PER_MILLIMETRE = 'D51';
+    public const REC20_VOLT_PER_MILLIMETRE = 'D51';
 
     /**
      * watt per kelvin
      */
-    const REC20_WATT_PER_KELVIN = 'D52';
+    public const REC20_WATT_PER_KELVIN = 'D52';
 
     /**
      * watt per metre kelvin
      */
-    const REC20_WATT_PER_METRE_KELVIN = 'D53';
+    public const REC20_WATT_PER_METRE_KELVIN = 'D53';
 
     /**
      * watt per square metre
      */
-    const REC20_WATT_PER_SQUARE_METRE = 'D54';
+    public const REC20_WATT_PER_SQUARE_METRE = 'D54';
 
     /**
      * watt per square metre kelvin
      */
-    const REC20_WATT_PER_SQUARE_METRE_KELVIN = 'D55';
+    public const REC20_WATT_PER_SQUARE_METRE_KELVIN = 'D55';
 
     /**
      * watt per square metre kelvin to the fourth power
      */
-    const REC20_WATT_PER_SQUARE_METRE_KELVIN_TO_THE_FOURTH_POWER = 'D56';
+    public const REC20_WATT_PER_SQUARE_METRE_KELVIN_TO_THE_FOURTH_POWER = 'D56';
 
     /**
      * watt per steradian
      */
-    const REC20_WATT_PER_STERADIAN = 'D57';
+    public const REC20_WATT_PER_STERADIAN = 'D57';
 
     /**
      * watt per steradian square metre
      */
-    const REC20_WATT_PER_STERADIAN_SQUARE_METRE = 'D58';
+    public const REC20_WATT_PER_STERADIAN_SQUARE_METRE = 'D58';
 
     /**
      * weber per metre
      */
-    const REC20_WEBER_PER_METRE = 'D59';
+    public const REC20_WEBER_PER_METRE = 'D59';
 
     /**
      * roentgen per second
      */
-    const REC20_ROENTGEN_PER_SECOND = 'D6';
+    public const REC20_ROENTGEN_PER_SECOND = 'D6';
 
     /**
      * weber per millimetre
      */
-    const REC20_WEBER_PER_MILLIMETRE = 'D60';
+    public const REC20_WEBER_PER_MILLIMETRE = 'D60';
 
     /**
      * minute [unit of angle]
      */
-    const REC20_MINUTE_UNIT_OF_ANGLE = 'D61';
+    public const REC20_MINUTE_UNIT_OF_ANGLE = 'D61';
 
     /**
      * second [unit of angle]
      */
-    const REC20_SECOND_UNIT_OF_ANGLE = 'D62';
+    public const REC20_SECOND_UNIT_OF_ANGLE = 'D62';
 
     /**
      * book
      */
-    const REC20_BOOK = 'D63';
+    public const REC20_BOOK = 'D63';
 
     /**
      * round
      */
-    const REC20_ROUND = 'D65';
+    public const REC20_ROUND = 'D65';
 
     /**
      * number of words
      */
-    const REC20_NUMBER_OF_WORDS = 'D68';
+    public const REC20_NUMBER_OF_WORDS = 'D68';
 
     /**
      * inch to the fourth power
      */
-    const REC20_INCH_TO_THE_FOURTH_POWER = 'D69';
+    public const REC20_INCH_TO_THE_FOURTH_POWER = 'D69';
 
     /**
      * joule square metre
      */
-    const REC20_JOULE_SQUARE_METRE = 'D73';
+    public const REC20_JOULE_SQUARE_METRE = 'D73';
 
     /**
      * kilogram per mole
      */
-    const REC20_KILOGRAM_PER_MOLE = 'D74';
+    public const REC20_KILOGRAM_PER_MOLE = 'D74';
 
     /**
      * megacoulomb
      */
-    const REC20_MEGACOULOMB = 'D77';
+    public const REC20_MEGACOULOMB = 'D77';
 
     /**
      * megajoule per second
      */
-    const REC20_MEGAJOULE_PER_SECOND = 'D78';
+    public const REC20_MEGAJOULE_PER_SECOND = 'D78';
 
     /**
      * microwatt
      */
-    const REC20_MICROWATT = 'D80';
+    public const REC20_MICROWATT = 'D80';
 
     /**
      * microtesla
      */
-    const REC20_MICROTESLA = 'D81';
+    public const REC20_MICROTESLA = 'D81';
 
     /**
      * microvolt
      */
-    const REC20_MICROVOLT = 'D82';
+    public const REC20_MICROVOLT = 'D82';
 
     /**
      * millinewton metre
      */
-    const REC20_MILLINEWTON_METRE = 'D83';
+    public const REC20_MILLINEWTON_METRE = 'D83';
 
     /**
      * microwatt per square metre
      */
-    const REC20_MICROWATT_PER_SQUARE_METRE = 'D85';
+    public const REC20_MICROWATT_PER_SQUARE_METRE = 'D85';
 
     /**
      * millicoulomb
      */
-    const REC20_MILLICOULOMB = 'D86';
+    public const REC20_MILLICOULOMB = 'D86';
 
     /**
      * millimole per kilogram
      */
-    const REC20_MILLIMOLE_PER_KILOGRAM = 'D87';
+    public const REC20_MILLIMOLE_PER_KILOGRAM = 'D87';
 
     /**
      * millicoulomb per cubic metre
      */
-    const REC20_MILLICOULOMB_PER_CUBIC_METRE = 'D88';
+    public const REC20_MILLICOULOMB_PER_CUBIC_METRE = 'D88';
 
     /**
      * millicoulomb per square metre
      */
-    const REC20_MILLICOULOMB_PER_SQUARE_METRE = 'D89';
+    public const REC20_MILLICOULOMB_PER_SQUARE_METRE = 'D89';
 
     /**
      * rem
      */
-    const REC20_REM = 'D91';
+    public const REC20_REM = 'D91';
 
     /**
      * second per cubic metre
      */
-    const REC20_SECOND_PER_CUBIC_METRE = 'D93';
+    public const REC20_SECOND_PER_CUBIC_METRE = 'D93';
 
     /**
      * second per cubic metre radian
      */
-    const REC20_SECOND_PER_CUBIC_METRE_RADIAN = 'D94';
+    public const REC20_SECOND_PER_CUBIC_METRE_RADIAN = 'D94';
 
     /**
      * joule per gram
      */
-    const REC20_JOULE_PER_GRAM = 'D95';
+    public const REC20_JOULE_PER_GRAM = 'D95';
 
     /**
      * decare
      */
-    const REC20_DECARE = 'DAA';
+    public const REC20_DECARE = 'DAA';
 
     /**
      * ten day
      */
-    const REC20_TEN_DAY = 'DAD';
+    public const REC20_TEN_DAY = 'DAD';
 
     /**
      * day
      */
-    const REC20_DAY = 'DAY';
+    public const REC20_DAY = 'DAY';
 
     /**
      * dry pound
      */
-    const REC20_DRY_POUND = 'DB';
+    public const REC20_DRY_POUND = 'DB';
 
     /**
      * degree [unit of angle]
      */
-    const REC20_DEGREE_UNIT_OF_ANGLE = 'DD';
+    public const REC20_DEGREE_UNIT_OF_ANGLE = 'DD';
 
     /**
      * decade
      */
-    const REC20_DECADE = 'DEC';
+    public const REC20_DECADE = 'DEC';
 
     /**
      * decigram
      */
-    const REC20_DECIGRAM = 'DG';
+    public const REC20_DECIGRAM = 'DG';
 
     /**
      * decagram
      */
-    const REC20_DECAGRAM = 'DJ';
+    public const REC20_DECAGRAM = 'DJ';
 
     /**
      * decilitre
      */
-    const REC20_DECILITRE = 'DLT';
+    public const REC20_DECILITRE = 'DLT';
 
     /**
      * cubic decametre
      */
-    const REC20_CUBIC_DECAMETRE = 'DMA';
+    public const REC20_CUBIC_DECAMETRE = 'DMA';
 
     /**
      * square decimetre
      */
-    const REC20_SQUARE_DECIMETRE = 'DMK';
+    public const REC20_SQUARE_DECIMETRE = 'DMK';
 
     /**
      * standard kilolitre
      */
-    const REC20_STANDARD_KILOLITRE = 'DMO';
+    public const REC20_STANDARD_KILOLITRE = 'DMO';
 
     /**
      * cubic decimetre
      */
-    const REC20_CUBIC_DECIMETRE = 'DMQ';
+    public const REC20_CUBIC_DECIMETRE = 'DMQ';
 
     /**
      * decimetre
      */
-    const REC20_DECIMETRE = 'DMT';
+    public const REC20_DECIMETRE = 'DMT';
 
     /**
      * decinewton metre
      */
-    const REC20_DECINEWTON_METRE = 'DN';
+    public const REC20_DECINEWTON_METRE = 'DN';
 
     /**
      * dozen piece
      */
-    const REC20_DOZEN_PIECE = 'DPC';
+    public const REC20_DOZEN_PIECE = 'DPC';
 
     /**
      * dozen pair
      */
-    const REC20_DOZEN_PAIR = 'DPR';
+    public const REC20_DOZEN_PAIR = 'DPR';
 
     /**
      * displacement tonnage
      */
-    const REC20_DISPLACEMENT_TONNAGE = 'DPT';
+    public const REC20_DISPLACEMENT_TONNAGE = 'DPT';
 
     /**
      * dram (US)
      */
-    const REC20_DRAM_US = 'DRA';
+    public const REC20_DRAM_US = 'DRA';
 
     /**
      * dram (UK)
      */
-    const REC20_DRAM_UK = 'DRI';
+    public const REC20_DRAM_UK = 'DRI';
 
     /**
      * dozen roll
      */
-    const REC20_DOZEN_ROLL = 'DRL';
+    public const REC20_DOZEN_ROLL = 'DRL';
 
     /**
      * dry ton
      */
-    const REC20_DRY_TON = 'DT';
+    public const REC20_DRY_TON = 'DT';
 
     /**
      * decitonne
      */
-    const REC20_DECITONNE = 'DTN';
+    public const REC20_DECITONNE = 'DTN';
 
     /**
      * pennyweight
      */
-    const REC20_PENNYWEIGHT = 'DWT';
+    public const REC20_PENNYWEIGHT = 'DWT';
 
     /**
      * dozen
      */
-    const REC20_DOZEN = 'DZN';
+    public const REC20_DOZEN = 'DZN';
 
     /**
      * dozen pack
      */
-    const REC20_DOZEN_PACK = 'DZP';
+    public const REC20_DOZEN_PACK = 'DZP';
 
     /**
      * newton per square centimetre
      */
-    const REC20_NEWTON_PER_SQUARE_CENTIMETRE = 'E01';
+    public const REC20_NEWTON_PER_SQUARE_CENTIMETRE = 'E01';
 
     /**
      * megawatt hour per hour
      */
-    const REC20_MEGAWATT_HOUR_PER_HOUR = 'E07';
+    public const REC20_MEGAWATT_HOUR_PER_HOUR = 'E07';
 
     /**
      * megawatt per hertz
      */
-    const REC20_MEGAWATT_PER_HERTZ = 'E08';
+    public const REC20_MEGAWATT_PER_HERTZ = 'E08';
 
     /**
      * milliampere hour
      */
-    const REC20_MILLIAMPERE_HOUR = 'E09';
+    public const REC20_MILLIAMPERE_HOUR = 'E09';
 
     /**
      * degree day
      */
-    const REC20_DEGREE_DAY = 'E10';
+    public const REC20_DEGREE_DAY = 'E10';
 
     /**
      * mille
      */
-    const REC20_MILLE = 'E12';
+    public const REC20_MILLE = 'E12';
 
     /**
      * kilocalorie (international table)
      */
-    const REC20_KILOCALORIE_INTERNATIONAL_TABLE = 'E14';
+    public const REC20_KILOCALORIE_INTERNATIONAL_TABLE = 'E14';
 
     /**
      * kilocalorie (thermochemical) per hour
      */
-    const REC20_KILOCALORIE_THERMOCHEMICAL_PER_HOUR = 'E15';
+    public const REC20_KILOCALORIE_THERMOCHEMICAL_PER_HOUR = 'E15';
 
     /**
      * million Btu(IT) per hour
      */
-    const REC20_MILLION_BTUIT_PER_HOUR = 'E16';
+    public const REC20_MILLION_BTUIT_PER_HOUR = 'E16';
 
     /**
      * cubic foot per second
      */
-    const REC20_CUBIC_FOOT_PER_SECOND = 'E17';
+    public const REC20_CUBIC_FOOT_PER_SECOND = 'E17';
 
     /**
      * tonne per hour
      */
-    const REC20_TONNE_PER_HOUR = 'E18';
+    public const REC20_TONNE_PER_HOUR = 'E18';
 
     /**
      * ping
      */
-    const REC20_PING = 'E19';
+    public const REC20_PING = 'E19';
 
     /**
      * megabit per second
      */
-    const REC20_MEGABIT_PER_SECOND = 'E20';
+    public const REC20_MEGABIT_PER_SECOND = 'E20';
 
     /**
      * shares
      */
-    const REC20_SHARES = 'E21';
+    public const REC20_SHARES = 'E21';
 
     /**
      * TEU
      */
-    const REC20_TEU = 'E22';
+    public const REC20_TEU = 'E22';
 
     /**
      * tyre
      */
-    const REC20_TYRE = 'E23';
+    public const REC20_TYRE = 'E23';
 
     /**
      * active unit
      */
-    const REC20_ACTIVE_UNIT = 'E25';
+    public const REC20_ACTIVE_UNIT = 'E25';
 
     /**
      * dose
      */
-    const REC20_DOSE = 'E27';
+    public const REC20_DOSE = 'E27';
 
     /**
      * air dry ton
      */
-    const REC20_AIR_DRY_TON = 'E28';
+    public const REC20_AIR_DRY_TON = 'E28';
 
     /**
      * strand
      */
-    const REC20_STRAND = 'E30';
+    public const REC20_STRAND = 'E30';
 
     /**
      * square metre per litre
      */
-    const REC20_SQUARE_METRE_PER_LITRE = 'E31';
+    public const REC20_SQUARE_METRE_PER_LITRE = 'E31';
 
     /**
      * litre per hour
      */
-    const REC20_LITRE_PER_HOUR = 'E32';
+    public const REC20_LITRE_PER_HOUR = 'E32';
 
     /**
      * foot per thousand
      */
-    const REC20_FOOT_PER_THOUSAND = 'E33';
+    public const REC20_FOOT_PER_THOUSAND = 'E33';
 
     /**
      * gigabyte
      */
-    const REC20_GIGABYTE = 'E34';
+    public const REC20_GIGABYTE = 'E34';
 
     /**
      * terabyte
      */
-    const REC20_TERABYTE = 'E35';
+    public const REC20_TERABYTE = 'E35';
 
     /**
      * petabyte
      */
-    const REC20_PETABYTE = 'E36';
+    public const REC20_PETABYTE = 'E36';
 
     /**
      * pixel
      */
-    const REC20_PIXEL = 'E37';
+    public const REC20_PIXEL = 'E37';
 
     /**
      * megapixel
      */
-    const REC20_MEGAPIXEL = 'E38';
+    public const REC20_MEGAPIXEL = 'E38';
 
     /**
      * dots per inch
      */
-    const REC20_DOTS_PER_INCH = 'E39';
+    public const REC20_DOTS_PER_INCH = 'E39';
 
     /**
      * gross kilogram
      */
-    const REC20_GROSS_KILOGRAM = 'E4';
+    public const REC20_GROSS_KILOGRAM = 'E4';
 
     /**
      * part per hundred thousand
      */
-    const REC20_PART_PER_HUNDRED_THOUSAND = 'E40';
+    public const REC20_PART_PER_HUNDRED_THOUSAND = 'E40';
 
     /**
      * kilogram-force per square millimetre
      */
-    const REC20_KILOGRAMFORCE_PER_SQUARE_MILLIMETRE = 'E41';
+    public const REC20_KILOGRAMFORCE_PER_SQUARE_MILLIMETRE = 'E41';
 
     /**
      * kilogram-force per square centimetre
      */
-    const REC20_KILOGRAMFORCE_PER_SQUARE_CENTIMETRE = 'E42';
+    public const REC20_KILOGRAMFORCE_PER_SQUARE_CENTIMETRE = 'E42';
 
     /**
      * joule per square centimetre
      */
-    const REC20_JOULE_PER_SQUARE_CENTIMETRE = 'E43';
+    public const REC20_JOULE_PER_SQUARE_CENTIMETRE = 'E43';
 
     /**
      * kilogram-force metre per square centimetre
      */
-    const REC20_KILOGRAMFORCE_METRE_PER_SQUARE_CENTIMETRE = 'E44';
+    public const REC20_KILOGRAMFORCE_METRE_PER_SQUARE_CENTIMETRE = 'E44';
 
     /**
      * milliohm
      */
-    const REC20_MILLIOHM = 'E45';
+    public const REC20_MILLIOHM = 'E45';
 
     /**
      * kilowatt hour per cubic metre
      */
-    const REC20_KILOWATT_HOUR_PER_CUBIC_METRE = 'E46';
+    public const REC20_KILOWATT_HOUR_PER_CUBIC_METRE = 'E46';
 
     /**
      * kilowatt hour per kelvin
      */
-    const REC20_KILOWATT_HOUR_PER_KELVIN = 'E47';
+    public const REC20_KILOWATT_HOUR_PER_KELVIN = 'E47';
 
     /**
      * service unit
      */
-    const REC20_SERVICE_UNIT = 'E48';
+    public const REC20_SERVICE_UNIT = 'E48';
 
     /**
      * working day
      */
-    const REC20_WORKING_DAY = 'E49';
+    public const REC20_WORKING_DAY = 'E49';
 
     /**
      * accounting unit
      */
-    const REC20_ACCOUNTING_UNIT = 'E50';
+    public const REC20_ACCOUNTING_UNIT = 'E50';
 
     /**
      * job
      */
-    const REC20_JOB = 'E51';
+    public const REC20_JOB = 'E51';
 
     /**
      * run foot
      */
-    const REC20_RUN_FOOT = 'E52';
+    public const REC20_RUN_FOOT = 'E52';
 
     /**
      * test
      */
-    const REC20_TEST = 'E53';
+    public const REC20_TEST = 'E53';
 
     /**
      * trip
      */
-    const REC20_TRIP = 'E54';
+    public const REC20_TRIP = 'E54';
 
     /**
      * use
      */
-    const REC20_USE = 'E55';
+    public const REC20_USE = 'E55';
 
     /**
      * well
      */
-    const REC20_WELL = 'E56';
+    public const REC20_WELL = 'E56';
 
     /**
      * zone
      */
-    const REC20_ZONE = 'E57';
+    public const REC20_ZONE = 'E57';
 
     /**
      * exabit per second
      */
-    const REC20_EXABIT_PER_SECOND = 'E58';
+    public const REC20_EXABIT_PER_SECOND = 'E58';
 
     /**
      * exbibyte
      */
-    const REC20_EXBIBYTE = 'E59';
+    public const REC20_EXBIBYTE = 'E59';
 
     /**
      * pebibyte
      */
-    const REC20_PEBIBYTE = 'E60';
+    public const REC20_PEBIBYTE = 'E60';
 
     /**
      * tebibyte
      */
-    const REC20_TEBIBYTE = 'E61';
+    public const REC20_TEBIBYTE = 'E61';
 
     /**
      * gibibyte
      */
-    const REC20_GIBIBYTE = 'E62';
+    public const REC20_GIBIBYTE = 'E62';
 
     /**
      * mebibyte
      */
-    const REC20_MEBIBYTE = 'E63';
+    public const REC20_MEBIBYTE = 'E63';
 
     /**
      * kibibyte
      */
-    const REC20_KIBIBYTE = 'E64';
+    public const REC20_KIBIBYTE = 'E64';
 
     /**
      * exbibit per metre
      */
-    const REC20_EXBIBIT_PER_METRE = 'E65';
+    public const REC20_EXBIBIT_PER_METRE = 'E65';
 
     /**
      * exbibit per square metre
      */
-    const REC20_EXBIBIT_PER_SQUARE_METRE = 'E66';
+    public const REC20_EXBIBIT_PER_SQUARE_METRE = 'E66';
 
     /**
      * exbibit per cubic metre
      */
-    const REC20_EXBIBIT_PER_CUBIC_METRE = 'E67';
+    public const REC20_EXBIBIT_PER_CUBIC_METRE = 'E67';
 
     /**
      * gigabyte per second
      */
-    const REC20_GIGABYTE_PER_SECOND = 'E68';
+    public const REC20_GIGABYTE_PER_SECOND = 'E68';
 
     /**
      * gibibit per metre
      */
-    const REC20_GIBIBIT_PER_METRE = 'E69';
+    public const REC20_GIBIBIT_PER_METRE = 'E69';
 
     /**
      * gibibit per square metre
      */
-    const REC20_GIBIBIT_PER_SQUARE_METRE = 'E70';
+    public const REC20_GIBIBIT_PER_SQUARE_METRE = 'E70';
 
     /**
      * gibibit per cubic metre
      */
-    const REC20_GIBIBIT_PER_CUBIC_METRE = 'E71';
+    public const REC20_GIBIBIT_PER_CUBIC_METRE = 'E71';
 
     /**
      * kibibit per metre
      */
-    const REC20_KIBIBIT_PER_METRE = 'E72';
+    public const REC20_KIBIBIT_PER_METRE = 'E72';
 
     /**
      * kibibit per square metre
      */
-    const REC20_KIBIBIT_PER_SQUARE_METRE = 'E73';
+    public const REC20_KIBIBIT_PER_SQUARE_METRE = 'E73';
 
     /**
      * kibibit per cubic metre
      */
-    const REC20_KIBIBIT_PER_CUBIC_METRE = 'E74';
+    public const REC20_KIBIBIT_PER_CUBIC_METRE = 'E74';
 
     /**
      * mebibit per metre
      */
-    const REC20_MEBIBIT_PER_METRE = 'E75';
+    public const REC20_MEBIBIT_PER_METRE = 'E75';
 
     /**
      * mebibit per square metre
      */
-    const REC20_MEBIBIT_PER_SQUARE_METRE = 'E76';
+    public const REC20_MEBIBIT_PER_SQUARE_METRE = 'E76';
 
     /**
      * mebibit per cubic metre
      */
-    const REC20_MEBIBIT_PER_CUBIC_METRE = 'E77';
+    public const REC20_MEBIBIT_PER_CUBIC_METRE = 'E77';
 
     /**
      * petabit
      */
-    const REC20_PETABIT = 'E78';
+    public const REC20_PETABIT = 'E78';
 
     /**
      * petabit per second
      */
-    const REC20_PETABIT_PER_SECOND = 'E79';
+    public const REC20_PETABIT_PER_SECOND = 'E79';
 
     /**
      * pebibit per metre
      */
-    const REC20_PEBIBIT_PER_METRE = 'E80';
+    public const REC20_PEBIBIT_PER_METRE = 'E80';
 
     /**
      * pebibit per square metre
      */
-    const REC20_PEBIBIT_PER_SQUARE_METRE = 'E81';
+    public const REC20_PEBIBIT_PER_SQUARE_METRE = 'E81';
 
     /**
      * pebibit per cubic metre
      */
-    const REC20_PEBIBIT_PER_CUBIC_METRE = 'E82';
+    public const REC20_PEBIBIT_PER_CUBIC_METRE = 'E82';
 
     /**
      * terabit
      */
-    const REC20_TERABIT = 'E83';
+    public const REC20_TERABIT = 'E83';
 
     /**
      * terabit per second
      */
-    const REC20_TERABIT_PER_SECOND = 'E84';
+    public const REC20_TERABIT_PER_SECOND = 'E84';
 
     /**
      * tebibit per metre
      */
-    const REC20_TEBIBIT_PER_METRE = 'E85';
+    public const REC20_TEBIBIT_PER_METRE = 'E85';
 
     /**
      * tebibit per cubic metre
      */
-    const REC20_TEBIBIT_PER_CUBIC_METRE = 'E86';
+    public const REC20_TEBIBIT_PER_CUBIC_METRE = 'E86';
 
     /**
      * tebibit per square metre
      */
-    const REC20_TEBIBIT_PER_SQUARE_METRE = 'E87';
+    public const REC20_TEBIBIT_PER_SQUARE_METRE = 'E87';
 
     /**
      * bit per metre
      */
-    const REC20_BIT_PER_METRE = 'E88';
+    public const REC20_BIT_PER_METRE = 'E88';
 
     /**
      * bit per square metre
      */
-    const REC20_BIT_PER_SQUARE_METRE = 'E89';
+    public const REC20_BIT_PER_SQUARE_METRE = 'E89';
 
     /**
      * reciprocal centimetre
      */
-    const REC20_RECIPROCAL_CENTIMETRE = 'E90';
+    public const REC20_RECIPROCAL_CENTIMETRE = 'E90';
 
     /**
      * reciprocal day
      */
-    const REC20_RECIPROCAL_DAY = 'E91';
+    public const REC20_RECIPROCAL_DAY = 'E91';
 
     /**
      * cubic decimetre per hour
      */
-    const REC20_CUBIC_DECIMETRE_PER_HOUR = 'E92';
+    public const REC20_CUBIC_DECIMETRE_PER_HOUR = 'E92';
 
     /**
      * kilogram per hour
      */
-    const REC20_KILOGRAM_PER_HOUR = 'E93';
+    public const REC20_KILOGRAM_PER_HOUR = 'E93';
 
     /**
      * kilomole per second
      */
-    const REC20_KILOMOLE_PER_SECOND = 'E94';
+    public const REC20_KILOMOLE_PER_SECOND = 'E94';
 
     /**
      * mole per second
      */
-    const REC20_MOLE_PER_SECOND = 'E95';
+    public const REC20_MOLE_PER_SECOND = 'E95';
 
     /**
      * degree per second
      */
-    const REC20_DEGREE_PER_SECOND = 'E96';
+    public const REC20_DEGREE_PER_SECOND = 'E96';
 
     /**
      * millimetre per degree Celcius metre
      */
-    const REC20_MILLIMETRE_PER_DEGREE_CELCIUS_METRE = 'E97';
+    public const REC20_MILLIMETRE_PER_DEGREE_CELCIUS_METRE = 'E97';
 
     /**
      * degree Celsius per kelvin
      */
-    const REC20_DEGREE_CELSIUS_PER_KELVIN = 'E98';
+    public const REC20_DEGREE_CELSIUS_PER_KELVIN = 'E98';
 
     /**
      * hectopascal per bar
      */
-    const REC20_HECTOPASCAL_PER_BAR = 'E99';
+    public const REC20_HECTOPASCAL_PER_BAR = 'E99';
 
     /**
      * each
      */
-    const REC20_EACH = 'EA';
+    public const REC20_EACH = 'EA';
 
     /**
      * electronic mail box
      */
-    const REC20_ELECTRONIC_MAIL_BOX = 'EB';
+    public const REC20_ELECTRONIC_MAIL_BOX = 'EB';
 
     /**
      * equivalent gallon
      */
-    const REC20_EQUIVALENT_GALLON = 'EQ';
+    public const REC20_EQUIVALENT_GALLON = 'EQ';
 
     /**
      * bit per cubic metre
      */
-    const REC20_BIT_PER_CUBIC_METRE = 'F01';
+    public const REC20_BIT_PER_CUBIC_METRE = 'F01';
 
     /**
      * kelvin per kelvin
      */
-    const REC20_KELVIN_PER_KELVIN = 'F02';
+    public const REC20_KELVIN_PER_KELVIN = 'F02';
 
     /**
      * kilopascal per bar
      */
-    const REC20_KILOPASCAL_PER_BAR = 'F03';
+    public const REC20_KILOPASCAL_PER_BAR = 'F03';
 
     /**
      * millibar per bar
      */
-    const REC20_MILLIBAR_PER_BAR = 'F04';
+    public const REC20_MILLIBAR_PER_BAR = 'F04';
 
     /**
      * megapascal per bar
      */
-    const REC20_MEGAPASCAL_PER_BAR = 'F05';
+    public const REC20_MEGAPASCAL_PER_BAR = 'F05';
 
     /**
      * poise per bar
      */
-    const REC20_POISE_PER_BAR = 'F06';
+    public const REC20_POISE_PER_BAR = 'F06';
 
     /**
      * pascal per bar
      */
-    const REC20_PASCAL_PER_BAR = 'F07';
+    public const REC20_PASCAL_PER_BAR = 'F07';
 
     /**
      * milliampere per inch
      */
-    const REC20_MILLIAMPERE_PER_INCH = 'F08';
+    public const REC20_MILLIAMPERE_PER_INCH = 'F08';
 
     /**
      * kelvin per hour
      */
-    const REC20_KELVIN_PER_HOUR = 'F10';
+    public const REC20_KELVIN_PER_HOUR = 'F10';
 
     /**
      * kelvin per minute
      */
-    const REC20_KELVIN_PER_MINUTE = 'F11';
+    public const REC20_KELVIN_PER_MINUTE = 'F11';
 
     /**
      * kelvin per second
      */
-    const REC20_KELVIN_PER_SECOND = 'F12';
+    public const REC20_KELVIN_PER_SECOND = 'F12';
 
     /**
      * slug
      */
-    const REC20_SLUG = 'F13';
+    public const REC20_SLUG = 'F13';
 
     /**
      * gram per kelvin
      */
-    const REC20_GRAM_PER_KELVIN = 'F14';
+    public const REC20_GRAM_PER_KELVIN = 'F14';
 
     /**
      * kilogram per kelvin
      */
-    const REC20_KILOGRAM_PER_KELVIN = 'F15';
+    public const REC20_KILOGRAM_PER_KELVIN = 'F15';
 
     /**
      * milligram per kelvin
      */
-    const REC20_MILLIGRAM_PER_KELVIN = 'F16';
+    public const REC20_MILLIGRAM_PER_KELVIN = 'F16';
 
     /**
      * pound-force per foot
      */
-    const REC20_POUNDFORCE_PER_FOOT = 'F17';
+    public const REC20_POUNDFORCE_PER_FOOT = 'F17';
 
     /**
      * kilogram square centimetre
      */
-    const REC20_KILOGRAM_SQUARE_CENTIMETRE = 'F18';
+    public const REC20_KILOGRAM_SQUARE_CENTIMETRE = 'F18';
 
     /**
      * kilogram square millimetre
      */
-    const REC20_KILOGRAM_SQUARE_MILLIMETRE = 'F19';
+    public const REC20_KILOGRAM_SQUARE_MILLIMETRE = 'F19';
 
     /**
      * pound inch squared
      */
-    const REC20_POUND_INCH_SQUARED = 'F20';
+    public const REC20_POUND_INCH_SQUARED = 'F20';
 
     /**
      * pound-force inch
      */
-    const REC20_POUNDFORCE_INCH = 'F21';
+    public const REC20_POUNDFORCE_INCH = 'F21';
 
     /**
      * pound-force foot per ampere
      */
-    const REC20_POUNDFORCE_FOOT_PER_AMPERE = 'F22';
+    public const REC20_POUNDFORCE_FOOT_PER_AMPERE = 'F22';
 
     /**
      * gram per cubic decimetre
      */
-    const REC20_GRAM_PER_CUBIC_DECIMETRE = 'F23';
+    public const REC20_GRAM_PER_CUBIC_DECIMETRE = 'F23';
 
     /**
      * kilogram per kilomol
      */
-    const REC20_KILOGRAM_PER_KILOMOL = 'F24';
+    public const REC20_KILOGRAM_PER_KILOMOL = 'F24';
 
     /**
      * gram per hertz
      */
-    const REC20_GRAM_PER_HERTZ = 'F25';
+    public const REC20_GRAM_PER_HERTZ = 'F25';
 
     /**
      * gram per day
      */
-    const REC20_GRAM_PER_DAY = 'F26';
+    public const REC20_GRAM_PER_DAY = 'F26';
 
     /**
      * gram per hour
      */
-    const REC20_GRAM_PER_HOUR = 'F27';
+    public const REC20_GRAM_PER_HOUR = 'F27';
 
     /**
      * gram per minute
      */
-    const REC20_GRAM_PER_MINUTE = 'F28';
+    public const REC20_GRAM_PER_MINUTE = 'F28';
 
     /**
      * gram per second
      */
-    const REC20_GRAM_PER_SECOND = 'F29';
+    public const REC20_GRAM_PER_SECOND = 'F29';
 
     /**
      * kilogram per day
      */
-    const REC20_KILOGRAM_PER_DAY = 'F30';
+    public const REC20_KILOGRAM_PER_DAY = 'F30';
 
     /**
      * kilogram per minute
      */
-    const REC20_KILOGRAM_PER_MINUTE = 'F31';
+    public const REC20_KILOGRAM_PER_MINUTE = 'F31';
 
     /**
      * milligram per day
      */
-    const REC20_MILLIGRAM_PER_DAY = 'F32';
+    public const REC20_MILLIGRAM_PER_DAY = 'F32';
 
     /**
      * milligram per minute
      */
-    const REC20_MILLIGRAM_PER_MINUTE = 'F33';
+    public const REC20_MILLIGRAM_PER_MINUTE = 'F33';
 
     /**
      * milligram per second
      */
-    const REC20_MILLIGRAM_PER_SECOND = 'F34';
+    public const REC20_MILLIGRAM_PER_SECOND = 'F34';
 
     /**
      * gram per day kelvin
      */
-    const REC20_GRAM_PER_DAY_KELVIN = 'F35';
+    public const REC20_GRAM_PER_DAY_KELVIN = 'F35';
 
     /**
      * gram per hour kelvin
      */
-    const REC20_GRAM_PER_HOUR_KELVIN = 'F36';
+    public const REC20_GRAM_PER_HOUR_KELVIN = 'F36';
 
     /**
      * gram per minute kelvin
      */
-    const REC20_GRAM_PER_MINUTE_KELVIN = 'F37';
+    public const REC20_GRAM_PER_MINUTE_KELVIN = 'F37';
 
     /**
      * gram per second kelvin
      */
-    const REC20_GRAM_PER_SECOND_KELVIN = 'F38';
+    public const REC20_GRAM_PER_SECOND_KELVIN = 'F38';
 
     /**
      * kilogram per day kelvin
      */
-    const REC20_KILOGRAM_PER_DAY_KELVIN = 'F39';
+    public const REC20_KILOGRAM_PER_DAY_KELVIN = 'F39';
 
     /**
      * kilogram per hour kelvin
      */
-    const REC20_KILOGRAM_PER_HOUR_KELVIN = 'F40';
+    public const REC20_KILOGRAM_PER_HOUR_KELVIN = 'F40';
 
     /**
      * kilogram per minute kelvin
      */
-    const REC20_KILOGRAM_PER_MINUTE_KELVIN = 'F41';
+    public const REC20_KILOGRAM_PER_MINUTE_KELVIN = 'F41';
 
     /**
      * kilogram per second kelvin
      */
-    const REC20_KILOGRAM_PER_SECOND_KELVIN = 'F42';
+    public const REC20_KILOGRAM_PER_SECOND_KELVIN = 'F42';
 
     /**
      * milligram per day kelvin
      */
-    const REC20_MILLIGRAM_PER_DAY_KELVIN = 'F43';
+    public const REC20_MILLIGRAM_PER_DAY_KELVIN = 'F43';
 
     /**
      * milligram per hour kelvin
      */
-    const REC20_MILLIGRAM_PER_HOUR_KELVIN = 'F44';
+    public const REC20_MILLIGRAM_PER_HOUR_KELVIN = 'F44';
 
     /**
      * milligram per minute kelvin
      */
-    const REC20_MILLIGRAM_PER_MINUTE_KELVIN = 'F45';
+    public const REC20_MILLIGRAM_PER_MINUTE_KELVIN = 'F45';
 
     /**
      * milligram per second kelvin
      */
-    const REC20_MILLIGRAM_PER_SECOND_KELVIN = 'F46';
+    public const REC20_MILLIGRAM_PER_SECOND_KELVIN = 'F46';
 
     /**
      * newton per millimetre
      */
-    const REC20_NEWTON_PER_MILLIMETRE = 'F47';
+    public const REC20_NEWTON_PER_MILLIMETRE = 'F47';
 
     /**
      * pound-force per inch
      */
-    const REC20_POUNDFORCE_PER_INCH = 'F48';
+    public const REC20_POUNDFORCE_PER_INCH = 'F48';
 
     /**
      * rod [unit of distance]
      */
-    const REC20_ROD_UNIT_OF_DISTANCE = 'F49';
+    public const REC20_ROD_UNIT_OF_DISTANCE = 'F49';
 
     /**
      * micrometre per kelvin
      */
-    const REC20_MICROMETRE_PER_KELVIN = 'F50';
+    public const REC20_MICROMETRE_PER_KELVIN = 'F50';
 
     /**
      * centimetre per kelvin
      */
-    const REC20_CENTIMETRE_PER_KELVIN = 'F51';
+    public const REC20_CENTIMETRE_PER_KELVIN = 'F51';
 
     /**
      * metre per kelvin
      */
-    const REC20_METRE_PER_KELVIN = 'F52';
+    public const REC20_METRE_PER_KELVIN = 'F52';
 
     /**
      * millimetre per kelvin
      */
-    const REC20_MILLIMETRE_PER_KELVIN = 'F53';
+    public const REC20_MILLIMETRE_PER_KELVIN = 'F53';
 
     /**
      * milliohm per metre
      */
-    const REC20_MILLIOHM_PER_METRE = 'F54';
+    public const REC20_MILLIOHM_PER_METRE = 'F54';
 
     /**
      * ohm per mile (statute mile)
      */
-    const REC20_OHM_PER_MILE_STATUTE_MILE = 'F55';
+    public const REC20_OHM_PER_MILE_STATUTE_MILE = 'F55';
 
     /**
      * ohm per kilometre
      */
-    const REC20_OHM_PER_KILOMETRE = 'F56';
+    public const REC20_OHM_PER_KILOMETRE = 'F56';
 
     /**
      * milliampere per pound-force per square inch
      */
-    const REC20_MILLIAMPERE_PER_POUNDFORCE_PER_SQUARE_INCH = 'F57';
+    public const REC20_MILLIAMPERE_PER_POUNDFORCE_PER_SQUARE_INCH = 'F57';
 
     /**
      * reciprocal bar
      */
-    const REC20_RECIPROCAL_BAR = 'F58';
+    public const REC20_RECIPROCAL_BAR = 'F58';
 
     /**
      * milliampere per bar
      */
-    const REC20_MILLIAMPERE_PER_BAR = 'F59';
+    public const REC20_MILLIAMPERE_PER_BAR = 'F59';
 
     /**
      * degree Celsius per bar
      */
-    const REC20_DEGREE_CELSIUS_PER_BAR = 'F60';
+    public const REC20_DEGREE_CELSIUS_PER_BAR = 'F60';
 
     /**
      * kelvin per bar
      */
-    const REC20_KELVIN_PER_BAR = 'F61';
+    public const REC20_KELVIN_PER_BAR = 'F61';
 
     /**
      * gram per day bar
      */
-    const REC20_GRAM_PER_DAY_BAR = 'F62';
+    public const REC20_GRAM_PER_DAY_BAR = 'F62';
 
     /**
      * gram per hour bar
      */
-    const REC20_GRAM_PER_HOUR_BAR = 'F63';
+    public const REC20_GRAM_PER_HOUR_BAR = 'F63';
 
     /**
      * gram per minute bar
      */
-    const REC20_GRAM_PER_MINUTE_BAR = 'F64';
+    public const REC20_GRAM_PER_MINUTE_BAR = 'F64';
 
     /**
      * gram per second bar
      */
-    const REC20_GRAM_PER_SECOND_BAR = 'F65';
+    public const REC20_GRAM_PER_SECOND_BAR = 'F65';
 
     /**
      * kilogram per day bar
      */
-    const REC20_KILOGRAM_PER_DAY_BAR = 'F66';
+    public const REC20_KILOGRAM_PER_DAY_BAR = 'F66';
 
     /**
      * kilogram per hour bar
      */
-    const REC20_KILOGRAM_PER_HOUR_BAR = 'F67';
+    public const REC20_KILOGRAM_PER_HOUR_BAR = 'F67';
 
     /**
      * kilogram per minute bar
      */
-    const REC20_KILOGRAM_PER_MINUTE_BAR = 'F68';
+    public const REC20_KILOGRAM_PER_MINUTE_BAR = 'F68';
 
     /**
      * kilogram per second bar
      */
-    const REC20_KILOGRAM_PER_SECOND_BAR = 'F69';
+    public const REC20_KILOGRAM_PER_SECOND_BAR = 'F69';
 
     /**
      * milligram per day bar
      */
-    const REC20_MILLIGRAM_PER_DAY_BAR = 'F70';
+    public const REC20_MILLIGRAM_PER_DAY_BAR = 'F70';
 
     /**
      * milligram per hour bar
      */
-    const REC20_MILLIGRAM_PER_HOUR_BAR = 'F71';
+    public const REC20_MILLIGRAM_PER_HOUR_BAR = 'F71';
 
     /**
      * milligram per minute bar
      */
-    const REC20_MILLIGRAM_PER_MINUTE_BAR = 'F72';
+    public const REC20_MILLIGRAM_PER_MINUTE_BAR = 'F72';
 
     /**
      * milligram per second bar
      */
-    const REC20_MILLIGRAM_PER_SECOND_BAR = 'F73';
+    public const REC20_MILLIGRAM_PER_SECOND_BAR = 'F73';
 
     /**
      * gram per bar
      */
-    const REC20_GRAM_PER_BAR = 'F74';
+    public const REC20_GRAM_PER_BAR = 'F74';
 
     /**
      * milligram per bar
      */
-    const REC20_MILLIGRAM_PER_BAR = 'F75';
+    public const REC20_MILLIGRAM_PER_BAR = 'F75';
 
     /**
      * milliampere per millimetre
      */
-    const REC20_MILLIAMPERE_PER_MILLIMETRE = 'F76';
+    public const REC20_MILLIAMPERE_PER_MILLIMETRE = 'F76';
 
     /**
      * pascal second per kelvin
      */
-    const REC20_PASCAL_SECOND_PER_KELVIN = 'F77';
+    public const REC20_PASCAL_SECOND_PER_KELVIN = 'F77';
 
     /**
      * inch of water
      */
-    const REC20_INCH_OF_WATER = 'F78';
+    public const REC20_INCH_OF_WATER = 'F78';
 
     /**
      * inch of mercury
      */
-    const REC20_INCH_OF_MERCURY = 'F79';
+    public const REC20_INCH_OF_MERCURY = 'F79';
 
     /**
      * water horse power
      */
-    const REC20_WATER_HORSE_POWER = 'F80';
+    public const REC20_WATER_HORSE_POWER = 'F80';
 
     /**
      * bar per kelvin
      */
-    const REC20_BAR_PER_KELVIN = 'F81';
+    public const REC20_BAR_PER_KELVIN = 'F81';
 
     /**
      * hectopascal per kelvin
      */
-    const REC20_HECTOPASCAL_PER_KELVIN = 'F82';
+    public const REC20_HECTOPASCAL_PER_KELVIN = 'F82';
 
     /**
      * kilopascal per kelvin
      */
-    const REC20_KILOPASCAL_PER_KELVIN = 'F83';
+    public const REC20_KILOPASCAL_PER_KELVIN = 'F83';
 
     /**
      * millibar per kelvin
      */
-    const REC20_MILLIBAR_PER_KELVIN = 'F84';
+    public const REC20_MILLIBAR_PER_KELVIN = 'F84';
 
     /**
      * megapascal per kelvin
      */
-    const REC20_MEGAPASCAL_PER_KELVIN = 'F85';
+    public const REC20_MEGAPASCAL_PER_KELVIN = 'F85';
 
     /**
      * poise per kelvin
      */
-    const REC20_POISE_PER_KELVIN = 'F86';
+    public const REC20_POISE_PER_KELVIN = 'F86';
 
     /**
      * volt per litre minute
      */
-    const REC20_VOLT_PER_LITRE_MINUTE = 'F87';
+    public const REC20_VOLT_PER_LITRE_MINUTE = 'F87';
 
     /**
      * newton centimetre
      */
-    const REC20_NEWTON_CENTIMETRE = 'F88';
+    public const REC20_NEWTON_CENTIMETRE = 'F88';
 
     /**
      * newton metre per degree
      */
-    const REC20_NEWTON_METRE_PER_DEGREE = 'F89';
+    public const REC20_NEWTON_METRE_PER_DEGREE = 'F89';
 
     /**
      * newton metre per ampere
      */
-    const REC20_NEWTON_METRE_PER_AMPERE = 'F90';
+    public const REC20_NEWTON_METRE_PER_AMPERE = 'F90';
 
     /**
      * bar litre per second
      */
-    const REC20_BAR_LITRE_PER_SECOND = 'F91';
+    public const REC20_BAR_LITRE_PER_SECOND = 'F91';
 
     /**
      * bar cubic metre per second
      */
-    const REC20_BAR_CUBIC_METRE_PER_SECOND = 'F92';
+    public const REC20_BAR_CUBIC_METRE_PER_SECOND = 'F92';
 
     /**
      * hectopascal litre per second
      */
-    const REC20_HECTOPASCAL_LITRE_PER_SECOND = 'F93';
+    public const REC20_HECTOPASCAL_LITRE_PER_SECOND = 'F93';
 
     /**
      * hectopascal cubic metre per second
      */
-    const REC20_HECTOPASCAL_CUBIC_METRE_PER_SECOND = 'F94';
+    public const REC20_HECTOPASCAL_CUBIC_METRE_PER_SECOND = 'F94';
 
     /**
      * millibar litre per second
      */
-    const REC20_MILLIBAR_LITRE_PER_SECOND = 'F95';
+    public const REC20_MILLIBAR_LITRE_PER_SECOND = 'F95';
 
     /**
      * millibar cubic metre per second
      */
-    const REC20_MILLIBAR_CUBIC_METRE_PER_SECOND = 'F96';
+    public const REC20_MILLIBAR_CUBIC_METRE_PER_SECOND = 'F96';
 
     /**
      * megapascal litre per second
      */
-    const REC20_MEGAPASCAL_LITRE_PER_SECOND = 'F97';
+    public const REC20_MEGAPASCAL_LITRE_PER_SECOND = 'F97';
 
     /**
      * megapascal cubic metre per second
      */
-    const REC20_MEGAPASCAL_CUBIC_METRE_PER_SECOND = 'F98';
+    public const REC20_MEGAPASCAL_CUBIC_METRE_PER_SECOND = 'F98';
 
     /**
      * pascal litre per second
      */
-    const REC20_PASCAL_LITRE_PER_SECOND = 'F99';
+    public const REC20_PASCAL_LITRE_PER_SECOND = 'F99';
 
     /**
      * degree Fahrenheit
      */
-    const REC20_DEGREE_FAHRENHEIT = 'FAH';
+    public const REC20_DEGREE_FAHRENHEIT = 'FAH';
 
     /**
      * farad
      */
-    const REC20_FARAD = 'FAR';
+    public const REC20_FARAD = 'FAR';
 
     /**
      * fibre metre
      */
-    const REC20_FIBRE_METRE = 'FBM';
+    public const REC20_FIBRE_METRE = 'FBM';
 
     /**
      * thousand cubic foot
      */
-    const REC20_THOUSAND_CUBIC_FOOT = 'FC';
+    public const REC20_THOUSAND_CUBIC_FOOT = 'FC';
 
     /**
      * hundred cubic metre
      */
-    const REC20_HUNDRED_CUBIC_METRE = 'FF';
+    public const REC20_HUNDRED_CUBIC_METRE = 'FF';
 
     /**
      * micromole
      */
-    const REC20_MICROMOLE = 'FH';
+    public const REC20_MICROMOLE = 'FH';
 
     /**
      * failures in time
      */
-    const REC20_FAILURES_IN_TIME = 'FIT';
+    public const REC20_FAILURES_IN_TIME = 'FIT';
 
     /**
      * flake ton
      */
-    const REC20_FLAKE_TON = 'FL';
+    public const REC20_FLAKE_TON = 'FL';
 
     /**
      * foot
      */
-    const REC20_FOOT = 'FOT';
+    public const REC20_FOOT = 'FOT';
 
     /**
      * pound per square foot
      */
-    const REC20_POUND_PER_SQUARE_FOOT = 'FP';
+    public const REC20_POUND_PER_SQUARE_FOOT = 'FP';
 
     /**
      * foot per minute
      */
-    const REC20_FOOT_PER_MINUTE = 'FR';
+    public const REC20_FOOT_PER_MINUTE = 'FR';
 
     /**
      * foot per second
      */
-    const REC20_FOOT_PER_SECOND = 'FS';
+    public const REC20_FOOT_PER_SECOND = 'FS';
 
     /**
      * square foot
      */
-    const REC20_SQUARE_FOOT = 'FTK';
+    public const REC20_SQUARE_FOOT = 'FTK';
 
     /**
      * cubic foot
      */
-    const REC20_CUBIC_FOOT = 'FTQ';
+    public const REC20_CUBIC_FOOT = 'FTQ';
 
     /**
      * pascal cubic metre per second
      */
-    const REC20_PASCAL_CUBIC_METRE_PER_SECOND = 'G01';
+    public const REC20_PASCAL_CUBIC_METRE_PER_SECOND = 'G01';
 
     /**
      * centimetre per bar
      */
-    const REC20_CENTIMETRE_PER_BAR = 'G04';
+    public const REC20_CENTIMETRE_PER_BAR = 'G04';
 
     /**
      * metre per bar
      */
-    const REC20_METRE_PER_BAR = 'G05';
+    public const REC20_METRE_PER_BAR = 'G05';
 
     /**
      * millimetre per bar
      */
-    const REC20_MILLIMETRE_PER_BAR = 'G06';
+    public const REC20_MILLIMETRE_PER_BAR = 'G06';
 
     /**
      * square inch per second
      */
-    const REC20_SQUARE_INCH_PER_SECOND = 'G08';
+    public const REC20_SQUARE_INCH_PER_SECOND = 'G08';
 
     /**
      * square metre per second kelvin
      */
-    const REC20_SQUARE_METRE_PER_SECOND_KELVIN = 'G09';
+    public const REC20_SQUARE_METRE_PER_SECOND_KELVIN = 'G09';
 
     /**
      * stokes per kelvin
      */
-    const REC20_STOKES_PER_KELVIN = 'G10';
+    public const REC20_STOKES_PER_KELVIN = 'G10';
 
     /**
      * gram per cubic centimetre bar
      */
-    const REC20_GRAM_PER_CUBIC_CENTIMETRE_BAR = 'G11';
+    public const REC20_GRAM_PER_CUBIC_CENTIMETRE_BAR = 'G11';
 
     /**
      * gram per cubic decimetre bar
      */
-    const REC20_GRAM_PER_CUBIC_DECIMETRE_BAR = 'G12';
+    public const REC20_GRAM_PER_CUBIC_DECIMETRE_BAR = 'G12';
 
     /**
      * gram per litre bar
      */
-    const REC20_GRAM_PER_LITRE_BAR = 'G13';
+    public const REC20_GRAM_PER_LITRE_BAR = 'G13';
 
     /**
      * gram per cubic metre bar
      */
-    const REC20_GRAM_PER_CUBIC_METRE_BAR = 'G14';
+    public const REC20_GRAM_PER_CUBIC_METRE_BAR = 'G14';
 
     /**
      * gram per millilitre bar
      */
-    const REC20_GRAM_PER_MILLILITRE_BAR = 'G15';
+    public const REC20_GRAM_PER_MILLILITRE_BAR = 'G15';
 
     /**
      * kilogram per cubic centimetre bar
      */
-    const REC20_KILOGRAM_PER_CUBIC_CENTIMETRE_BAR = 'G16';
+    public const REC20_KILOGRAM_PER_CUBIC_CENTIMETRE_BAR = 'G16';
 
     /**
      * kilogram per litre bar
      */
-    const REC20_KILOGRAM_PER_LITRE_BAR = 'G17';
+    public const REC20_KILOGRAM_PER_LITRE_BAR = 'G17';
 
     /**
      * kilogram per cubic metre bar
      */
-    const REC20_KILOGRAM_PER_CUBIC_METRE_BAR = 'G18';
+    public const REC20_KILOGRAM_PER_CUBIC_METRE_BAR = 'G18';
 
     /**
      * newton metre per kilogram
      */
-    const REC20_NEWTON_METRE_PER_KILOGRAM = 'G19';
+    public const REC20_NEWTON_METRE_PER_KILOGRAM = 'G19';
 
     /**
      * US gallon per minute
      */
-    const REC20_US_GALLON_PER_MINUTE = 'G2';
+    public const REC20_US_GALLON_PER_MINUTE = 'G2';
 
     /**
      * pound-force foot per pound
      */
-    const REC20_POUNDFORCE_FOOT_PER_POUND = 'G20';
+    public const REC20_POUNDFORCE_FOOT_PER_POUND = 'G20';
 
     /**
      * cup [unit of volume]
      */
-    const REC20_CUP_UNIT_OF_VOLUME = 'G21';
+    public const REC20_CUP_UNIT_OF_VOLUME = 'G21';
 
     /**
      * peck
      */
-    const REC20_PECK = 'G23';
+    public const REC20_PECK = 'G23';
 
     /**
      * tablespoon (US)
      */
-    const REC20_TABLESPOON_US = 'G24';
+    public const REC20_TABLESPOON_US = 'G24';
 
     /**
      * teaspoon (US)
      */
-    const REC20_TEASPOON_US = 'G25';
+    public const REC20_TEASPOON_US = 'G25';
 
     /**
      * stere
      */
-    const REC20_STERE = 'G26';
+    public const REC20_STERE = 'G26';
 
     /**
      * cubic centimetre per kelvin
      */
-    const REC20_CUBIC_CENTIMETRE_PER_KELVIN = 'G27';
+    public const REC20_CUBIC_CENTIMETRE_PER_KELVIN = 'G27';
 
     /**
      * litre per kelvin
      */
-    const REC20_LITRE_PER_KELVIN = 'G28';
+    public const REC20_LITRE_PER_KELVIN = 'G28';
 
     /**
      * cubic metre per kelvin
      */
-    const REC20_CUBIC_METRE_PER_KELVIN = 'G29';
+    public const REC20_CUBIC_METRE_PER_KELVIN = 'G29';
 
     /**
      * Imperial gallon per minute
      */
-    const REC20_IMPERIAL_GALLON_PER_MINUTE = 'G3';
+    public const REC20_IMPERIAL_GALLON_PER_MINUTE = 'G3';
 
     /**
      * millilitre per kelvin
      */
-    const REC20_MILLILITRE_PER_KELVIN = 'G30';
+    public const REC20_MILLILITRE_PER_KELVIN = 'G30';
 
     /**
      * kilogram per cubic centimetre
      */
-    const REC20_KILOGRAM_PER_CUBIC_CENTIMETRE = 'G31';
+    public const REC20_KILOGRAM_PER_CUBIC_CENTIMETRE = 'G31';
 
     /**
      * ounce (avoirdupois) per cubic yard
      */
-    const REC20_OUNCE_AVOIRDUPOIS_PER_CUBIC_YARD = 'G32';
+    public const REC20_OUNCE_AVOIRDUPOIS_PER_CUBIC_YARD = 'G32';
 
     /**
      * gram per cubic centimetre kelvin
      */
-    const REC20_GRAM_PER_CUBIC_CENTIMETRE_KELVIN = 'G33';
+    public const REC20_GRAM_PER_CUBIC_CENTIMETRE_KELVIN = 'G33';
 
     /**
      * gram per cubic decimetre kelvin
      */
-    const REC20_GRAM_PER_CUBIC_DECIMETRE_KELVIN = 'G34';
+    public const REC20_GRAM_PER_CUBIC_DECIMETRE_KELVIN = 'G34';
 
     /**
      * gram per litre kelvin
      */
-    const REC20_GRAM_PER_LITRE_KELVIN = 'G35';
+    public const REC20_GRAM_PER_LITRE_KELVIN = 'G35';
 
     /**
      * gram per cubic metre kelvin
      */
-    const REC20_GRAM_PER_CUBIC_METRE_KELVIN = 'G36';
+    public const REC20_GRAM_PER_CUBIC_METRE_KELVIN = 'G36';
 
     /**
      * gram per millilitre kelvin
      */
-    const REC20_GRAM_PER_MILLILITRE_KELVIN = 'G37';
+    public const REC20_GRAM_PER_MILLILITRE_KELVIN = 'G37';
 
     /**
      * kilogram per cubic centimetre kelvin
      */
-    const REC20_KILOGRAM_PER_CUBIC_CENTIMETRE_KELVIN = 'G38';
+    public const REC20_KILOGRAM_PER_CUBIC_CENTIMETRE_KELVIN = 'G38';
 
     /**
      * kilogram per litre kelvin
      */
-    const REC20_KILOGRAM_PER_LITRE_KELVIN = 'G39';
+    public const REC20_KILOGRAM_PER_LITRE_KELVIN = 'G39';
 
     /**
      * kilogram per cubic metre kelvin
      */
-    const REC20_KILOGRAM_PER_CUBIC_METRE_KELVIN = 'G40';
+    public const REC20_KILOGRAM_PER_CUBIC_METRE_KELVIN = 'G40';
 
     /**
      * square metre per second bar
      */
-    const REC20_SQUARE_METRE_PER_SECOND_BAR = 'G41';
+    public const REC20_SQUARE_METRE_PER_SECOND_BAR = 'G41';
 
     /**
      * microsiemens per centimetre
      */
-    const REC20_MICROSIEMENS_PER_CENTIMETRE = 'G42';
+    public const REC20_MICROSIEMENS_PER_CENTIMETRE = 'G42';
 
     /**
      * microsiemens per metre
      */
-    const REC20_MICROSIEMENS_PER_METRE = 'G43';
+    public const REC20_MICROSIEMENS_PER_METRE = 'G43';
 
     /**
      * nanosiemens per centimetre
      */
-    const REC20_NANOSIEMENS_PER_CENTIMETRE = 'G44';
+    public const REC20_NANOSIEMENS_PER_CENTIMETRE = 'G44';
 
     /**
      * nanosiemens per metre
      */
-    const REC20_NANOSIEMENS_PER_METRE = 'G45';
+    public const REC20_NANOSIEMENS_PER_METRE = 'G45';
 
     /**
      * stokes per bar
      */
-    const REC20_STOKES_PER_BAR = 'G46';
+    public const REC20_STOKES_PER_BAR = 'G46';
 
     /**
      * cubic centimetre per day
      */
-    const REC20_CUBIC_CENTIMETRE_PER_DAY = 'G47';
+    public const REC20_CUBIC_CENTIMETRE_PER_DAY = 'G47';
 
     /**
      * cubic centimetre per hour
      */
-    const REC20_CUBIC_CENTIMETRE_PER_HOUR = 'G48';
+    public const REC20_CUBIC_CENTIMETRE_PER_HOUR = 'G48';
 
     /**
      * cubic centimetre per minute
      */
-    const REC20_CUBIC_CENTIMETRE_PER_MINUTE = 'G49';
+    public const REC20_CUBIC_CENTIMETRE_PER_MINUTE = 'G49';
 
     /**
      * gallon (US) per hour
      */
-    const REC20_GALLON_US_PER_HOUR = 'G50';
+    public const REC20_GALLON_US_PER_HOUR = 'G50';
 
     /**
      * litre per second
      */
-    const REC20_LITRE_PER_SECOND = 'G51';
+    public const REC20_LITRE_PER_SECOND = 'G51';
 
     /**
      * cubic metre per day
      */
-    const REC20_CUBIC_METRE_PER_DAY = 'G52';
+    public const REC20_CUBIC_METRE_PER_DAY = 'G52';
 
     /**
      * cubic metre per minute
      */
-    const REC20_CUBIC_METRE_PER_MINUTE = 'G53';
+    public const REC20_CUBIC_METRE_PER_MINUTE = 'G53';
 
     /**
      * millilitre per day
      */
-    const REC20_MILLILITRE_PER_DAY = 'G54';
+    public const REC20_MILLILITRE_PER_DAY = 'G54';
 
     /**
      * millilitre per hour
      */
-    const REC20_MILLILITRE_PER_HOUR = 'G55';
+    public const REC20_MILLILITRE_PER_HOUR = 'G55';
 
     /**
      * cubic inch per hour
      */
-    const REC20_CUBIC_INCH_PER_HOUR = 'G56';
+    public const REC20_CUBIC_INCH_PER_HOUR = 'G56';
 
     /**
      * cubic inch per minute
      */
-    const REC20_CUBIC_INCH_PER_MINUTE = 'G57';
+    public const REC20_CUBIC_INCH_PER_MINUTE = 'G57';
 
     /**
      * cubic inch per second
      */
-    const REC20_CUBIC_INCH_PER_SECOND = 'G58';
+    public const REC20_CUBIC_INCH_PER_SECOND = 'G58';
 
     /**
      * milliampere per litre minute
      */
-    const REC20_MILLIAMPERE_PER_LITRE_MINUTE = 'G59';
+    public const REC20_MILLIAMPERE_PER_LITRE_MINUTE = 'G59';
 
     /**
      * volt per bar
      */
-    const REC20_VOLT_PER_BAR = 'G60';
+    public const REC20_VOLT_PER_BAR = 'G60';
 
     /**
      * cubic centimetre per day kelvin
      */
-    const REC20_CUBIC_CENTIMETRE_PER_DAY_KELVIN = 'G61';
+    public const REC20_CUBIC_CENTIMETRE_PER_DAY_KELVIN = 'G61';
 
     /**
      * cubic centimetre per hour kelvin
      */
-    const REC20_CUBIC_CENTIMETRE_PER_HOUR_KELVIN = 'G62';
+    public const REC20_CUBIC_CENTIMETRE_PER_HOUR_KELVIN = 'G62';
 
     /**
      * cubic centimetre per minute kelvin
      */
-    const REC20_CUBIC_CENTIMETRE_PER_MINUTE_KELVIN = 'G63';
+    public const REC20_CUBIC_CENTIMETRE_PER_MINUTE_KELVIN = 'G63';
 
     /**
      * cubic centimetre per second kelvin
      */
-    const REC20_CUBIC_CENTIMETRE_PER_SECOND_KELVIN = 'G64';
+    public const REC20_CUBIC_CENTIMETRE_PER_SECOND_KELVIN = 'G64';
 
     /**
      * litre per day kelvin
      */
-    const REC20_LITRE_PER_DAY_KELVIN = 'G65';
+    public const REC20_LITRE_PER_DAY_KELVIN = 'G65';
 
     /**
      * litre per hour kelvin
      */
-    const REC20_LITRE_PER_HOUR_KELVIN = 'G66';
+    public const REC20_LITRE_PER_HOUR_KELVIN = 'G66';
 
     /**
      * litre per minute kelvin
      */
-    const REC20_LITRE_PER_MINUTE_KELVIN = 'G67';
+    public const REC20_LITRE_PER_MINUTE_KELVIN = 'G67';
 
     /**
      * litre per second kelvin
      */
-    const REC20_LITRE_PER_SECOND_KELVIN = 'G68';
+    public const REC20_LITRE_PER_SECOND_KELVIN = 'G68';
 
     /**
      * cubic metre per day kelvin
      */
-    const REC20_CUBIC_METRE_PER_DAY_KELVIN = 'G69';
+    public const REC20_CUBIC_METRE_PER_DAY_KELVIN = 'G69';
 
     /**
      * cubic metre per hour kelvin
      */
-    const REC20_CUBIC_METRE_PER_HOUR_KELVIN = 'G70';
+    public const REC20_CUBIC_METRE_PER_HOUR_KELVIN = 'G70';
 
     /**
      * cubic metre per minute kelvin
      */
-    const REC20_CUBIC_METRE_PER_MINUTE_KELVIN = 'G71';
+    public const REC20_CUBIC_METRE_PER_MINUTE_KELVIN = 'G71';
 
     /**
      * cubic metre per second kelvin
      */
-    const REC20_CUBIC_METRE_PER_SECOND_KELVIN = 'G72';
+    public const REC20_CUBIC_METRE_PER_SECOND_KELVIN = 'G72';
 
     /**
      * millilitre per day kelvin
      */
-    const REC20_MILLILITRE_PER_DAY_KELVIN = 'G73';
+    public const REC20_MILLILITRE_PER_DAY_KELVIN = 'G73';
 
     /**
      * millilitre per hour kelvin
      */
-    const REC20_MILLILITRE_PER_HOUR_KELVIN = 'G74';
+    public const REC20_MILLILITRE_PER_HOUR_KELVIN = 'G74';
 
     /**
      * millilitre per minute kelvin
      */
-    const REC20_MILLILITRE_PER_MINUTE_KELVIN = 'G75';
+    public const REC20_MILLILITRE_PER_MINUTE_KELVIN = 'G75';
 
     /**
      * millilitre per second kelvin
      */
-    const REC20_MILLILITRE_PER_SECOND_KELVIN = 'G76';
+    public const REC20_MILLILITRE_PER_SECOND_KELVIN = 'G76';
 
     /**
      * millimetre to the fourth power
      */
-    const REC20_MILLIMETRE_TO_THE_FOURTH_POWER = 'G77';
+    public const REC20_MILLIMETRE_TO_THE_FOURTH_POWER = 'G77';
 
     /**
      * cubic centimetre per day bar
      */
-    const REC20_CUBIC_CENTIMETRE_PER_DAY_BAR = 'G78';
+    public const REC20_CUBIC_CENTIMETRE_PER_DAY_BAR = 'G78';
 
     /**
      * cubic centimetre per hour bar
      */
-    const REC20_CUBIC_CENTIMETRE_PER_HOUR_BAR = 'G79';
+    public const REC20_CUBIC_CENTIMETRE_PER_HOUR_BAR = 'G79';
 
     /**
      * cubic centimetre per minute bar
      */
-    const REC20_CUBIC_CENTIMETRE_PER_MINUTE_BAR = 'G80';
+    public const REC20_CUBIC_CENTIMETRE_PER_MINUTE_BAR = 'G80';
 
     /**
      * cubic centimetre per second bar
      */
-    const REC20_CUBIC_CENTIMETRE_PER_SECOND_BAR = 'G81';
+    public const REC20_CUBIC_CENTIMETRE_PER_SECOND_BAR = 'G81';
 
     /**
      * litre per day bar
      */
-    const REC20_LITRE_PER_DAY_BAR = 'G82';
+    public const REC20_LITRE_PER_DAY_BAR = 'G82';
 
     /**
      * litre per hour bar
      */
-    const REC20_LITRE_PER_HOUR_BAR = 'G83';
+    public const REC20_LITRE_PER_HOUR_BAR = 'G83';
 
     /**
      * litre per minute bar
      */
-    const REC20_LITRE_PER_MINUTE_BAR = 'G84';
+    public const REC20_LITRE_PER_MINUTE_BAR = 'G84';
 
     /**
      * litre per second bar
      */
-    const REC20_LITRE_PER_SECOND_BAR = 'G85';
+    public const REC20_LITRE_PER_SECOND_BAR = 'G85';
 
     /**
      * cubic metre per day bar
      */
-    const REC20_CUBIC_METRE_PER_DAY_BAR = 'G86';
+    public const REC20_CUBIC_METRE_PER_DAY_BAR = 'G86';
 
     /**
      * cubic metre per hour bar
      */
-    const REC20_CUBIC_METRE_PER_HOUR_BAR = 'G87';
+    public const REC20_CUBIC_METRE_PER_HOUR_BAR = 'G87';
 
     /**
      * cubic metre per minute bar
      */
-    const REC20_CUBIC_METRE_PER_MINUTE_BAR = 'G88';
+    public const REC20_CUBIC_METRE_PER_MINUTE_BAR = 'G88';
 
     /**
      * cubic metre per second bar
      */
-    const REC20_CUBIC_METRE_PER_SECOND_BAR = 'G89';
+    public const REC20_CUBIC_METRE_PER_SECOND_BAR = 'G89';
 
     /**
      * millilitre per day bar
      */
-    const REC20_MILLILITRE_PER_DAY_BAR = 'G90';
+    public const REC20_MILLILITRE_PER_DAY_BAR = 'G90';
 
     /**
      * millilitre per hour bar
      */
-    const REC20_MILLILITRE_PER_HOUR_BAR = 'G91';
+    public const REC20_MILLILITRE_PER_HOUR_BAR = 'G91';
 
     /**
      * millilitre per minute bar
      */
-    const REC20_MILLILITRE_PER_MINUTE_BAR = 'G92';
+    public const REC20_MILLILITRE_PER_MINUTE_BAR = 'G92';
 
     /**
      * millilitre per second bar
      */
-    const REC20_MILLILITRE_PER_SECOND_BAR = 'G93';
+    public const REC20_MILLILITRE_PER_SECOND_BAR = 'G93';
 
     /**
      * cubic centimetre per bar
      */
-    const REC20_CUBIC_CENTIMETRE_PER_BAR = 'G94';
+    public const REC20_CUBIC_CENTIMETRE_PER_BAR = 'G94';
 
     /**
      * litre per bar
      */
-    const REC20_LITRE_PER_BAR = 'G95';
+    public const REC20_LITRE_PER_BAR = 'G95';
 
     /**
      * cubic metre per bar
      */
-    const REC20_CUBIC_METRE_PER_BAR = 'G96';
+    public const REC20_CUBIC_METRE_PER_BAR = 'G96';
 
     /**
      * millilitre per bar
      */
-    const REC20_MILLILITRE_PER_BAR = 'G97';
+    public const REC20_MILLILITRE_PER_BAR = 'G97';
 
     /**
      * microhenry per kiloohm
      */
-    const REC20_MICROHENRY_PER_KILOOHM = 'G98';
+    public const REC20_MICROHENRY_PER_KILOOHM = 'G98';
 
     /**
      * microhenry per ohm
      */
-    const REC20_MICROHENRY_PER_OHM = 'G99';
+    public const REC20_MICROHENRY_PER_OHM = 'G99';
 
     /**
      * gallon (US) per day
      */
-    const REC20_GALLON_US_PER_DAY = 'GB';
+    public const REC20_GALLON_US_PER_DAY = 'GB';
 
     /**
      * gigabecquerel
      */
-    const REC20_GIGABECQUEREL = 'GBQ';
+    public const REC20_GIGABECQUEREL = 'GBQ';
 
     /**
      * gram, dry weight
      */
-    const REC20_GRAM_DRY_WEIGHT = 'GDW';
+    public const REC20_GRAM_DRY_WEIGHT = 'GDW';
 
     /**
      * pound per gallon (US)
      */
-    const REC20_POUND_PER_GALLON_US = 'GE';
+    public const REC20_POUND_PER_GALLON_US = 'GE';
 
     /**
      * gram per metre (gram per 100 centimetres)
      */
-    const REC20_GRAM_PER_METRE_GRAM_PER_100_CENTIMETRES = 'GF';
+    public const REC20_GRAM_PER_METRE_GRAM_PER_100_CENTIMETRES = 'GF';
 
     /**
      * gram of fissile isotope
      */
-    const REC20_GRAM_OF_FISSILE_ISOTOPE = 'GFI';
+    public const REC20_GRAM_OF_FISSILE_ISOTOPE = 'GFI';
 
     /**
      * great gross
      */
-    const REC20_GREAT_GROSS = 'GGR';
+    public const REC20_GREAT_GROSS = 'GGR';
 
     /**
      * gill (US)
      */
-    const REC20_GILL_US = 'GIA';
+    public const REC20_GILL_US = 'GIA';
 
     /**
      * gram, including container
      */
-    const REC20_GRAM_INCLUDING_CONTAINER = 'GIC';
+    public const REC20_GRAM_INCLUDING_CONTAINER = 'GIC';
 
     /**
      * gill (UK)
      */
-    const REC20_GILL_UK = 'GII';
+    public const REC20_GILL_UK = 'GII';
 
     /**
      * gram, including inner packaging
      */
-    const REC20_GRAM_INCLUDING_INNER_PACKAGING = 'GIP';
+    public const REC20_GRAM_INCLUDING_INNER_PACKAGING = 'GIP';
 
     /**
      * gram per millilitre
      */
-    const REC20_GRAM_PER_MILLILITRE = 'GJ';
+    public const REC20_GRAM_PER_MILLILITRE = 'GJ';
 
     /**
      * gram per litre
      */
-    const REC20_GRAM_PER_LITRE = 'GL';
+    public const REC20_GRAM_PER_LITRE = 'GL';
 
     /**
      * dry gallon (US)
      */
-    const REC20_DRY_GALLON_US = 'GLD';
+    public const REC20_DRY_GALLON_US = 'GLD';
 
     /**
      * gallon (UK)
      */
-    const REC20_GALLON_UK = 'GLI';
+    public const REC20_GALLON_UK = 'GLI';
 
     /**
      * gallon (US)
      */
-    const REC20_GALLON_US = 'GLL';
+    public const REC20_GALLON_US = 'GLL';
 
     /**
      * gram per square metre
      */
-    const REC20_GRAM_PER_SQUARE_METRE = 'GM';
+    public const REC20_GRAM_PER_SQUARE_METRE = 'GM';
 
     /**
      * milligram per square metre
      */
-    const REC20_MILLIGRAM_PER_SQUARE_METRE = 'GO';
+    public const REC20_MILLIGRAM_PER_SQUARE_METRE = 'GO';
 
     /**
      * milligram per cubic metre
      */
-    const REC20_MILLIGRAM_PER_CUBIC_METRE = 'GP';
+    public const REC20_MILLIGRAM_PER_CUBIC_METRE = 'GP';
 
     /**
      * microgram per cubic metre
      */
-    const REC20_MICROGRAM_PER_CUBIC_METRE = 'GQ';
+    public const REC20_MICROGRAM_PER_CUBIC_METRE = 'GQ';
 
     /**
      * gram
      */
-    const REC20_GRAM = 'GRM';
+    public const REC20_GRAM = 'GRM';
 
     /**
      * grain
      */
-    const REC20_GRAIN = 'GRN';
+    public const REC20_GRAIN = 'GRN';
 
     /**
      * gross
      */
-    const REC20_GROSS = 'GRO';
+    public const REC20_GROSS = 'GRO';
 
     /**
      * gigajoule
      */
-    const REC20_GIGAJOULE = 'GV';
+    public const REC20_GIGAJOULE = 'GV';
 
     /**
      * gigawatt hour
      */
-    const REC20_GIGAWATT_HOUR = 'GWH';
+    public const REC20_GIGAWATT_HOUR = 'GWH';
 
     /**
      * henry per kiloohm
      */
-    const REC20_HENRY_PER_KILOOHM = 'H03';
+    public const REC20_HENRY_PER_KILOOHM = 'H03';
 
     /**
      * henry per ohm
      */
-    const REC20_HENRY_PER_OHM = 'H04';
+    public const REC20_HENRY_PER_OHM = 'H04';
 
     /**
      * millihenry per kiloohm
      */
-    const REC20_MILLIHENRY_PER_KILOOHM = 'H05';
+    public const REC20_MILLIHENRY_PER_KILOOHM = 'H05';
 
     /**
      * millihenry per ohm
      */
-    const REC20_MILLIHENRY_PER_OHM = 'H06';
+    public const REC20_MILLIHENRY_PER_OHM = 'H06';
 
     /**
      * pascal second per bar
      */
-    const REC20_PASCAL_SECOND_PER_BAR = 'H07';
+    public const REC20_PASCAL_SECOND_PER_BAR = 'H07';
 
     /**
      * microbecquerel
      */
-    const REC20_MICROBECQUEREL = 'H08';
+    public const REC20_MICROBECQUEREL = 'H08';
 
     /**
      * reciprocal year
      */
-    const REC20_RECIPROCAL_YEAR = 'H09';
+    public const REC20_RECIPROCAL_YEAR = 'H09';
 
     /**
      * reciprocal hour
      */
-    const REC20_RECIPROCAL_HOUR = 'H10';
+    public const REC20_RECIPROCAL_HOUR = 'H10';
 
     /**
      * reciprocal month
      */
-    const REC20_RECIPROCAL_MONTH = 'H11';
+    public const REC20_RECIPROCAL_MONTH = 'H11';
 
     /**
      * degree Celsius per hour
      */
-    const REC20_DEGREE_CELSIUS_PER_HOUR = 'H12';
+    public const REC20_DEGREE_CELSIUS_PER_HOUR = 'H12';
 
     /**
      * degree Celsius per minute
      */
-    const REC20_DEGREE_CELSIUS_PER_MINUTE = 'H13';
+    public const REC20_DEGREE_CELSIUS_PER_MINUTE = 'H13';
 
     /**
      * degree Celsius per second
      */
-    const REC20_DEGREE_CELSIUS_PER_SECOND = 'H14';
+    public const REC20_DEGREE_CELSIUS_PER_SECOND = 'H14';
 
     /**
      * square centimetre per gram
      */
-    const REC20_SQUARE_CENTIMETRE_PER_GRAM = 'H15';
+    public const REC20_SQUARE_CENTIMETRE_PER_GRAM = 'H15';
 
     /**
      * square decametre
      */
-    const REC20_SQUARE_DECAMETRE = 'H16';
+    public const REC20_SQUARE_DECAMETRE = 'H16';
 
     /**
      * square hectometre
      */
-    const REC20_SQUARE_HECTOMETRE = 'H18';
+    public const REC20_SQUARE_HECTOMETRE = 'H18';
 
     /**
      * cubic hectometre
      */
-    const REC20_CUBIC_HECTOMETRE = 'H19';
+    public const REC20_CUBIC_HECTOMETRE = 'H19';
 
     /**
      * cubic kilometre
      */
-    const REC20_CUBIC_KILOMETRE = 'H20';
+    public const REC20_CUBIC_KILOMETRE = 'H20';
 
     /**
      * blank
      */
-    const REC20_BLANK = 'H21';
+    public const REC20_BLANK = 'H21';
 
     /**
      * volt square inch per pound-force
      */
-    const REC20_VOLT_SQUARE_INCH_PER_POUNDFORCE = 'H22';
+    public const REC20_VOLT_SQUARE_INCH_PER_POUNDFORCE = 'H22';
 
     /**
      * volt per inch
      */
-    const REC20_VOLT_PER_INCH = 'H23';
+    public const REC20_VOLT_PER_INCH = 'H23';
 
     /**
      * volt per microsecond
      */
-    const REC20_VOLT_PER_MICROSECOND = 'H24';
+    public const REC20_VOLT_PER_MICROSECOND = 'H24';
 
     /**
      * percent per kelvin
      */
-    const REC20_PERCENT_PER_KELVIN = 'H25';
+    public const REC20_PERCENT_PER_KELVIN = 'H25';
 
     /**
      * ohm per metre
      */
-    const REC20_OHM_PER_METRE = 'H26';
+    public const REC20_OHM_PER_METRE = 'H26';
 
     /**
      * degree per metre
      */
-    const REC20_DEGREE_PER_METRE = 'H27';
+    public const REC20_DEGREE_PER_METRE = 'H27';
 
     /**
      * microfarad per kilometre
      */
-    const REC20_MICROFARAD_PER_KILOMETRE = 'H28';
+    public const REC20_MICROFARAD_PER_KILOMETRE = 'H28';
 
     /**
      * microgram per litre
      */
-    const REC20_MICROGRAM_PER_LITRE = 'H29';
+    public const REC20_MICROGRAM_PER_LITRE = 'H29';
 
     /**
      * square micrometre (square micron)
      */
-    const REC20_SQUARE_MICROMETRE_SQUARE_MICRON = 'H30';
+    public const REC20_SQUARE_MICROMETRE_SQUARE_MICRON = 'H30';
 
     /**
      * ampere per kilogram
      */
-    const REC20_AMPERE_PER_KILOGRAM = 'H31';
+    public const REC20_AMPERE_PER_KILOGRAM = 'H31';
 
     /**
      * ampere squared second
      */
-    const REC20_AMPERE_SQUARED_SECOND = 'H32';
+    public const REC20_AMPERE_SQUARED_SECOND = 'H32';
 
     /**
      * farad per kilometre
      */
-    const REC20_FARAD_PER_KILOMETRE = 'H33';
+    public const REC20_FARAD_PER_KILOMETRE = 'H33';
 
     /**
      * hertz metre
      */
-    const REC20_HERTZ_METRE = 'H34';
+    public const REC20_HERTZ_METRE = 'H34';
 
     /**
      * kelvin metre per watt
      */
-    const REC20_KELVIN_METRE_PER_WATT = 'H35';
+    public const REC20_KELVIN_METRE_PER_WATT = 'H35';
 
     /**
      * megaohm per kilometre
      */
-    const REC20_MEGAOHM_PER_KILOMETRE = 'H36';
+    public const REC20_MEGAOHM_PER_KILOMETRE = 'H36';
 
     /**
      * megaohm per metre
      */
-    const REC20_MEGAOHM_PER_METRE = 'H37';
+    public const REC20_MEGAOHM_PER_METRE = 'H37';
 
     /**
      * megaampere
      */
-    const REC20_MEGAAMPERE = 'H38';
+    public const REC20_MEGAAMPERE = 'H38';
 
     /**
      * megahertz kilometre
      */
-    const REC20_MEGAHERTZ_KILOMETRE = 'H39';
+    public const REC20_MEGAHERTZ_KILOMETRE = 'H39';
 
     /**
      * newton per ampere
      */
-    const REC20_NEWTON_PER_AMPERE = 'H40';
+    public const REC20_NEWTON_PER_AMPERE = 'H40';
 
     /**
      * newton metre watt to the power minus 0,5
      */
-    const REC20_NEWTON_METRE_WATT_TO_THE_POWER_MINUS_05 = 'H41';
+    public const REC20_NEWTON_METRE_WATT_TO_THE_POWER_MINUS_05 = 'H41';
 
     /**
      * pascal per metre
      */
-    const REC20_PASCAL_PER_METRE = 'H42';
+    public const REC20_PASCAL_PER_METRE = 'H42';
 
     /**
      * siemens per centimetre
      */
-    const REC20_SIEMENS_PER_CENTIMETRE = 'H43';
+    public const REC20_SIEMENS_PER_CENTIMETRE = 'H43';
 
     /**
      * teraohm
      */
-    const REC20_TERAOHM = 'H44';
+    public const REC20_TERAOHM = 'H44';
 
     /**
      * volt second per metre
      */
-    const REC20_VOLT_SECOND_PER_METRE = 'H45';
+    public const REC20_VOLT_SECOND_PER_METRE = 'H45';
 
     /**
      * volt per second
      */
-    const REC20_VOLT_PER_SECOND = 'H46';
+    public const REC20_VOLT_PER_SECOND = 'H46';
 
     /**
      * watt per cubic metre
      */
-    const REC20_WATT_PER_CUBIC_METRE = 'H47';
+    public const REC20_WATT_PER_CUBIC_METRE = 'H47';
 
     /**
      * attofarad
      */
-    const REC20_ATTOFARAD = 'H48';
+    public const REC20_ATTOFARAD = 'H48';
 
     /**
      * centimetre per hour
      */
-    const REC20_CENTIMETRE_PER_HOUR = 'H49';
+    public const REC20_CENTIMETRE_PER_HOUR = 'H49';
 
     /**
      * reciprocal cubic centimetre
      */
-    const REC20_RECIPROCAL_CUBIC_CENTIMETRE = 'H50';
+    public const REC20_RECIPROCAL_CUBIC_CENTIMETRE = 'H50';
 
     /**
      * decibel per kilometre
      */
-    const REC20_DECIBEL_PER_KILOMETRE = 'H51';
+    public const REC20_DECIBEL_PER_KILOMETRE = 'H51';
 
     /**
      * decibel per metre
      */
-    const REC20_DECIBEL_PER_METRE = 'H52';
+    public const REC20_DECIBEL_PER_METRE = 'H52';
 
     /**
      * kilogram per bar
      */
-    const REC20_KILOGRAM_PER_BAR = 'H53';
+    public const REC20_KILOGRAM_PER_BAR = 'H53';
 
     /**
      * kilogram per cubic decimetre kelvin
      */
-    const REC20_KILOGRAM_PER_CUBIC_DECIMETRE_KELVIN = 'H54';
+    public const REC20_KILOGRAM_PER_CUBIC_DECIMETRE_KELVIN = 'H54';
 
     /**
      * kilogram per cubic decimetre bar
      */
-    const REC20_KILOGRAM_PER_CUBIC_DECIMETRE_BAR = 'H55';
+    public const REC20_KILOGRAM_PER_CUBIC_DECIMETRE_BAR = 'H55';
 
     /**
      * kilogram per square metre second
      */
-    const REC20_KILOGRAM_PER_SQUARE_METRE_SECOND = 'H56';
+    public const REC20_KILOGRAM_PER_SQUARE_METRE_SECOND = 'H56';
 
     /**
      * inch per two pi radiant
      */
-    const REC20_INCH_PER_TWO_PI_RADIANT = 'H57';
+    public const REC20_INCH_PER_TWO_PI_RADIANT = 'H57';
 
     /**
      * metre per volt second
      */
-    const REC20_METRE_PER_VOLT_SECOND = 'H58';
+    public const REC20_METRE_PER_VOLT_SECOND = 'H58';
 
     /**
      * square metre per newton
      */
-    const REC20_SQUARE_METRE_PER_NEWTON = 'H59';
+    public const REC20_SQUARE_METRE_PER_NEWTON = 'H59';
 
     /**
      * cubic metre per cubic metre
      */
-    const REC20_CUBIC_METRE_PER_CUBIC_METRE = 'H60';
+    public const REC20_CUBIC_METRE_PER_CUBIC_METRE = 'H60';
 
     /**
      * millisiemens per centimetre
      */
-    const REC20_MILLISIEMENS_PER_CENTIMETRE = 'H61';
+    public const REC20_MILLISIEMENS_PER_CENTIMETRE = 'H61';
 
     /**
      * millivolt per minute
      */
-    const REC20_MILLIVOLT_PER_MINUTE = 'H62';
+    public const REC20_MILLIVOLT_PER_MINUTE = 'H62';
 
     /**
      * milligram per square centimetre
      */
-    const REC20_MILLIGRAM_PER_SQUARE_CENTIMETRE = 'H63';
+    public const REC20_MILLIGRAM_PER_SQUARE_CENTIMETRE = 'H63';
 
     /**
      * milligram per gram
      */
-    const REC20_MILLIGRAM_PER_GRAM = 'H64';
+    public const REC20_MILLIGRAM_PER_GRAM = 'H64';
 
     /**
      * millilitre per cubic metre
      */
-    const REC20_MILLILITRE_PER_CUBIC_METRE = 'H65';
+    public const REC20_MILLILITRE_PER_CUBIC_METRE = 'H65';
 
     /**
      * millimetre per year
      */
-    const REC20_MILLIMETRE_PER_YEAR = 'H66';
+    public const REC20_MILLIMETRE_PER_YEAR = 'H66';
 
     /**
      * millimetre per hour
      */
-    const REC20_MILLIMETRE_PER_HOUR = 'H67';
+    public const REC20_MILLIMETRE_PER_HOUR = 'H67';
 
     /**
      * millimole per gram
      */
-    const REC20_MILLIMOLE_PER_GRAM = 'H68';
+    public const REC20_MILLIMOLE_PER_GRAM = 'H68';
 
     /**
      * picopascal per kilometre
      */
-    const REC20_PICOPASCAL_PER_KILOMETRE = 'H69';
+    public const REC20_PICOPASCAL_PER_KILOMETRE = 'H69';
 
     /**
      * picosecond
      */
-    const REC20_PICOSECOND = 'H70';
+    public const REC20_PICOSECOND = 'H70';
 
     /**
      * percent per month
      */
-    const REC20_PERCENT_PER_MONTH = 'H71';
+    public const REC20_PERCENT_PER_MONTH = 'H71';
 
     /**
      * percent per hectobar
      */
-    const REC20_PERCENT_PER_HECTOBAR = 'H72';
+    public const REC20_PERCENT_PER_HECTOBAR = 'H72';
 
     /**
      * percent per decakelvin
      */
-    const REC20_PERCENT_PER_DECAKELVIN = 'H73';
+    public const REC20_PERCENT_PER_DECAKELVIN = 'H73';
 
     /**
      * watt per metre
      */
-    const REC20_WATT_PER_METRE = 'H74';
+    public const REC20_WATT_PER_METRE = 'H74';
 
     /**
      * decapascal
      */
-    const REC20_DECAPASCAL = 'H75';
+    public const REC20_DECAPASCAL = 'H75';
 
     /**
      * gram per millimetre
      */
-    const REC20_GRAM_PER_MILLIMETRE = 'H76';
+    public const REC20_GRAM_PER_MILLIMETRE = 'H76';
 
     /**
      * module width
      */
-    const REC20_MODULE_WIDTH = 'H77';
+    public const REC20_MODULE_WIDTH = 'H77';
 
     /**
      * French gauge
      */
-    const REC20_FRENCH_GAUGE = 'H79';
+    public const REC20_FRENCH_GAUGE = 'H79';
 
     /**
      * rack unit
      */
-    const REC20_RACK_UNIT = 'H80';
+    public const REC20_RACK_UNIT = 'H80';
 
     /**
      * millimetre per minute
      */
-    const REC20_MILLIMETRE_PER_MINUTE = 'H81';
+    public const REC20_MILLIMETRE_PER_MINUTE = 'H81';
 
     /**
      * big point
      */
-    const REC20_BIG_POINT = 'H82';
+    public const REC20_BIG_POINT = 'H82';
 
     /**
      * litre per kilogram
      */
-    const REC20_LITRE_PER_KILOGRAM = 'H83';
+    public const REC20_LITRE_PER_KILOGRAM = 'H83';
 
     /**
      * gram millimetre
      */
-    const REC20_GRAM_MILLIMETRE = 'H84';
+    public const REC20_GRAM_MILLIMETRE = 'H84';
 
     /**
      * reciprocal week
      */
-    const REC20_RECIPROCAL_WEEK = 'H85';
+    public const REC20_RECIPROCAL_WEEK = 'H85';
 
     /**
      * piece
      */
-    const REC20_PIECE = 'H87';
+    public const REC20_PIECE = 'H87';
 
     /**
      * megaohm kilometre
      */
-    const REC20_MEGAOHM_KILOMETRE = 'H88';
+    public const REC20_MEGAOHM_KILOMETRE = 'H88';
 
     /**
      * percent per ohm
      */
-    const REC20_PERCENT_PER_OHM = 'H89';
+    public const REC20_PERCENT_PER_OHM = 'H89';
 
     /**
      * percent per degree
      */
-    const REC20_PERCENT_PER_DEGREE = 'H90';
+    public const REC20_PERCENT_PER_DEGREE = 'H90';
 
     /**
      * percent per ten thousand
      */
-    const REC20_PERCENT_PER_TEN_THOUSAND = 'H91';
+    public const REC20_PERCENT_PER_TEN_THOUSAND = 'H91';
 
     /**
      * percent per one hundred thousand
      */
-    const REC20_PERCENT_PER_ONE_HUNDRED_THOUSAND = 'H92';
+    public const REC20_PERCENT_PER_ONE_HUNDRED_THOUSAND = 'H92';
 
     /**
      * percent per hundred
      */
-    const REC20_PERCENT_PER_HUNDRED = 'H93';
+    public const REC20_PERCENT_PER_HUNDRED = 'H93';
 
     /**
      * percent per thousand
      */
-    const REC20_PERCENT_PER_THOUSAND = 'H94';
+    public const REC20_PERCENT_PER_THOUSAND = 'H94';
 
     /**
      * percent per volt
      */
-    const REC20_PERCENT_PER_VOLT = 'H95';
+    public const REC20_PERCENT_PER_VOLT = 'H95';
 
     /**
      * percent per bar
      */
-    const REC20_PERCENT_PER_BAR = 'H96';
+    public const REC20_PERCENT_PER_BAR = 'H96';
 
     /**
      * percent per inch
      */
-    const REC20_PERCENT_PER_INCH = 'H98';
+    public const REC20_PERCENT_PER_INCH = 'H98';
 
     /**
      * percent per metre
      */
-    const REC20_PERCENT_PER_METRE = 'H99';
+    public const REC20_PERCENT_PER_METRE = 'H99';
 
     /**
      * hank
      */
-    const REC20_HANK = 'HA';
+    public const REC20_HANK = 'HA';
 
     /**
      * hectobar
      */
-    const REC20_HECTOBAR = 'HBA';
+    public const REC20_HECTOBAR = 'HBA';
 
     /**
      * hundred boxes
      */
-    const REC20_HUNDRED_BOXES = 'HBX';
+    public const REC20_HUNDRED_BOXES = 'HBX';
 
     /**
      * hundred count
      */
-    const REC20_HUNDRED_COUNT = 'HC';
+    public const REC20_HUNDRED_COUNT = 'HC';
 
     /**
      * hundred kilogram, dry weight
      */
-    const REC20_HUNDRED_KILOGRAM_DRY_WEIGHT = 'HDW';
+    public const REC20_HUNDRED_KILOGRAM_DRY_WEIGHT = 'HDW';
 
     /**
      * head
      */
-    const REC20_HEAD = 'HEA';
+    public const REC20_HEAD = 'HEA';
 
     /**
      * hectogram
      */
-    const REC20_HECTOGRAM = 'HGM';
+    public const REC20_HECTOGRAM = 'HGM';
 
     /**
      * hundred cubic foot
      */
-    const REC20_HUNDRED_CUBIC_FOOT = 'HH';
+    public const REC20_HUNDRED_CUBIC_FOOT = 'HH';
 
     /**
      * hundred international unit
      */
-    const REC20_HUNDRED_INTERNATIONAL_UNIT = 'HIU';
+    public const REC20_HUNDRED_INTERNATIONAL_UNIT = 'HIU';
 
     /**
      * hundred kilogram, net mass
      */
-    const REC20_HUNDRED_KILOGRAM_NET_MASS = 'HKM';
+    public const REC20_HUNDRED_KILOGRAM_NET_MASS = 'HKM';
 
     /**
      * hectolitre
      */
-    const REC20_HECTOLITRE = 'HLT';
+    public const REC20_HECTOLITRE = 'HLT';
 
     /**
      * mile per hour (statute mile)
      */
-    const REC20_MILE_PER_HOUR_STATUTE_MILE = 'HM';
+    public const REC20_MILE_PER_HOUR_STATUTE_MILE = 'HM';
 
     /**
      * million cubic metre
      */
-    const REC20_MILLION_CUBIC_METRE = 'HMQ';
+    public const REC20_MILLION_CUBIC_METRE = 'HMQ';
 
     /**
      * hectometre
      */
-    const REC20_HECTOMETRE = 'HMT';
+    public const REC20_HECTOMETRE = 'HMT';
 
     /**
      * hectolitre of pure alcohol
      */
-    const REC20_HECTOLITRE_OF_PURE_ALCOHOL = 'HPA';
+    public const REC20_HECTOLITRE_OF_PURE_ALCOHOL = 'HPA';
 
     /**
      * hertz
      */
-    const REC20_HERTZ = 'HTZ';
+    public const REC20_HERTZ = 'HTZ';
 
     /**
      * hour
      */
-    const REC20_HOUR = 'HUR';
+    public const REC20_HOUR = 'HUR';
 
     /**
      * inch pound (pound inch)
      */
-    const REC20_INCH_POUND_POUND_INCH = 'IA';
+    public const REC20_INCH_POUND_POUND_INCH = 'IA';
 
     /**
      * person
      */
-    const REC20_PERSON = 'IE';
+    public const REC20_PERSON = 'IE';
 
     /**
      * inch
      */
-    const REC20_INCH = 'INH';
+    public const REC20_INCH = 'INH';
 
     /**
      * square inch
      */
-    const REC20_SQUARE_INCH = 'INK';
+    public const REC20_SQUARE_INCH = 'INK';
 
     /**
      * cubic inch
      */
-    const REC20_CUBIC_INCH = 'INQ';
+    public const REC20_CUBIC_INCH = 'INQ';
 
     /**
      * international sugar degree
      */
-    const REC20_INTERNATIONAL_SUGAR_DEGREE = 'ISD';
+    public const REC20_INTERNATIONAL_SUGAR_DEGREE = 'ISD';
 
     /**
      * inch per second
      */
-    const REC20_INCH_PER_SECOND = 'IU';
+    public const REC20_INCH_PER_SECOND = 'IU';
 
     /**
      * international unit per gram
      */
-    const REC20_INTERNATIONAL_UNIT_PER_GRAM = 'IUG';
+    public const REC20_INTERNATIONAL_UNIT_PER_GRAM = 'IUG';
 
     /**
      * inch per second squared
      */
-    const REC20_INCH_PER_SECOND_SQUARED = 'IV';
+    public const REC20_INCH_PER_SECOND_SQUARED = 'IV';
 
     /**
      * percent per millimetre
      */
-    const REC20_PERCENT_PER_MILLIMETRE = 'J10';
+    public const REC20_PERCENT_PER_MILLIMETRE = 'J10';
 
     /**
      * per mille per psi
      */
-    const REC20_PER_MILLE_PER_PSI = 'J12';
+    public const REC20_PER_MILLE_PER_PSI = 'J12';
 
     /**
      * degree API
      */
-    const REC20_DEGREE_API = 'J13';
+    public const REC20_DEGREE_API = 'J13';
 
     /**
      * degree Baume (origin scale)
      */
-    const REC20_DEGREE_BAUME_ORIGIN_SCALE = 'J14';
+    public const REC20_DEGREE_BAUME_ORIGIN_SCALE = 'J14';
 
     /**
      * degree Baume (US heavy)
      */
-    const REC20_DEGREE_BAUME_US_HEAVY = 'J15';
+    public const REC20_DEGREE_BAUME_US_HEAVY = 'J15';
 
     /**
      * degree Baume (US light)
      */
-    const REC20_DEGREE_BAUME_US_LIGHT = 'J16';
+    public const REC20_DEGREE_BAUME_US_LIGHT = 'J16';
 
     /**
      * degree Balling
      */
-    const REC20_DEGREE_BALLING = 'J17';
+    public const REC20_DEGREE_BALLING = 'J17';
 
     /**
      * degree Brix
      */
-    const REC20_DEGREE_BRIX = 'J18';
+    public const REC20_DEGREE_BRIX = 'J18';
 
     /**
@@ -4713,20 +4713,20 @@
      * (thermochemical)
      */
-    const REC20_DEGREE_FAHRENHEIT_HOUR_SQUARE_FOOT_PER_BRITISH_THERMAL_UNIT_THERMOCHEMICAL = 'J19';
+    public const REC20_DEGREE_FAHRENHEIT_HOUR_SQUARE_FOOT_PER_BRITISH_THERMAL_UNIT_THERMOCHEMICAL = 'J19';
 
     /**
      * joule per kilogram
      */
-    const REC20_JOULE_PER_KILOGRAM = 'J2';
+    public const REC20_JOULE_PER_KILOGRAM = 'J2';
 
     /**
      * degree Fahrenheit per kelvin
      */
-    const REC20_DEGREE_FAHRENHEIT_PER_KELVIN = 'J20';
+    public const REC20_DEGREE_FAHRENHEIT_PER_KELVIN = 'J20';
 
     /**
      * degree Fahrenheit per bar
      */
-    const REC20_DEGREE_FAHRENHEIT_PER_BAR = 'J21';
+    public const REC20_DEGREE_FAHRENHEIT_PER_BAR = 'J21';
 
     /**
@@ -4734,85 +4734,85 @@
      * (international table)
      */
-    const REC20_DEGREE_FAHRENHEIT_HOUR_SQUARE_FOOT_PER_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE = 'J22';
+    public const REC20_DEGREE_FAHRENHEIT_HOUR_SQUARE_FOOT_PER_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE = 'J22';
 
     /**
      * degree Fahrenheit per hour
      */
-    const REC20_DEGREE_FAHRENHEIT_PER_HOUR = 'J23';
+    public const REC20_DEGREE_FAHRENHEIT_PER_HOUR = 'J23';
 
     /**
      * degree Fahrenheit per minute
      */
-    const REC20_DEGREE_FAHRENHEIT_PER_MINUTE = 'J24';
+    public const REC20_DEGREE_FAHRENHEIT_PER_MINUTE = 'J24';
 
     /**
      * degree Fahrenheit per second
      */
-    const REC20_DEGREE_FAHRENHEIT_PER_SECOND = 'J25';
+    public const REC20_DEGREE_FAHRENHEIT_PER_SECOND = 'J25';
 
     /**
      * reciprocal degree Fahrenheit
      */
-    const REC20_RECIPROCAL_DEGREE_FAHRENHEIT = 'J26';
+    public const REC20_RECIPROCAL_DEGREE_FAHRENHEIT = 'J26';
 
     /**
      * degree Oechsle
      */
-    const REC20_DEGREE_OECHSLE = 'J27';
+    public const REC20_DEGREE_OECHSLE = 'J27';
 
     /**
      * degree Rankine per hour
      */
-    const REC20_DEGREE_RANKINE_PER_HOUR = 'J28';
+    public const REC20_DEGREE_RANKINE_PER_HOUR = 'J28';
 
     /**
      * degree Rankine per minute
      */
-    const REC20_DEGREE_RANKINE_PER_MINUTE = 'J29';
+    public const REC20_DEGREE_RANKINE_PER_MINUTE = 'J29';
 
     /**
      * degree Rankine per second
      */
-    const REC20_DEGREE_RANKINE_PER_SECOND = 'J30';
+    public const REC20_DEGREE_RANKINE_PER_SECOND = 'J30';
 
     /**
      * degree Twaddell
      */
-    const REC20_DEGREE_TWADDELL = 'J31';
+    public const REC20_DEGREE_TWADDELL = 'J31';
 
     /**
      * micropoise
      */
-    const REC20_MICROPOISE = 'J32';
+    public const REC20_MICROPOISE = 'J32';
 
     /**
      * microgram per kilogram
      */
-    const REC20_MICROGRAM_PER_KILOGRAM = 'J33';
+    public const REC20_MICROGRAM_PER_KILOGRAM = 'J33';
 
     /**
      * microgram per cubic metre kelvin
      */
-    const REC20_MICROGRAM_PER_CUBIC_METRE_KELVIN = 'J34';
+    public const REC20_MICROGRAM_PER_CUBIC_METRE_KELVIN = 'J34';
 
     /**
      * microgram per cubic metre bar
      */
-    const REC20_MICROGRAM_PER_CUBIC_METRE_BAR = 'J35';
+    public const REC20_MICROGRAM_PER_CUBIC_METRE_BAR = 'J35';
 
     /**
      * microlitre per litre
      */
-    const REC20_MICROLITRE_PER_LITRE = 'J36';
+    public const REC20_MICROLITRE_PER_LITRE = 'J36';
 
     /**
      * baud
      */
-    const REC20_BAUD = 'J38';
+    public const REC20_BAUD = 'J38';
 
     /**
      * British thermal unit (mean)
      */
-    const REC20_BRITISH_THERMAL_UNIT_MEAN = 'J39';
+    public const REC20_BRITISH_THERMAL_UNIT_MEAN = 'J39';
 
     /**
@@ -4820,5 +4820,5 @@
      * degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_FOOT_PER_HOURSQUARE_FOOT_DEGREE_FAHRENHEIT = 'J40';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_FOOT_PER_HOURSQUARE_FOOT_DEGREE_FAHRENHEIT = 'J40';
 
     /**
@@ -4826,5 +4826,5 @@
      * degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_INCH_PER_HOUR_SQUAREFOOT_DEGREE_FAHRENHEIT = 'J41';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_INCH_PER_HOUR_SQUAREFOOT_DEGREE_FAHRENHEIT = 'J41';
 
     /**
@@ -4832,20 +4832,20 @@
      * squareÂ foot degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_INCH_PER_SECOND_SQUAREFOOT_DEGREE_FAHRENHEIT = 'J42';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_INCH_PER_SECOND_SQUAREFOOT_DEGREE_FAHRENHEIT = 'J42';
 
     /**
      * British thermal unit (international table) per pound degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_POUND_DEGREE_FAHRENHEIT = 'J43';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_POUND_DEGREE_FAHRENHEIT = 'J43';
 
     /**
      * British thermal unit (international table) per minute
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_MINUTE = 'J44';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_MINUTE = 'J44';
 
     /**
      * British thermal unit (international table) per second
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SECOND = 'J45';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SECOND = 'J45';
 
     /**
@@ -4853,10 +4853,10 @@
      * degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_FOOT_PER_HOUR_SQUAREFOOT_DEGREE_FAHRENHEIT = 'J46';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_FOOT_PER_HOUR_SQUAREFOOT_DEGREE_FAHRENHEIT = 'J46';
 
     /**
      * British thermal unit (thermochemical) per hour
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_HOUR = 'J47';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_HOUR = 'J47';
 
     /**
@@ -4864,5 +4864,5 @@
      * degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_INCH_PER_HOUR_SQUAREFOOT_DEGREE_FAHRENHEIT = 'J48';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_INCH_PER_HOUR_SQUAREFOOT_DEGREE_FAHRENHEIT = 'J48';
 
     /**
@@ -4870,2455 +4870,2455 @@
      * degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_INCH_PER_SECONDSQUARE_FOOT_DEGREE_FAHRENHEIT = 'J49';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_INCH_PER_SECONDSQUARE_FOOT_DEGREE_FAHRENHEIT = 'J49';
 
     /**
      * British thermal unit (thermochemical) per pound degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_POUND_DEGREE_FAHRENHEIT = 'J50';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_POUND_DEGREE_FAHRENHEIT = 'J50';
 
     /**
      * British thermal unit (thermochemical) per minute
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_MINUTE = 'J51';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_MINUTE = 'J51';
 
     /**
      * British thermal unit (thermochemical) per second
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SECOND = 'J52';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SECOND = 'J52';
 
     /**
      * coulomb square metre per kilogram
      */
-    const REC20_COULOMB_SQUARE_METRE_PER_KILOGRAM = 'J53';
+    public const REC20_COULOMB_SQUARE_METRE_PER_KILOGRAM = 'J53';
 
     /**
      * megabaud
      */
-    const REC20_MEGABAUD = 'J54';
+    public const REC20_MEGABAUD = 'J54';
 
     /**
      * watt second
      */
-    const REC20_WATT_SECOND = 'J55';
+    public const REC20_WATT_SECOND = 'J55';
 
     /**
      * bar per bar
      */
-    const REC20_BAR_PER_BAR = 'J56';
+    public const REC20_BAR_PER_BAR = 'J56';
 
     /**
      * barrel (UK petroleum)
      */
-    const REC20_BARREL_UK_PETROLEUM = 'J57';
+    public const REC20_BARREL_UK_PETROLEUM = 'J57';
 
     /**
      * barrel (UK petroleum) per minute
      */
-    const REC20_BARREL_UK_PETROLEUM_PER_MINUTE = 'J58';
+    public const REC20_BARREL_UK_PETROLEUM_PER_MINUTE = 'J58';
 
     /**
      * barrel (UK petroleum) per day
      */
-    const REC20_BARREL_UK_PETROLEUM_PER_DAY = 'J59';
+    public const REC20_BARREL_UK_PETROLEUM_PER_DAY = 'J59';
 
     /**
      * barrel (UK petroleum) per hour
      */
-    const REC20_BARREL_UK_PETROLEUM_PER_HOUR = 'J60';
+    public const REC20_BARREL_UK_PETROLEUM_PER_HOUR = 'J60';
 
     /**
      * barrel (UK petroleum) per second
      */
-    const REC20_BARREL_UK_PETROLEUM_PER_SECOND = 'J61';
+    public const REC20_BARREL_UK_PETROLEUM_PER_SECOND = 'J61';
 
     /**
      * barrel (US petroleum) per hour
      */
-    const REC20_BARREL_US_PETROLEUM_PER_HOUR = 'J62';
+    public const REC20_BARREL_US_PETROLEUM_PER_HOUR = 'J62';
 
     /**
      * barrel (US petroleum) per second
      */
-    const REC20_BARREL_US_PETROLEUM_PER_SECOND = 'J63';
+    public const REC20_BARREL_US_PETROLEUM_PER_SECOND = 'J63';
 
     /**
      * bushel (UK) per day
      */
-    const REC20_BUSHEL_UK_PER_DAY = 'J64';
+    public const REC20_BUSHEL_UK_PER_DAY = 'J64';
 
     /**
      * bushel (UK) per hour
      */
-    const REC20_BUSHEL_UK_PER_HOUR = 'J65';
+    public const REC20_BUSHEL_UK_PER_HOUR = 'J65';
 
     /**
      * bushel (UK) per minute
      */
-    const REC20_BUSHEL_UK_PER_MINUTE = 'J66';
+    public const REC20_BUSHEL_UK_PER_MINUTE = 'J66';
 
     /**
      * bushel (UK) per second
      */
-    const REC20_BUSHEL_UK_PER_SECOND = 'J67';
+    public const REC20_BUSHEL_UK_PER_SECOND = 'J67';
 
     /**
      * bushel (US dry) per day
      */
-    const REC20_BUSHEL_US_DRY_PER_DAY = 'J68';
+    public const REC20_BUSHEL_US_DRY_PER_DAY = 'J68';
 
     /**
      * bushel (US dry) per hour
      */
-    const REC20_BUSHEL_US_DRY_PER_HOUR = 'J69';
+    public const REC20_BUSHEL_US_DRY_PER_HOUR = 'J69';
 
     /**
      * bushel (US dry) per minute
      */
-    const REC20_BUSHEL_US_DRY_PER_MINUTE = 'J70';
+    public const REC20_BUSHEL_US_DRY_PER_MINUTE = 'J70';
 
     /**
      * bushel (US dry) per second
      */
-    const REC20_BUSHEL_US_DRY_PER_SECOND = 'J71';
+    public const REC20_BUSHEL_US_DRY_PER_SECOND = 'J71';
 
     /**
      * centinewton metre
      */
-    const REC20_CENTINEWTON_METRE = 'J72';
+    public const REC20_CENTINEWTON_METRE = 'J72';
 
     /**
      * centipoise per kelvin
      */
-    const REC20_CENTIPOISE_PER_KELVIN = 'J73';
+    public const REC20_CENTIPOISE_PER_KELVIN = 'J73';
 
     /**
      * centipoise per bar
      */
-    const REC20_CENTIPOISE_PER_BAR = 'J74';
+    public const REC20_CENTIPOISE_PER_BAR = 'J74';
 
     /**
      * calorie (mean)
      */
-    const REC20_CALORIE_MEAN = 'J75';
+    public const REC20_CALORIE_MEAN = 'J75';
 
     /**
      * calorie (international table) per gram degree Celsius
      */
-    const REC20_CALORIE_INTERNATIONAL_TABLE_PER_GRAM_DEGREE_CELSIUS = 'J76';
+    public const REC20_CALORIE_INTERNATIONAL_TABLE_PER_GRAM_DEGREE_CELSIUS = 'J76';
 
     /**
      * calorie (thermochemical) per centimetre second degree Celsius
      */
-    const REC20_CALORIE_THERMOCHEMICAL_PER_CENTIMETRE_SECOND_DEGREE_CELSIUS = 'J78';
+    public const REC20_CALORIE_THERMOCHEMICAL_PER_CENTIMETRE_SECOND_DEGREE_CELSIUS = 'J78';
 
     /**
      * calorie (thermochemical) per gram degree Celsius
      */
-    const REC20_CALORIE_THERMOCHEMICAL_PER_GRAM_DEGREE_CELSIUS = 'J79';
+    public const REC20_CALORIE_THERMOCHEMICAL_PER_GRAM_DEGREE_CELSIUS = 'J79';
 
     /**
      * calorie (thermochemical) per minute
      */
-    const REC20_CALORIE_THERMOCHEMICAL_PER_MINUTE = 'J81';
+    public const REC20_CALORIE_THERMOCHEMICAL_PER_MINUTE = 'J81';
 
     /**
      * calorie (thermochemical) per second
      */
-    const REC20_CALORIE_THERMOCHEMICAL_PER_SECOND = 'J82';
+    public const REC20_CALORIE_THERMOCHEMICAL_PER_SECOND = 'J82';
 
     /**
      * clo
      */
-    const REC20_CLO = 'J83';
+    public const REC20_CLO = 'J83';
 
     /**
      * centimetre per second kelvin
      */
-    const REC20_CENTIMETRE_PER_SECOND_KELVIN = 'J84';
+    public const REC20_CENTIMETRE_PER_SECOND_KELVIN = 'J84';
 
     /**
      * centimetre per second bar
      */
-    const REC20_CENTIMETRE_PER_SECOND_BAR = 'J85';
+    public const REC20_CENTIMETRE_PER_SECOND_BAR = 'J85';
 
     /**
      * cubic centimetre per cubic metre
      */
-    const REC20_CUBIC_CENTIMETRE_PER_CUBIC_METRE = 'J87';
+    public const REC20_CUBIC_CENTIMETRE_PER_CUBIC_METRE = 'J87';
 
     /**
      * cubic decimetre per day
      */
-    const REC20_CUBIC_DECIMETRE_PER_DAY = 'J90';
+    public const REC20_CUBIC_DECIMETRE_PER_DAY = 'J90';
 
     /**
      * cubic decimetre per cubic metre
      */
-    const REC20_CUBIC_DECIMETRE_PER_CUBIC_METRE = 'J91';
+    public const REC20_CUBIC_DECIMETRE_PER_CUBIC_METRE = 'J91';
 
     /**
      * cubic decimetre per minute
      */
-    const REC20_CUBIC_DECIMETRE_PER_MINUTE = 'J92';
+    public const REC20_CUBIC_DECIMETRE_PER_MINUTE = 'J92';
 
     /**
      * cubic decimetre per second
      */
-    const REC20_CUBIC_DECIMETRE_PER_SECOND = 'J93';
+    public const REC20_CUBIC_DECIMETRE_PER_SECOND = 'J93';
 
     /**
      * ounce (UK fluid) per day
      */
-    const REC20_OUNCE_UK_FLUID_PER_DAY = 'J95';
+    public const REC20_OUNCE_UK_FLUID_PER_DAY = 'J95';
 
     /**
      * ounce (UK fluid) per hour
      */
-    const REC20_OUNCE_UK_FLUID_PER_HOUR = 'J96';
+    public const REC20_OUNCE_UK_FLUID_PER_HOUR = 'J96';
 
     /**
      * ounce (UK fluid) per minute
      */
-    const REC20_OUNCE_UK_FLUID_PER_MINUTE = 'J97';
+    public const REC20_OUNCE_UK_FLUID_PER_MINUTE = 'J97';
 
     /**
      * ounce (UK fluid) per second
      */
-    const REC20_OUNCE_UK_FLUID_PER_SECOND = 'J98';
+    public const REC20_OUNCE_UK_FLUID_PER_SECOND = 'J98';
 
     /**
      * ounce (US fluid) per day
      */
-    const REC20_OUNCE_US_FLUID_PER_DAY = 'J99';
+    public const REC20_OUNCE_US_FLUID_PER_DAY = 'J99';
 
     /**
      * joule per kelvin
      */
-    const REC20_JOULE_PER_KELVIN = 'JE';
+    public const REC20_JOULE_PER_KELVIN = 'JE';
 
     /**
      * megajoule per kilogram
      */
-    const REC20_MEGAJOULE_PER_KILOGRAM = 'JK';
+    public const REC20_MEGAJOULE_PER_KILOGRAM = 'JK';
 
     /**
      * megajoule per cubic metre
      */
-    const REC20_MEGAJOULE_PER_CUBIC_METRE = 'JM';
+    public const REC20_MEGAJOULE_PER_CUBIC_METRE = 'JM';
 
     /**
      * pipeline joint
      */
-    const REC20_PIPELINE_JOINT = 'JNT';
+    public const REC20_PIPELINE_JOINT = 'JNT';
 
     /**
      * joule
      */
-    const REC20_JOULE = 'JOU';
+    public const REC20_JOULE = 'JOU';
 
     /**
      * hundred metre
      */
-    const REC20_HUNDRED_METRE = 'JPS';
+    public const REC20_HUNDRED_METRE = 'JPS';
 
     /**
      * number of jewels
      */
-    const REC20_NUMBER_OF_JEWELS = 'JWL';
+    public const REC20_NUMBER_OF_JEWELS = 'JWL';
 
     /**
      * kilowatt demand
      */
-    const REC20_KILOWATT_DEMAND = 'K1';
+    public const REC20_KILOWATT_DEMAND = 'K1';
 
     /**
      * ounce (US fluid) per hour
      */
-    const REC20_OUNCE_US_FLUID_PER_HOUR = 'K10';
+    public const REC20_OUNCE_US_FLUID_PER_HOUR = 'K10';
 
     /**
      * ounce (US fluid) per minute
      */
-    const REC20_OUNCE_US_FLUID_PER_MINUTE = 'K11';
+    public const REC20_OUNCE_US_FLUID_PER_MINUTE = 'K11';
 
     /**
      * ounce (US fluid) per second
      */
-    const REC20_OUNCE_US_FLUID_PER_SECOND = 'K12';
+    public const REC20_OUNCE_US_FLUID_PER_SECOND = 'K12';
 
     /**
      * foot per degree Fahrenheit
      */
-    const REC20_FOOT_PER_DEGREE_FAHRENHEIT = 'K13';
+    public const REC20_FOOT_PER_DEGREE_FAHRENHEIT = 'K13';
 
     /**
      * foot per hour
      */
-    const REC20_FOOT_PER_HOUR = 'K14';
+    public const REC20_FOOT_PER_HOUR = 'K14';
 
     /**
      * foot pound-force per hour
      */
-    const REC20_FOOT_POUNDFORCE_PER_HOUR = 'K15';
+    public const REC20_FOOT_POUNDFORCE_PER_HOUR = 'K15';
 
     /**
      * foot pound-force per minute
      */
-    const REC20_FOOT_POUNDFORCE_PER_MINUTE = 'K16';
+    public const REC20_FOOT_POUNDFORCE_PER_MINUTE = 'K16';
 
     /**
      * foot per psi
      */
-    const REC20_FOOT_PER_PSI = 'K17';
+    public const REC20_FOOT_PER_PSI = 'K17';
 
     /**
      * foot per second degree Fahrenheit
      */
-    const REC20_FOOT_PER_SECOND_DEGREE_FAHRENHEIT = 'K18';
+    public const REC20_FOOT_PER_SECOND_DEGREE_FAHRENHEIT = 'K18';
 
     /**
      * foot per second psi
      */
-    const REC20_FOOT_PER_SECOND_PSI = 'K19';
+    public const REC20_FOOT_PER_SECOND_PSI = 'K19';
 
     /**
      * kilovolt ampere reactive demand
      */
-    const REC20_KILOVOLT_AMPERE_REACTIVE_DEMAND = 'K2';
+    public const REC20_KILOVOLT_AMPERE_REACTIVE_DEMAND = 'K2';
 
     /**
      * reciprocal cubic foot
      */
-    const REC20_RECIPROCAL_CUBIC_FOOT = 'K20';
+    public const REC20_RECIPROCAL_CUBIC_FOOT = 'K20';
 
     /**
      * cubic foot per degree Fahrenheit
      */
-    const REC20_CUBIC_FOOT_PER_DEGREE_FAHRENHEIT = 'K21';
+    public const REC20_CUBIC_FOOT_PER_DEGREE_FAHRENHEIT = 'K21';
 
     /**
      * cubic foot per day
      */
-    const REC20_CUBIC_FOOT_PER_DAY = 'K22';
+    public const REC20_CUBIC_FOOT_PER_DAY = 'K22';
 
     /**
      * cubic foot per psi
      */
-    const REC20_CUBIC_FOOT_PER_PSI = 'K23';
+    public const REC20_CUBIC_FOOT_PER_PSI = 'K23';
 
     /**
      * gallon (UK) per day
      */
-    const REC20_GALLON_UK_PER_DAY = 'K26';
+    public const REC20_GALLON_UK_PER_DAY = 'K26';
 
     /**
      * gallon (UK) per hour
      */
-    const REC20_GALLON_UK_PER_HOUR = 'K27';
+    public const REC20_GALLON_UK_PER_HOUR = 'K27';
 
     /**
      * gallon (UK) per second
      */
-    const REC20_GALLON_UK_PER_SECOND = 'K28';
+    public const REC20_GALLON_UK_PER_SECOND = 'K28';
 
     /**
      * kilovolt ampere reactive hour
      */
-    const REC20_KILOVOLT_AMPERE_REACTIVE_HOUR = 'K3';
+    public const REC20_KILOVOLT_AMPERE_REACTIVE_HOUR = 'K3';
 
     /**
      * gallon (US liquid) per second
      */
-    const REC20_GALLON_US_LIQUID_PER_SECOND = 'K30';
+    public const REC20_GALLON_US_LIQUID_PER_SECOND = 'K30';
 
     /**
      * gram-force per square centimetre
      */
-    const REC20_GRAMFORCE_PER_SQUARE_CENTIMETRE = 'K31';
+    public const REC20_GRAMFORCE_PER_SQUARE_CENTIMETRE = 'K31';
 
     /**
      * gill (UK) per day
      */
-    const REC20_GILL_UK_PER_DAY = 'K32';
+    public const REC20_GILL_UK_PER_DAY = 'K32';
 
     /**
      * gill (UK) per hour
      */
-    const REC20_GILL_UK_PER_HOUR = 'K33';
+    public const REC20_GILL_UK_PER_HOUR = 'K33';
 
     /**
      * gill (UK) per minute
      */
-    const REC20_GILL_UK_PER_MINUTE = 'K34';
+    public const REC20_GILL_UK_PER_MINUTE = 'K34';
 
     /**
      * gill (UK) per second
      */
-    const REC20_GILL_UK_PER_SECOND = 'K35';
+    public const REC20_GILL_UK_PER_SECOND = 'K35';
 
     /**
      * gill (US) per day
      */
-    const REC20_GILL_US_PER_DAY = 'K36';
+    public const REC20_GILL_US_PER_DAY = 'K36';
 
     /**
      * gill (US) per hour
      */
-    const REC20_GILL_US_PER_HOUR = 'K37';
+    public const REC20_GILL_US_PER_HOUR = 'K37';
 
     /**
      * gill (US) per minute
      */
-    const REC20_GILL_US_PER_MINUTE = 'K38';
+    public const REC20_GILL_US_PER_MINUTE = 'K38';
 
     /**
      * gill (US) per second
      */
-    const REC20_GILL_US_PER_SECOND = 'K39';
+    public const REC20_GILL_US_PER_SECOND = 'K39';
 
     /**
      * standard acceleration of free fall
      */
-    const REC20_STANDARD_ACCELERATION_OF_FREE_FALL = 'K40';
+    public const REC20_STANDARD_ACCELERATION_OF_FREE_FALL = 'K40';
 
     /**
      * grain per gallon (US)
      */
-    const REC20_GRAIN_PER_GALLON_US = 'K41';
+    public const REC20_GRAIN_PER_GALLON_US = 'K41';
 
     /**
      * horsepower (boiler)
      */
-    const REC20_HORSEPOWER_BOILER = 'K42';
+    public const REC20_HORSEPOWER_BOILER = 'K42';
 
     /**
      * horsepower (electric)
      */
-    const REC20_HORSEPOWER_ELECTRIC = 'K43';
+    public const REC20_HORSEPOWER_ELECTRIC = 'K43';
 
     /**
      * inch per degree Fahrenheit
      */
-    const REC20_INCH_PER_DEGREE_FAHRENHEIT = 'K45';
+    public const REC20_INCH_PER_DEGREE_FAHRENHEIT = 'K45';
 
     /**
      * inch per psi
      */
-    const REC20_INCH_PER_PSI = 'K46';
+    public const REC20_INCH_PER_PSI = 'K46';
 
     /**
      * inch per second degree Fahrenheit
      */
-    const REC20_INCH_PER_SECOND_DEGREE_FAHRENHEIT = 'K47';
+    public const REC20_INCH_PER_SECOND_DEGREE_FAHRENHEIT = 'K47';
 
     /**
      * inch per second psi
      */
-    const REC20_INCH_PER_SECOND_PSI = 'K48';
+    public const REC20_INCH_PER_SECOND_PSI = 'K48';
 
     /**
      * reciprocal cubic inch
      */
-    const REC20_RECIPROCAL_CUBIC_INCH = 'K49';
+    public const REC20_RECIPROCAL_CUBIC_INCH = 'K49';
 
     /**
      * kilobaud
      */
-    const REC20_KILOBAUD = 'K50';
+    public const REC20_KILOBAUD = 'K50';
 
     /**
      * kilocalorie (mean)
      */
-    const REC20_KILOCALORIE_MEAN = 'K51';
+    public const REC20_KILOCALORIE_MEAN = 'K51';
 
     /**
      * kilocalorie (international table) per hour metre degree Celsius
      */
-    const REC20_KILOCALORIE_INTERNATIONAL_TABLE_PER_HOUR_METRE_DEGREE_CELSIUS = 'K52';
+    public const REC20_KILOCALORIE_INTERNATIONAL_TABLE_PER_HOUR_METRE_DEGREE_CELSIUS = 'K52';
 
     /**
      * kilocalorie (thermochemical)
      */
-    const REC20_KILOCALORIE_THERMOCHEMICAL = 'K53';
+    public const REC20_KILOCALORIE_THERMOCHEMICAL = 'K53';
 
     /**
      * kilocalorie (thermochemical) per minute
      */
-    const REC20_KILOCALORIE_THERMOCHEMICAL_PER_MINUTE = 'K54';
+    public const REC20_KILOCALORIE_THERMOCHEMICAL_PER_MINUTE = 'K54';
 
     /**
      * kilocalorie (thermochemical) per second
      */
-    const REC20_KILOCALORIE_THERMOCHEMICAL_PER_SECOND = 'K55';
+    public const REC20_KILOCALORIE_THERMOCHEMICAL_PER_SECOND = 'K55';
 
     /**
      * kilomole per hour
      */
-    const REC20_KILOMOLE_PER_HOUR = 'K58';
+    public const REC20_KILOMOLE_PER_HOUR = 'K58';
 
     /**
      * kilomole per cubic metre kelvin
      */
-    const REC20_KILOMOLE_PER_CUBIC_METRE_KELVIN = 'K59';
+    public const REC20_KILOMOLE_PER_CUBIC_METRE_KELVIN = 'K59';
 
     /**
      * kilolitre
      */
-    const REC20_KILOLITRE = 'K6';
+    public const REC20_KILOLITRE = 'K6';
 
     /**
      * kilomole per cubic metre bar
      */
-    const REC20_KILOMOLE_PER_CUBIC_METRE_BAR = 'K60';
+    public const REC20_KILOMOLE_PER_CUBIC_METRE_BAR = 'K60';
 
     /**
      * kilomole per minute
      */
-    const REC20_KILOMOLE_PER_MINUTE = 'K61';
+    public const REC20_KILOMOLE_PER_MINUTE = 'K61';
 
     /**
      * litre per litre
      */
-    const REC20_LITRE_PER_LITRE = 'K62';
+    public const REC20_LITRE_PER_LITRE = 'K62';
 
     /**
      * reciprocal litre
      */
-    const REC20_RECIPROCAL_LITRE = 'K63';
+    public const REC20_RECIPROCAL_LITRE = 'K63';
 
     /**
      * pound (avoirdupois) per degree Fahrenheit
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_DEGREE_FAHRENHEIT = 'K64';
+    public const REC20_POUND_AVOIRDUPOIS_PER_DEGREE_FAHRENHEIT = 'K64';
 
     /**
      * pound (avoirdupois) square foot
      */
-    const REC20_POUND_AVOIRDUPOIS_SQUARE_FOOT = 'K65';
+    public const REC20_POUND_AVOIRDUPOIS_SQUARE_FOOT = 'K65';
 
     /**
      * pound (avoirdupois) per day
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_DAY = 'K66';
+    public const REC20_POUND_AVOIRDUPOIS_PER_DAY = 'K66';
 
     /**
      * pound per foot hour
      */
-    const REC20_POUND_PER_FOOT_HOUR = 'K67';
+    public const REC20_POUND_PER_FOOT_HOUR = 'K67';
 
     /**
      * pound per foot second
      */
-    const REC20_POUND_PER_FOOT_SECOND = 'K68';
+    public const REC20_POUND_PER_FOOT_SECOND = 'K68';
 
     /**
      * pound (avoirdupois) per cubic foot degree Fahrenheit
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_CUBIC_FOOT_DEGREE_FAHRENHEIT = 'K69';
+    public const REC20_POUND_AVOIRDUPOIS_PER_CUBIC_FOOT_DEGREE_FAHRENHEIT = 'K69';
 
     /**
      * pound (avoirdupois) per cubic foot psi
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_CUBIC_FOOT_PSI = 'K70';
+    public const REC20_POUND_AVOIRDUPOIS_PER_CUBIC_FOOT_PSI = 'K70';
 
     /**
      * pound (avoirdupois) per gallon (UK)
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_GALLON_UK = 'K71';
+    public const REC20_POUND_AVOIRDUPOIS_PER_GALLON_UK = 'K71';
 
     /**
      * pound (avoirdupois) per hour degree Fahrenheit
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_HOUR_DEGREE_FAHRENHEIT = 'K73';
+    public const REC20_POUND_AVOIRDUPOIS_PER_HOUR_DEGREE_FAHRENHEIT = 'K73';
 
     /**
      * pound (avoirdupois) per hour psi
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_HOUR_PSI = 'K74';
+    public const REC20_POUND_AVOIRDUPOIS_PER_HOUR_PSI = 'K74';
 
     /**
      * pound (avoirdupois) per cubic inch degree Fahrenheit
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_CUBIC_INCH_DEGREE_FAHRENHEIT = 'K75';
+    public const REC20_POUND_AVOIRDUPOIS_PER_CUBIC_INCH_DEGREE_FAHRENHEIT = 'K75';
 
     /**
      * pound (avoirdupois) per cubic inch psi
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_CUBIC_INCH_PSI = 'K76';
+    public const REC20_POUND_AVOIRDUPOIS_PER_CUBIC_INCH_PSI = 'K76';
 
     /**
      * pound (avoirdupois) per psi
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_PSI = 'K77';
+    public const REC20_POUND_AVOIRDUPOIS_PER_PSI = 'K77';
 
     /**
      * pound (avoirdupois) per minute
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_MINUTE = 'K78';
+    public const REC20_POUND_AVOIRDUPOIS_PER_MINUTE = 'K78';
 
     /**
      * pound (avoirdupois) per minute degree Fahrenheit
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_MINUTE_DEGREE_FAHRENHEIT = 'K79';
+    public const REC20_POUND_AVOIRDUPOIS_PER_MINUTE_DEGREE_FAHRENHEIT = 'K79';
 
     /**
      * pound (avoirdupois) per minute psi
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_MINUTE_PSI = 'K80';
+    public const REC20_POUND_AVOIRDUPOIS_PER_MINUTE_PSI = 'K80';
 
     /**
      * pound (avoirdupois) per second
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_SECOND = 'K81';
+    public const REC20_POUND_AVOIRDUPOIS_PER_SECOND = 'K81';
 
     /**
      * pound (avoirdupois) per second degree Fahrenheit
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_SECOND_DEGREE_FAHRENHEIT = 'K82';
+    public const REC20_POUND_AVOIRDUPOIS_PER_SECOND_DEGREE_FAHRENHEIT = 'K82';
 
     /**
      * pound (avoirdupois) per second psi
      */
-    const REC20_POUND_AVOIRDUPOIS_PER_SECOND_PSI = 'K83';
+    public const REC20_POUND_AVOIRDUPOIS_PER_SECOND_PSI = 'K83';
 
     /**
      * pound per cubic yard
      */
-    const REC20_POUND_PER_CUBIC_YARD = 'K84';
+    public const REC20_POUND_PER_CUBIC_YARD = 'K84';
 
     /**
      * pound-force per square foot
      */
-    const REC20_POUNDFORCE_PER_SQUARE_FOOT = 'K85';
+    public const REC20_POUNDFORCE_PER_SQUARE_FOOT = 'K85';
 
     /**
      * pound-force per square inch degree Fahrenheit
      */
-    const REC20_POUNDFORCE_PER_SQUARE_INCH_DEGREE_FAHRENHEIT = 'K86';
+    public const REC20_POUNDFORCE_PER_SQUARE_INCH_DEGREE_FAHRENHEIT = 'K86';
 
     /**
      * psi cubic inch per second
      */
-    const REC20_PSI_CUBIC_INCH_PER_SECOND = 'K87';
+    public const REC20_PSI_CUBIC_INCH_PER_SECOND = 'K87';
 
     /**
      * psi litre per second
      */
-    const REC20_PSI_LITRE_PER_SECOND = 'K88';
+    public const REC20_PSI_LITRE_PER_SECOND = 'K88';
 
     /**
      * psi cubic metre per second
      */
-    const REC20_PSI_CUBIC_METRE_PER_SECOND = 'K89';
+    public const REC20_PSI_CUBIC_METRE_PER_SECOND = 'K89';
 
     /**
      * psi cubic yard per second
      */
-    const REC20_PSI_CUBIC_YARD_PER_SECOND = 'K90';
+    public const REC20_PSI_CUBIC_YARD_PER_SECOND = 'K90';
 
     /**
      * pound-force second per square foot
      */
-    const REC20_POUNDFORCE_SECOND_PER_SQUARE_FOOT = 'K91';
+    public const REC20_POUNDFORCE_SECOND_PER_SQUARE_FOOT = 'K91';
 
     /**
      * pound-force second per square inch
      */
-    const REC20_POUNDFORCE_SECOND_PER_SQUARE_INCH = 'K92';
+    public const REC20_POUNDFORCE_SECOND_PER_SQUARE_INCH = 'K92';
 
     /**
      * reciprocal psi
      */
-    const REC20_RECIPROCAL_PSI = 'K93';
+    public const REC20_RECIPROCAL_PSI = 'K93';
 
     /**
      * quart (UK liquid) per day
      */
-    const REC20_QUART_UK_LIQUID_PER_DAY = 'K94';
+    public const REC20_QUART_UK_LIQUID_PER_DAY = 'K94';
 
     /**
      * quart (UK liquid) per hour
      */
-    const REC20_QUART_UK_LIQUID_PER_HOUR = 'K95';
+    public const REC20_QUART_UK_LIQUID_PER_HOUR = 'K95';
 
     /**
      * quart (UK liquid) per minute
      */
-    const REC20_QUART_UK_LIQUID_PER_MINUTE = 'K96';
+    public const REC20_QUART_UK_LIQUID_PER_MINUTE = 'K96';
 
     /**
      * quart (UK liquid) per second
      */
-    const REC20_QUART_UK_LIQUID_PER_SECOND = 'K97';
+    public const REC20_QUART_UK_LIQUID_PER_SECOND = 'K97';
 
     /**
      * quart (US liquid) per day
      */
-    const REC20_QUART_US_LIQUID_PER_DAY = 'K98';
+    public const REC20_QUART_US_LIQUID_PER_DAY = 'K98';
 
     /**
      * quart (US liquid) per hour
      */
-    const REC20_QUART_US_LIQUID_PER_HOUR = 'K99';
+    public const REC20_QUART_US_LIQUID_PER_HOUR = 'K99';
 
     /**
      * cake
      */
-    const REC20_CAKE = 'KA';
+    public const REC20_CAKE = 'KA';
 
     /**
      * katal
      */
-    const REC20_KATAL = 'KAT';
+    public const REC20_KATAL = 'KAT';
 
     /**
      * kilocharacter
      */
-    const REC20_KILOCHARACTER = 'KB';
+    public const REC20_KILOCHARACTER = 'KB';
 
     /**
      * kilobar
      */
-    const REC20_KILOBAR = 'KBA';
+    public const REC20_KILOBAR = 'KBA';
 
     /**
      * kilogram of choline chloride
      */
-    const REC20_KILOGRAM_OF_CHOLINE_CHLORIDE = 'KCC';
+    public const REC20_KILOGRAM_OF_CHOLINE_CHLORIDE = 'KCC';
 
     /**
      * kilogram drained net weight
      */
-    const REC20_KILOGRAM_DRAINED_NET_WEIGHT = 'KDW';
+    public const REC20_KILOGRAM_DRAINED_NET_WEIGHT = 'KDW';
 
     /**
      * kelvin
      */
-    const REC20_KELVIN = 'KEL';
+    public const REC20_KELVIN = 'KEL';
 
     /**
      * kilogram
      */
-    const REC20_KILOGRAM = 'KGM';
+    public const REC20_KILOGRAM = 'KGM';
 
     /**
      * kilogram per second
      */
-    const REC20_KILOGRAM_PER_SECOND = 'KGS';
+    public const REC20_KILOGRAM_PER_SECOND = 'KGS';
 
     /**
      * kilogram of hydrogen peroxide
      */
-    const REC20_KILOGRAM_OF_HYDROGEN_PEROXIDE = 'KHY';
+    public const REC20_KILOGRAM_OF_HYDROGEN_PEROXIDE = 'KHY';
 
     /**
      * kilohertz
      */
-    const REC20_KILOHERTZ = 'KHZ';
+    public const REC20_KILOHERTZ = 'KHZ';
 
     /**
      * kilogram per millimetre width
      */
-    const REC20_KILOGRAM_PER_MILLIMETRE_WIDTH = 'KI';
+    public const REC20_KILOGRAM_PER_MILLIMETRE_WIDTH = 'KI';
 
     /**
      * kilogram, including container
      */
-    const REC20_KILOGRAM_INCLUDING_CONTAINER = 'KIC';
+    public const REC20_KILOGRAM_INCLUDING_CONTAINER = 'KIC';
 
     /**
      * kilogram, including inner packaging
      */
-    const REC20_KILOGRAM_INCLUDING_INNER_PACKAGING = 'KIP';
+    public const REC20_KILOGRAM_INCLUDING_INNER_PACKAGING = 'KIP';
 
     /**
      * kilosegment
      */
-    const REC20_KILOSEGMENT = 'KJ';
+    public const REC20_KILOSEGMENT = 'KJ';
 
     /**
      * kilojoule
      */
-    const REC20_KILOJOULE = 'KJO';
+    public const REC20_KILOJOULE = 'KJO';
 
     /**
      * kilogram per metre
      */
-    const REC20_KILOGRAM_PER_METRE = 'KL';
+    public const REC20_KILOGRAM_PER_METRE = 'KL';
 
     /**
      * lactic dry material percentage
      */
-    const REC20_LACTIC_DRY_MATERIAL_PERCENTAGE = 'KLK';
+    public const REC20_LACTIC_DRY_MATERIAL_PERCENTAGE = 'KLK';
 
     /**
      * kilolux
      */
-    const REC20_KILOLUX = 'KLX';
+    public const REC20_KILOLUX = 'KLX';
 
     /**
      * kilogram of methylamine
      */
-    const REC20_KILOGRAM_OF_METHYLAMINE = 'KMA';
+    public const REC20_KILOGRAM_OF_METHYLAMINE = 'KMA';
 
     /**
      * kilometre per hour
      */
-    const REC20_KILOMETRE_PER_HOUR = 'KMH';
+    public const REC20_KILOMETRE_PER_HOUR = 'KMH';
 
     /**
      * square kilometre
      */
-    const REC20_SQUARE_KILOMETRE = 'KMK';
+    public const REC20_SQUARE_KILOMETRE = 'KMK';
 
     /**
      * kilogram per cubic metre
      */
-    const REC20_KILOGRAM_PER_CUBIC_METRE = 'KMQ';
+    public const REC20_KILOGRAM_PER_CUBIC_METRE = 'KMQ';
 
     /**
      * kilometre
      */
-    const REC20_KILOMETRE = 'KMT';
+    public const REC20_KILOMETRE = 'KMT';
 
     /**
      * kilogram of nitrogen
      */
-    const REC20_KILOGRAM_OF_NITROGEN = 'KNI';
+    public const REC20_KILOGRAM_OF_NITROGEN = 'KNI';
 
     /**
      * kilonewton per square metre
      */
-    const REC20_KILONEWTON_PER_SQUARE_METRE = 'KNM';
+    public const REC20_KILONEWTON_PER_SQUARE_METRE = 'KNM';
 
     /**
      * kilogram named substance
      */
-    const REC20_KILOGRAM_NAMED_SUBSTANCE = 'KNS';
+    public const REC20_KILOGRAM_NAMED_SUBSTANCE = 'KNS';
 
     /**
      * knot
      */
-    const REC20_KNOT = 'KNT';
+    public const REC20_KNOT = 'KNT';
 
     /**
      * milliequivalence caustic potash per gram of product
      */
-    const REC20_MILLIEQUIVALENCE_CAUSTIC_POTASH_PER_GRAM_OF_PRODUCT = 'KO';
+    public const REC20_MILLIEQUIVALENCE_CAUSTIC_POTASH_PER_GRAM_OF_PRODUCT = 'KO';
 
     /**
      * kilopascal
      */
-    const REC20_KILOPASCAL = 'KPA';
+    public const REC20_KILOPASCAL = 'KPA';
 
     /**
      * kilogram of potassium hydroxide (caustic potash)
      */
-    const REC20_KILOGRAM_OF_POTASSIUM_HYDROXIDE_CAUSTIC_POTASH = 'KPH';
+    public const REC20_KILOGRAM_OF_POTASSIUM_HYDROXIDE_CAUSTIC_POTASH = 'KPH';
 
     /**
      * kilogram of potassium oxide
      */
-    const REC20_KILOGRAM_OF_POTASSIUM_OXIDE = 'KPO';
+    public const REC20_KILOGRAM_OF_POTASSIUM_OXIDE = 'KPO';
 
     /**
      * kilogram of phosphorus pentoxide (phosphoric anhydride)
      */
-    const REC20_KILOGRAM_OF_PHOSPHORUS_PENTOXIDE_PHOSPHORIC_ANHYDRIDE = 'KPP';
+    public const REC20_KILOGRAM_OF_PHOSPHORUS_PENTOXIDE_PHOSPHORIC_ANHYDRIDE = 'KPP';
 
     /**
      * kiloroentgen
      */
-    const REC20_KILOROENTGEN = 'KR';
+    public const REC20_KILOROENTGEN = 'KR';
 
     /**
      * kilogram of substance 90 % dry
      */
-    const REC20_KILOGRAM_OF_SUBSTANCE_90__DRY = 'KSD';
+    public const REC20_KILOGRAM_OF_SUBSTANCE_90__DRY = 'KSD';
 
     /**
      * kilogram of sodium hydroxide (caustic soda)
      */
-    const REC20_KILOGRAM_OF_SODIUM_HYDROXIDE_CAUSTIC_SODA = 'KSH';
+    public const REC20_KILOGRAM_OF_SODIUM_HYDROXIDE_CAUSTIC_SODA = 'KSH';
 
     /**
      * kit
      */
-    const REC20_KIT = 'KT';
+    public const REC20_KIT = 'KT';
 
     /**
      * kilotonne
      */
-    const REC20_KILOTONNE = 'KTN';
+    public const REC20_KILOTONNE = 'KTN';
 
     /**
      * kilogram of uranium
      */
-    const REC20_KILOGRAM_OF_URANIUM = 'KUR';
+    public const REC20_KILOGRAM_OF_URANIUM = 'KUR';
 
     /**
      * kilovolt - ampere
      */
-    const REC20_KILOVOLT__AMPERE = 'KVA';
+    public const REC20_KILOVOLT__AMPERE = 'KVA';
 
     /**
      * kilovar
      */
-    const REC20_KILOVAR = 'KVR';
+    public const REC20_KILOVAR = 'KVR';
 
     /**
      * kilovolt
      */
-    const REC20_KILOVOLT = 'KVT';
+    public const REC20_KILOVOLT = 'KVT';
 
     /**
      * kilogram per millimetre
      */
-    const REC20_KILOGRAM_PER_MILLIMETRE = 'KW';
+    public const REC20_KILOGRAM_PER_MILLIMETRE = 'KW';
 
     /**
      * kilowatt hour
      */
-    const REC20_KILOWATT_HOUR = 'KWH';
+    public const REC20_KILOWATT_HOUR = 'KWH';
 
     /**
      * Kilowatt hour per normalized cubic metre
      */
-    const REC20_KILOWATT_HOUR_PER_NORMALIZED_CUBIC_METRE = 'KWN';
+    public const REC20_KILOWATT_HOUR_PER_NORMALIZED_CUBIC_METRE = 'KWN';
 
     /**
      * kilogram of tungsten trioxide
      */
-    const REC20_KILOGRAM_OF_TUNGSTEN_TRIOXIDE = 'KWO';
+    public const REC20_KILOGRAM_OF_TUNGSTEN_TRIOXIDE = 'KWO';
 
     /**
      * Kilowatt hour per standard cubic metre
      */
-    const REC20_KILOWATT_HOUR_PER_STANDARD_CUBIC_METRE = 'KWS';
+    public const REC20_KILOWATT_HOUR_PER_STANDARD_CUBIC_METRE = 'KWS';
 
     /**
      * kilowatt
      */
-    const REC20_KILOWATT = 'KWT';
+    public const REC20_KILOWATT = 'KWT';
 
     /**
      * millilitre per kilogram
      */
-    const REC20_MILLILITRE_PER_KILOGRAM = 'KX';
+    public const REC20_MILLILITRE_PER_KILOGRAM = 'KX';
 
     /**
      * quart (US liquid) per minute
      */
-    const REC20_QUART_US_LIQUID_PER_MINUTE = 'L10';
+    public const REC20_QUART_US_LIQUID_PER_MINUTE = 'L10';
 
     /**
      * quart (US liquid) per second
      */
-    const REC20_QUART_US_LIQUID_PER_SECOND = 'L11';
+    public const REC20_QUART_US_LIQUID_PER_SECOND = 'L11';
 
     /**
      * metre per second kelvin
      */
-    const REC20_METRE_PER_SECOND_KELVIN = 'L12';
+    public const REC20_METRE_PER_SECOND_KELVIN = 'L12';
 
     /**
      * metre per second bar
      */
-    const REC20_METRE_PER_SECOND_BAR = 'L13';
+    public const REC20_METRE_PER_SECOND_BAR = 'L13';
 
     /**
      * square metre hour degree Celsius per kilocalorie (international table)
      */
-    const REC20_SQUARE_METRE_HOUR_DEGREE_CELSIUS_PER_KILOCALORIE_INTERNATIONAL_TABLE = 'L14';
+    public const REC20_SQUARE_METRE_HOUR_DEGREE_CELSIUS_PER_KILOCALORIE_INTERNATIONAL_TABLE = 'L14';
 
     /**
      * millipascal second per kelvin
      */
-    const REC20_MILLIPASCAL_SECOND_PER_KELVIN = 'L15';
+    public const REC20_MILLIPASCAL_SECOND_PER_KELVIN = 'L15';
 
     /**
      * millipascal second per bar
      */
-    const REC20_MILLIPASCAL_SECOND_PER_BAR = 'L16';
+    public const REC20_MILLIPASCAL_SECOND_PER_BAR = 'L16';
 
     /**
      * milligram per cubic metre kelvin
      */
-    const REC20_MILLIGRAM_PER_CUBIC_METRE_KELVIN = 'L17';
+    public const REC20_MILLIGRAM_PER_CUBIC_METRE_KELVIN = 'L17';
 
     /**
      * milligram per cubic metre bar
      */
-    const REC20_MILLIGRAM_PER_CUBIC_METRE_BAR = 'L18';
+    public const REC20_MILLIGRAM_PER_CUBIC_METRE_BAR = 'L18';
 
     /**
      * millilitre per litre
      */
-    const REC20_MILLILITRE_PER_LITRE = 'L19';
+    public const REC20_MILLILITRE_PER_LITRE = 'L19';
 
     /**
      * litre per minute
      */
-    const REC20_LITRE_PER_MINUTE = 'L2';
+    public const REC20_LITRE_PER_MINUTE = 'L2';
 
     /**
      * reciprocal cubic millimetre
      */
-    const REC20_RECIPROCAL_CUBIC_MILLIMETRE = 'L20';
+    public const REC20_RECIPROCAL_CUBIC_MILLIMETRE = 'L20';
 
     /**
      * cubic millimetre per cubic metre
      */
-    const REC20_CUBIC_MILLIMETRE_PER_CUBIC_METRE = 'L21';
+    public const REC20_CUBIC_MILLIMETRE_PER_CUBIC_METRE = 'L21';
 
     /**
      * mole per hour
      */
-    const REC20_MOLE_PER_HOUR = 'L23';
+    public const REC20_MOLE_PER_HOUR = 'L23';
 
     /**
      * mole per kilogram kelvin
      */
-    const REC20_MOLE_PER_KILOGRAM_KELVIN = 'L24';
+    public const REC20_MOLE_PER_KILOGRAM_KELVIN = 'L24';
 
     /**
      * mole per kilogram bar
      */
-    const REC20_MOLE_PER_KILOGRAM_BAR = 'L25';
+    public const REC20_MOLE_PER_KILOGRAM_BAR = 'L25';
 
     /**
      * mole per litre kelvin
      */
-    const REC20_MOLE_PER_LITRE_KELVIN = 'L26';
+    public const REC20_MOLE_PER_LITRE_KELVIN = 'L26';
 
     /**
      * mole per litre bar
      */
-    const REC20_MOLE_PER_LITRE_BAR = 'L27';
+    public const REC20_MOLE_PER_LITRE_BAR = 'L27';
 
     /**
      * mole per cubic metre kelvin
      */
-    const REC20_MOLE_PER_CUBIC_METRE_KELVIN = 'L28';
+    public const REC20_MOLE_PER_CUBIC_METRE_KELVIN = 'L28';
 
     /**
      * mole per cubic metre bar
      */
-    const REC20_MOLE_PER_CUBIC_METRE_BAR = 'L29';
+    public const REC20_MOLE_PER_CUBIC_METRE_BAR = 'L29';
 
     /**
      * mole per minute
      */
-    const REC20_MOLE_PER_MINUTE = 'L30';
+    public const REC20_MOLE_PER_MINUTE = 'L30';
 
     /**
      * milliroentgen aequivalent men
      */
-    const REC20_MILLIROENTGEN_AEQUIVALENT_MEN = 'L31';
+    public const REC20_MILLIROENTGEN_AEQUIVALENT_MEN = 'L31';
 
     /**
      * nanogram per kilogram
      */
-    const REC20_NANOGRAM_PER_KILOGRAM = 'L32';
+    public const REC20_NANOGRAM_PER_KILOGRAM = 'L32';
 
     /**
      * ounce (avoirdupois) per day
      */
-    const REC20_OUNCE_AVOIRDUPOIS_PER_DAY = 'L33';
+    public const REC20_OUNCE_AVOIRDUPOIS_PER_DAY = 'L33';
 
     /**
      * ounce (avoirdupois) per hour
      */
-    const REC20_OUNCE_AVOIRDUPOIS_PER_HOUR = 'L34';
+    public const REC20_OUNCE_AVOIRDUPOIS_PER_HOUR = 'L34';
 
     /**
      * ounce (avoirdupois) per minute
      */
-    const REC20_OUNCE_AVOIRDUPOIS_PER_MINUTE = 'L35';
+    public const REC20_OUNCE_AVOIRDUPOIS_PER_MINUTE = 'L35';
 
     /**
      * ounce (avoirdupois) per second
      */
-    const REC20_OUNCE_AVOIRDUPOIS_PER_SECOND = 'L36';
+    public const REC20_OUNCE_AVOIRDUPOIS_PER_SECOND = 'L36';
 
     /**
      * ounce (avoirdupois) per gallon (UK)
      */
-    const REC20_OUNCE_AVOIRDUPOIS_PER_GALLON_UK = 'L37';
+    public const REC20_OUNCE_AVOIRDUPOIS_PER_GALLON_UK = 'L37';
 
     /**
      * ounce (avoirdupois) per gallon (US)
      */
-    const REC20_OUNCE_AVOIRDUPOIS_PER_GALLON_US = 'L38';
+    public const REC20_OUNCE_AVOIRDUPOIS_PER_GALLON_US = 'L38';
 
     /**
      * ounce (avoirdupois) per cubic inch
      */
-    const REC20_OUNCE_AVOIRDUPOIS_PER_CUBIC_INCH = 'L39';
+    public const REC20_OUNCE_AVOIRDUPOIS_PER_CUBIC_INCH = 'L39';
 
     /**
      * ounce (avoirdupois)-force
      */
-    const REC20_OUNCE_AVOIRDUPOISFORCE = 'L40';
+    public const REC20_OUNCE_AVOIRDUPOISFORCE = 'L40';
 
     /**
      * ounce (avoirdupois)-force inch
      */
-    const REC20_OUNCE_AVOIRDUPOISFORCE_INCH = 'L41';
+    public const REC20_OUNCE_AVOIRDUPOISFORCE_INCH = 'L41';
 
     /**
      * picosiemens per metre
      */
-    const REC20_PICOSIEMENS_PER_METRE = 'L42';
+    public const REC20_PICOSIEMENS_PER_METRE = 'L42';
 
     /**
      * peck (UK)
      */
-    const REC20_PECK_UK = 'L43';
+    public const REC20_PECK_UK = 'L43';
 
     /**
      * peck (UK) per day
      */
-    const REC20_PECK_UK_PER_DAY = 'L44';
+    public const REC20_PECK_UK_PER_DAY = 'L44';
 
     /**
      * peck (UK) per hour
      */
-    const REC20_PECK_UK_PER_HOUR = 'L45';
+    public const REC20_PECK_UK_PER_HOUR = 'L45';
 
     /**
      * peck (UK) per minute
      */
-    const REC20_PECK_UK_PER_MINUTE = 'L46';
+    public const REC20_PECK_UK_PER_MINUTE = 'L46';
 
     /**
      * peck (UK) per second
      */
-    const REC20_PECK_UK_PER_SECOND = 'L47';
+    public const REC20_PECK_UK_PER_SECOND = 'L47';
 
     /**
      * peck (US dry) per day
      */
-    const REC20_PECK_US_DRY_PER_DAY = 'L48';
+    public const REC20_PECK_US_DRY_PER_DAY = 'L48';
 
     /**
      * peck (US dry) per hour
      */
-    const REC20_PECK_US_DRY_PER_HOUR = 'L49';
+    public const REC20_PECK_US_DRY_PER_HOUR = 'L49';
 
     /**
      * peck (US dry) per minute
      */
-    const REC20_PECK_US_DRY_PER_MINUTE = 'L50';
+    public const REC20_PECK_US_DRY_PER_MINUTE = 'L50';
 
     /**
      * peck (US dry) per second
      */
-    const REC20_PECK_US_DRY_PER_SECOND = 'L51';
+    public const REC20_PECK_US_DRY_PER_SECOND = 'L51';
 
     /**
      * psi per psi
      */
-    const REC20_PSI_PER_PSI = 'L52';
+    public const REC20_PSI_PER_PSI = 'L52';
 
     /**
      * pint (UK) per day
      */
-    const REC20_PINT_UK_PER_DAY = 'L53';
+    public const REC20_PINT_UK_PER_DAY = 'L53';
 
     /**
      * pint (UK) per hour
      */
-    const REC20_PINT_UK_PER_HOUR = 'L54';
+    public const REC20_PINT_UK_PER_HOUR = 'L54';
 
     /**
      * pint (UK) per minute
      */
-    const REC20_PINT_UK_PER_MINUTE = 'L55';
+    public const REC20_PINT_UK_PER_MINUTE = 'L55';
 
     /**
      * pint (UK) per second
      */
-    const REC20_PINT_UK_PER_SECOND = 'L56';
+    public const REC20_PINT_UK_PER_SECOND = 'L56';
 
     /**
      * pint (US liquid) per day
      */
-    const REC20_PINT_US_LIQUID_PER_DAY = 'L57';
+    public const REC20_PINT_US_LIQUID_PER_DAY = 'L57';
 
     /**
      * pint (US liquid) per hour
      */
-    const REC20_PINT_US_LIQUID_PER_HOUR = 'L58';
+    public const REC20_PINT_US_LIQUID_PER_HOUR = 'L58';
 
     /**
      * pint (US liquid) per minute
      */
-    const REC20_PINT_US_LIQUID_PER_MINUTE = 'L59';
+    public const REC20_PINT_US_LIQUID_PER_MINUTE = 'L59';
 
     /**
      * pint (US liquid) per second
      */
-    const REC20_PINT_US_LIQUID_PER_SECOND = 'L60';
+    public const REC20_PINT_US_LIQUID_PER_SECOND = 'L60';
 
     /**
      * slug per day
      */
-    const REC20_SLUG_PER_DAY = 'L63';
+    public const REC20_SLUG_PER_DAY = 'L63';
 
     /**
      * slug per foot second
      */
-    const REC20_SLUG_PER_FOOT_SECOND = 'L64';
+    public const REC20_SLUG_PER_FOOT_SECOND = 'L64';
 
     /**
      * slug per cubic foot
      */
-    const REC20_SLUG_PER_CUBIC_FOOT = 'L65';
+    public const REC20_SLUG_PER_CUBIC_FOOT = 'L65';
 
     /**
      * slug per hour
      */
-    const REC20_SLUG_PER_HOUR = 'L66';
+    public const REC20_SLUG_PER_HOUR = 'L66';
 
     /**
      * slug per minute
      */
-    const REC20_SLUG_PER_MINUTE = 'L67';
+    public const REC20_SLUG_PER_MINUTE = 'L67';
 
     /**
      * slug per second
      */
-    const REC20_SLUG_PER_SECOND = 'L68';
+    public const REC20_SLUG_PER_SECOND = 'L68';
 
     /**
      * tonne per kelvin
      */
-    const REC20_TONNE_PER_KELVIN = 'L69';
+    public const REC20_TONNE_PER_KELVIN = 'L69';
 
     /**
      * tonne per bar
      */
-    const REC20_TONNE_PER_BAR = 'L70';
+    public const REC20_TONNE_PER_BAR = 'L70';
 
     /**
      * tonne per day
      */
-    const REC20_TONNE_PER_DAY = 'L71';
+    public const REC20_TONNE_PER_DAY = 'L71';
 
     /**
      * tonne per day kelvin
      */
-    const REC20_TONNE_PER_DAY_KELVIN = 'L72';
+    public const REC20_TONNE_PER_DAY_KELVIN = 'L72';
 
     /**
      * tonne per day bar
      */
-    const REC20_TONNE_PER_DAY_BAR = 'L73';
+    public const REC20_TONNE_PER_DAY_BAR = 'L73';
 
     /**
      * tonne per hour kelvin
      */
-    const REC20_TONNE_PER_HOUR_KELVIN = 'L74';
+    public const REC20_TONNE_PER_HOUR_KELVIN = 'L74';
 
     /**
      * tonne per hour bar
      */
-    const REC20_TONNE_PER_HOUR_BAR = 'L75';
+    public const REC20_TONNE_PER_HOUR_BAR = 'L75';
 
     /**
      * tonne per cubic metre kelvin
      */
-    const REC20_TONNE_PER_CUBIC_METRE_KELVIN = 'L76';
+    public const REC20_TONNE_PER_CUBIC_METRE_KELVIN = 'L76';
 
     /**
      * tonne per cubic metre bar
      */
-    const REC20_TONNE_PER_CUBIC_METRE_BAR = 'L77';
+    public const REC20_TONNE_PER_CUBIC_METRE_BAR = 'L77';
 
     /**
      * tonne per minute
      */
-    const REC20_TONNE_PER_MINUTE = 'L78';
+    public const REC20_TONNE_PER_MINUTE = 'L78';
 
     /**
      * tonne per minute kelvin
      */
-    const REC20_TONNE_PER_MINUTE_KELVIN = 'L79';
+    public const REC20_TONNE_PER_MINUTE_KELVIN = 'L79';
 
     /**
      * tonne per minute bar
      */
-    const REC20_TONNE_PER_MINUTE_BAR = 'L80';
+    public const REC20_TONNE_PER_MINUTE_BAR = 'L80';
 
     /**
      * tonne per second
      */
-    const REC20_TONNE_PER_SECOND = 'L81';
+    public const REC20_TONNE_PER_SECOND = 'L81';
 
     /**
      * tonne per second kelvin
      */
-    const REC20_TONNE_PER_SECOND_KELVIN = 'L82';
+    public const REC20_TONNE_PER_SECOND_KELVIN = 'L82';
 
     /**
      * tonne per second bar
      */
-    const REC20_TONNE_PER_SECOND_BAR = 'L83';
+    public const REC20_TONNE_PER_SECOND_BAR = 'L83';
 
     /**
      * ton (UK shipping)
      */
-    const REC20_TON_UK_SHIPPING = 'L84';
+    public const REC20_TON_UK_SHIPPING = 'L84';
 
     /**
      * ton long per day
      */
-    const REC20_TON_LONG_PER_DAY = 'L85';
+    public const REC20_TON_LONG_PER_DAY = 'L85';
 
     /**
      * ton (US shipping)
      */
-    const REC20_TON_US_SHIPPING = 'L86';
+    public const REC20_TON_US_SHIPPING = 'L86';
 
     /**
      * ton short per degree Fahrenheit
      */
-    const REC20_TON_SHORT_PER_DEGREE_FAHRENHEIT = 'L87';
+    public const REC20_TON_SHORT_PER_DEGREE_FAHRENHEIT = 'L87';
 
     /**
      * ton short per day
      */
-    const REC20_TON_SHORT_PER_DAY = 'L88';
+    public const REC20_TON_SHORT_PER_DAY = 'L88';
 
     /**
      * ton short per hour degree Fahrenheit
      */
-    const REC20_TON_SHORT_PER_HOUR_DEGREE_FAHRENHEIT = 'L89';
+    public const REC20_TON_SHORT_PER_HOUR_DEGREE_FAHRENHEIT = 'L89';
 
     /**
      * ton short per hour psi
      */
-    const REC20_TON_SHORT_PER_HOUR_PSI = 'L90';
+    public const REC20_TON_SHORT_PER_HOUR_PSI = 'L90';
 
     /**
      * ton short per psi
      */
-    const REC20_TON_SHORT_PER_PSI = 'L91';
+    public const REC20_TON_SHORT_PER_PSI = 'L91';
 
     /**
      * ton (UK long) per cubic yard
      */
-    const REC20_TON_UK_LONG_PER_CUBIC_YARD = 'L92';
+    public const REC20_TON_UK_LONG_PER_CUBIC_YARD = 'L92';
 
     /**
      * ton (US short) per cubic yard
      */
-    const REC20_TON_US_SHORT_PER_CUBIC_YARD = 'L93';
+    public const REC20_TON_US_SHORT_PER_CUBIC_YARD = 'L93';
 
     /**
      * ton-force (US short)
      */
-    const REC20_TONFORCE_US_SHORT = 'L94';
+    public const REC20_TONFORCE_US_SHORT = 'L94';
 
     /**
      * common year
      */
-    const REC20_COMMON_YEAR = 'L95';
+    public const REC20_COMMON_YEAR = 'L95';
 
     /**
      * sidereal year
      */
-    const REC20_SIDEREAL_YEAR = 'L96';
+    public const REC20_SIDEREAL_YEAR = 'L96';
 
     /**
      * yard per degree Fahrenheit
      */
-    const REC20_YARD_PER_DEGREE_FAHRENHEIT = 'L98';
+    public const REC20_YARD_PER_DEGREE_FAHRENHEIT = 'L98';
 
     /**
      * yard per psi
      */
-    const REC20_YARD_PER_PSI = 'L99';
+    public const REC20_YARD_PER_PSI = 'L99';
 
     /**
      * pound per cubic inch
      */
-    const REC20_POUND_PER_CUBIC_INCH = 'LA';
+    public const REC20_POUND_PER_CUBIC_INCH = 'LA';
 
     /**
      * lactose excess percentage
      */
-    const REC20_LACTOSE_EXCESS_PERCENTAGE = 'LAC';
+    public const REC20_LACTOSE_EXCESS_PERCENTAGE = 'LAC';
 
     /**
      * pound
      */
-    const REC20_POUND = 'LBR';
+    public const REC20_POUND = 'LBR';
 
     /**
      * troy pound (US)
      */
-    const REC20_TROY_POUND_US = 'LBT';
+    public const REC20_TROY_POUND_US = 'LBT';
 
     /**
      * litre per day
      */
-    const REC20_LITRE_PER_DAY = 'LD';
+    public const REC20_LITRE_PER_DAY = 'LD';
 
     /**
      * leaf
      */
-    const REC20_LEAF = 'LEF';
+    public const REC20_LEAF = 'LEF';
 
     /**
      * linear foot
      */
-    const REC20_LINEAR_FOOT = 'LF';
+    public const REC20_LINEAR_FOOT = 'LF';
 
     /**
      * labour hour
      */
-    const REC20_LABOUR_HOUR = 'LH';
+    public const REC20_LABOUR_HOUR = 'LH';
 
     /**
      * link
      */
-    const REC20_LINK = 'LK';
+    public const REC20_LINK = 'LK';
 
     /**
      * linear metre
      */
-    const REC20_LINEAR_METRE = 'LM';
+    public const REC20_LINEAR_METRE = 'LM';
 
     /**
      * length
      */
-    const REC20_LENGTH = 'LN';
+    public const REC20_LENGTH = 'LN';
 
     /**
      * lot  [unit of procurement]
      */
-    const REC20_LOT__UNIT_OF_PROCUREMENT = 'LO';
+    public const REC20_LOT__UNIT_OF_PROCUREMENT = 'LO';
 
     /**
      * liquid pound
      */
-    const REC20_LIQUID_POUND = 'LP';
+    public const REC20_LIQUID_POUND = 'LP';
 
     /**
      * litre of pure alcohol
      */
-    const REC20_LITRE_OF_PURE_ALCOHOL = 'LPA';
+    public const REC20_LITRE_OF_PURE_ALCOHOL = 'LPA';
 
     /**
      * layer
      */
-    const REC20_LAYER = 'LR';
+    public const REC20_LAYER = 'LR';
 
     /**
      * lump sum
      */
-    const REC20_LUMP_SUM = 'LS';
+    public const REC20_LUMP_SUM = 'LS';
 
     /**
      * ton (UK) or long ton (US)
      */
-    const REC20_TON_UK_OR_LONG_TON_US = 'LTN';
+    public const REC20_TON_UK_OR_LONG_TON_US = 'LTN';
 
     /**
      * litre
      */
-    const REC20_LITRE = 'LTR';
+    public const REC20_LITRE = 'LTR';
 
     /**
      * metric ton, lubricating oil
      */
-    const REC20_METRIC_TON_LUBRICATING_OIL = 'LUB';
+    public const REC20_METRIC_TON_LUBRICATING_OIL = 'LUB';
 
     /**
      * lumen
      */
-    const REC20_LUMEN = 'LUM';
+    public const REC20_LUMEN = 'LUM';
 
     /**
      * lux
      */
-    const REC20_LUX = 'LUX';
+    public const REC20_LUX = 'LUX';
 
     /**
      * linear yard
      */
-    const REC20_LINEAR_YARD = 'LY';
+    public const REC20_LINEAR_YARD = 'LY';
 
     /**
      * milligram per litre
      */
-    const REC20_MILLIGRAM_PER_LITRE = 'M1';
+    public const REC20_MILLIGRAM_PER_LITRE = 'M1';
 
     /**
      * reciprocal cubic yard
      */
-    const REC20_RECIPROCAL_CUBIC_YARD = 'M10';
+    public const REC20_RECIPROCAL_CUBIC_YARD = 'M10';
 
     /**
      * cubic yard per degree Fahrenheit
      */
-    const REC20_CUBIC_YARD_PER_DEGREE_FAHRENHEIT = 'M11';
+    public const REC20_CUBIC_YARD_PER_DEGREE_FAHRENHEIT = 'M11';
 
     /**
      * cubic yard per day
      */
-    const REC20_CUBIC_YARD_PER_DAY = 'M12';
+    public const REC20_CUBIC_YARD_PER_DAY = 'M12';
 
     /**
      * cubic yard per hour
      */
-    const REC20_CUBIC_YARD_PER_HOUR = 'M13';
+    public const REC20_CUBIC_YARD_PER_HOUR = 'M13';
 
     /**
      * cubic yard per psi
      */
-    const REC20_CUBIC_YARD_PER_PSI = 'M14';
+    public const REC20_CUBIC_YARD_PER_PSI = 'M14';
 
     /**
      * cubic yard per minute
      */
-    const REC20_CUBIC_YARD_PER_MINUTE = 'M15';
+    public const REC20_CUBIC_YARD_PER_MINUTE = 'M15';
 
     /**
      * cubic yard per second
      */
-    const REC20_CUBIC_YARD_PER_SECOND = 'M16';
+    public const REC20_CUBIC_YARD_PER_SECOND = 'M16';
 
     /**
      * kilohertz metre
      */
-    const REC20_KILOHERTZ_METRE = 'M17';
+    public const REC20_KILOHERTZ_METRE = 'M17';
 
     /**
      * gigahertz metre
      */
-    const REC20_GIGAHERTZ_METRE = 'M18';
+    public const REC20_GIGAHERTZ_METRE = 'M18';
 
     /**
      * Beaufort
      */
-    const REC20_BEAUFORT = 'M19';
+    public const REC20_BEAUFORT = 'M19';
 
     /**
      * reciprocal megakelvin or megakelvin to the power minus one
      */
-    const REC20_RECIPROCAL_MEGAKELVIN_OR_MEGAKELVIN_TO_THE_POWER_MINUS_ONE = 'M20';
+    public const REC20_RECIPROCAL_MEGAKELVIN_OR_MEGAKELVIN_TO_THE_POWER_MINUS_ONE = 'M20';
 
     /**
      * reciprocal kilovolt - ampere reciprocal hour
      */
-    const REC20_RECIPROCAL_KILOVOLT__AMPERE_RECIPROCAL_HOUR = 'M21';
+    public const REC20_RECIPROCAL_KILOVOLT__AMPERE_RECIPROCAL_HOUR = 'M21';
 
     /**
      * millilitre per square centimetre minute
      */
-    const REC20_MILLILITRE_PER_SQUARE_CENTIMETRE_MINUTE = 'M22';
+    public const REC20_MILLILITRE_PER_SQUARE_CENTIMETRE_MINUTE = 'M22';
 
     /**
      * newton per centimetre
      */
-    const REC20_NEWTON_PER_CENTIMETRE = 'M23';
+    public const REC20_NEWTON_PER_CENTIMETRE = 'M23';
 
     /**
      * ohm kilometre
      */
-    const REC20_OHM_KILOMETRE = 'M24';
+    public const REC20_OHM_KILOMETRE = 'M24';
 
     /**
      * percent per degree Celsius
      */
-    const REC20_PERCENT_PER_DEGREE_CELSIUS = 'M25';
+    public const REC20_PERCENT_PER_DEGREE_CELSIUS = 'M25';
 
     /**
      * gigaohm per metre
      */
-    const REC20_GIGAOHM_PER_METRE = 'M26';
+    public const REC20_GIGAOHM_PER_METRE = 'M26';
 
     /**
      * megahertz metre
      */
-    const REC20_MEGAHERTZ_METRE = 'M27';
+    public const REC20_MEGAHERTZ_METRE = 'M27';
 
     /**
      * kilogram per kilogram
      */
-    const REC20_KILOGRAM_PER_KILOGRAM = 'M29';
+    public const REC20_KILOGRAM_PER_KILOGRAM = 'M29';
 
     /**
      * reciprocal volt - ampere reciprocal second
      */
-    const REC20_RECIPROCAL_VOLT__AMPERE_RECIPROCAL_SECOND = 'M30';
+    public const REC20_RECIPROCAL_VOLT__AMPERE_RECIPROCAL_SECOND = 'M30';
 
     /**
      * kilogram per kilometre
      */
-    const REC20_KILOGRAM_PER_KILOMETRE = 'M31';
+    public const REC20_KILOGRAM_PER_KILOMETRE = 'M31';
 
     /**
      * pascal second per litre
      */
-    const REC20_PASCAL_SECOND_PER_LITRE = 'M32';
+    public const REC20_PASCAL_SECOND_PER_LITRE = 'M32';
 
     /**
      * millimole per litre
      */
-    const REC20_MILLIMOLE_PER_LITRE = 'M33';
+    public const REC20_MILLIMOLE_PER_LITRE = 'M33';
 
     /**
      * newton metre per square metre
      */
-    const REC20_NEWTON_METRE_PER_SQUARE_METRE = 'M34';
+    public const REC20_NEWTON_METRE_PER_SQUARE_METRE = 'M34';
 
     /**
      * millivolt - ampere
      */
-    const REC20_MILLIVOLT__AMPERE = 'M35';
+    public const REC20_MILLIVOLT__AMPERE = 'M35';
 
     /**
      * 30-day month
      */
-    const REC20_30DAY_MONTH = 'M36';
+    public const REC20_30DAY_MONTH = 'M36';
 
     /**
      * actual/360
      */
-    const REC20_ACTUAL_360 = 'M37';
+    public const REC20_ACTUAL_360 = 'M37';
 
     /**
      * kilometre per second squared
      */
-    const REC20_KILOMETRE_PER_SECOND_SQUARED = 'M38';
+    public const REC20_KILOMETRE_PER_SECOND_SQUARED = 'M38';
 
     /**
      * centimetre per second squared
      */
-    const REC20_CENTIMETRE_PER_SECOND_SQUARED = 'M39';
+    public const REC20_CENTIMETRE_PER_SECOND_SQUARED = 'M39';
 
     /**
      * monetary value
      */
-    const REC20_MONETARY_VALUE = 'M4';
+    public const REC20_MONETARY_VALUE = 'M4';
 
     /**
      * yard per second squared
      */
-    const REC20_YARD_PER_SECOND_SQUARED = 'M40';
+    public const REC20_YARD_PER_SECOND_SQUARED = 'M40';
 
     /**
      * millimetre per second squared
      */
-    const REC20_MILLIMETRE_PER_SECOND_SQUARED = 'M41';
+    public const REC20_MILLIMETRE_PER_SECOND_SQUARED = 'M41';
 
     /**
      * mile (statute mile) per second squared
      */
-    const REC20_MILE_STATUTE_MILE_PER_SECOND_SQUARED = 'M42';
+    public const REC20_MILE_STATUTE_MILE_PER_SECOND_SQUARED = 'M42';
 
     /**
      * mil
      */
-    const REC20_MIL = 'M43';
+    public const REC20_MIL = 'M43';
 
     /**
      * revolution
      */
-    const REC20_REVOLUTION = 'M44';
+    public const REC20_REVOLUTION = 'M44';
 
     /**
      * degree [unit of angle] per second squared
      */
-    const REC20_DEGREE_UNIT_OF_ANGLE_PER_SECOND_SQUARED = 'M45';
+    public const REC20_DEGREE_UNIT_OF_ANGLE_PER_SECOND_SQUARED = 'M45';
 
     /**
      * revolution per minute
      */
-    const REC20_REVOLUTION_PER_MINUTE = 'M46';
+    public const REC20_REVOLUTION_PER_MINUTE = 'M46';
 
     /**
      * circular mil
      */
-    const REC20_CIRCULAR_MIL = 'M47';
+    public const REC20_CIRCULAR_MIL = 'M47';
 
     /**
      * square mile (based on U.S. survey foot)
      */
-    const REC20_SQUARE_MILE_BASED_ON_US_SURVEY_FOOT = 'M48';
+    public const REC20_SQUARE_MILE_BASED_ON_US_SURVEY_FOOT = 'M48';
 
     /**
      * chain (based on U.S. survey foot)
      */
-    const REC20_CHAIN_BASED_ON_US_SURVEY_FOOT = 'M49';
+    public const REC20_CHAIN_BASED_ON_US_SURVEY_FOOT = 'M49';
 
     /**
      * microcurie
      */
-    const REC20_MICROCURIE = 'M5';
+    public const REC20_MICROCURIE = 'M5';
 
     /**
      * furlong
      */
-    const REC20_FURLONG = 'M50';
+    public const REC20_FURLONG = 'M50';
 
     /**
      * foot (U.S. survey)
      */
-    const REC20_FOOT_US_SURVEY = 'M51';
+    public const REC20_FOOT_US_SURVEY = 'M51';
 
     /**
      * mile (based on U.S. survey foot)
      */
-    const REC20_MILE_BASED_ON_US_SURVEY_FOOT = 'M52';
+    public const REC20_MILE_BASED_ON_US_SURVEY_FOOT = 'M52';
 
     /**
      * metre per pascal
      */
-    const REC20_METRE_PER_PASCAL = 'M53';
+    public const REC20_METRE_PER_PASCAL = 'M53';
 
     /**
      * metre per radiant
      */
-    const REC20_METRE_PER_RADIANT = 'M55';
+    public const REC20_METRE_PER_RADIANT = 'M55';
 
     /**
      * shake
      */
-    const REC20_SHAKE = 'M56';
+    public const REC20_SHAKE = 'M56';
 
     /**
      * mile per minute
      */
-    const REC20_MILE_PER_MINUTE = 'M57';
+    public const REC20_MILE_PER_MINUTE = 'M57';
 
     /**
      * mile per second
      */
-    const REC20_MILE_PER_SECOND = 'M58';
+    public const REC20_MILE_PER_SECOND = 'M58';
 
     /**
      * metre per second pascal
      */
-    const REC20_METRE_PER_SECOND_PASCAL = 'M59';
+    public const REC20_METRE_PER_SECOND_PASCAL = 'M59';
 
     /**
      * metre per hour
      */
-    const REC20_METRE_PER_HOUR = 'M60';
+    public const REC20_METRE_PER_HOUR = 'M60';
 
     /**
      * inch per year
      */
-    const REC20_INCH_PER_YEAR = 'M61';
+    public const REC20_INCH_PER_YEAR = 'M61';
 
     /**
      * kilometre per second
      */
-    const REC20_KILOMETRE_PER_SECOND = 'M62';
+    public const REC20_KILOMETRE_PER_SECOND = 'M62';
 
     /**
      * inch per minute
      */
-    const REC20_INCH_PER_MINUTE = 'M63';
+    public const REC20_INCH_PER_MINUTE = 'M63';
 
     /**
      * yard per second
      */
-    const REC20_YARD_PER_SECOND = 'M64';
+    public const REC20_YARD_PER_SECOND = 'M64';
 
     /**
      * yard per minute
      */
-    const REC20_YARD_PER_MINUTE = 'M65';
+    public const REC20_YARD_PER_MINUTE = 'M65';
 
     /**
      * yard per hour
      */
-    const REC20_YARD_PER_HOUR = 'M66';
+    public const REC20_YARD_PER_HOUR = 'M66';
 
     /**
      * acre-foot (based on U.S. survey foot)
      */
-    const REC20_ACREFOOT_BASED_ON_US_SURVEY_FOOT = 'M67';
+    public const REC20_ACREFOOT_BASED_ON_US_SURVEY_FOOT = 'M67';
 
     /**
      * cord (128 ft3)
      */
-    const REC20_CORD_128_FT3 = 'M68';
+    public const REC20_CORD_128_FT3 = 'M68';
 
     /**
      * cubic mile (UK statute)
      */
-    const REC20_CUBIC_MILE_UK_STATUTE = 'M69';
+    public const REC20_CUBIC_MILE_UK_STATUTE = 'M69';
 
     /**
      * micro-inch
      */
-    const REC20_MICROINCH = 'M7';
+    public const REC20_MICROINCH = 'M7';
 
     /**
      * ton, register
      */
-    const REC20_TON_REGISTER = 'M70';
+    public const REC20_TON_REGISTER = 'M70';
 
     /**
      * cubic metre per pascal
      */
-    const REC20_CUBIC_METRE_PER_PASCAL = 'M71';
+    public const REC20_CUBIC_METRE_PER_PASCAL = 'M71';
 
     /**
      * bel
      */
-    const REC20_BEL = 'M72';
+    public const REC20_BEL = 'M72';
 
     /**
      * kilogram per cubic metre pascal
      */
-    const REC20_KILOGRAM_PER_CUBIC_METRE_PASCAL = 'M73';
+    public const REC20_KILOGRAM_PER_CUBIC_METRE_PASCAL = 'M73';
 
     /**
      * kilogram per pascal
      */
-    const REC20_KILOGRAM_PER_PASCAL = 'M74';
+    public const REC20_KILOGRAM_PER_PASCAL = 'M74';
 
     /**
      * kilopound-force
      */
-    const REC20_KILOPOUNDFORCE = 'M75';
+    public const REC20_KILOPOUNDFORCE = 'M75';
 
     /**
      * poundal
      */
-    const REC20_POUNDAL = 'M76';
+    public const REC20_POUNDAL = 'M76';
 
     /**
      * kilogram metre per second squared
      */
-    const REC20_KILOGRAM_METRE_PER_SECOND_SQUARED = 'M77';
+    public const REC20_KILOGRAM_METRE_PER_SECOND_SQUARED = 'M77';
 
     /**
      * pond
      */
-    const REC20_POND = 'M78';
+    public const REC20_POND = 'M78';
 
     /**
      * square foot per hour
      */
-    const REC20_SQUARE_FOOT_PER_HOUR = 'M79';
+    public const REC20_SQUARE_FOOT_PER_HOUR = 'M79';
 
     /**
      * stokes per pascal
      */
-    const REC20_STOKES_PER_PASCAL = 'M80';
+    public const REC20_STOKES_PER_PASCAL = 'M80';
 
     /**
      * square centimetre per second
      */
-    const REC20_SQUARE_CENTIMETRE_PER_SECOND = 'M81';
+    public const REC20_SQUARE_CENTIMETRE_PER_SECOND = 'M81';
 
     /**
      * square metre per second pascal
      */
-    const REC20_SQUARE_METRE_PER_SECOND_PASCAL = 'M82';
+    public const REC20_SQUARE_METRE_PER_SECOND_PASCAL = 'M82';
 
     /**
      * denier
      */
-    const REC20_DENIER = 'M83';
+    public const REC20_DENIER = 'M83';
 
     /**
      * pound per yard
      */
-    const REC20_POUND_PER_YARD = 'M84';
+    public const REC20_POUND_PER_YARD = 'M84';
 
     /**
      * ton, assay
      */
-    const REC20_TON_ASSAY = 'M85';
+    public const REC20_TON_ASSAY = 'M85';
 
     /**
      * pfund
      */
-    const REC20_PFUND = 'M86';
+    public const REC20_PFUND = 'M86';
 
     /**
      * kilogram per second pascal
      */
-    const REC20_KILOGRAM_PER_SECOND_PASCAL = 'M87';
+    public const REC20_KILOGRAM_PER_SECOND_PASCAL = 'M87';
 
     /**
      * tonne per month
      */
-    const REC20_TONNE_PER_MONTH = 'M88';
+    public const REC20_TONNE_PER_MONTH = 'M88';
 
     /**
      * tonne per year
      */
-    const REC20_TONNE_PER_YEAR = 'M89';
+    public const REC20_TONNE_PER_YEAR = 'M89';
 
     /**
      * million Btu per 1000 cubic foot
      */
-    const REC20_MILLION_BTU_PER_1000_CUBIC_FOOT = 'M9';
+    public const REC20_MILLION_BTU_PER_1000_CUBIC_FOOT = 'M9';
 
     /**
      * kilopound per hour
      */
-    const REC20_KILOPOUND_PER_HOUR = 'M90';
+    public const REC20_KILOPOUND_PER_HOUR = 'M90';
 
     /**
      * pound per pound
      */
-    const REC20_POUND_PER_POUND = 'M91';
+    public const REC20_POUND_PER_POUND = 'M91';
 
     /**
      * pound-force foot
      */
-    const REC20_POUNDFORCE_FOOT = 'M92';
+    public const REC20_POUNDFORCE_FOOT = 'M92';
 
     /**
      * newton metre per radian
      */
-    const REC20_NEWTON_METRE_PER_RADIAN = 'M93';
+    public const REC20_NEWTON_METRE_PER_RADIAN = 'M93';
 
     /**
      * kilogram metre
      */
-    const REC20_KILOGRAM_METRE = 'M94';
+    public const REC20_KILOGRAM_METRE = 'M94';
 
     /**
      * poundal foot
      */
-    const REC20_POUNDAL_FOOT = 'M95';
+    public const REC20_POUNDAL_FOOT = 'M95';
 
     /**
      * poundal inch
      */
-    const REC20_POUNDAL_INCH = 'M96';
+    public const REC20_POUNDAL_INCH = 'M96';
 
     /**
      * dyne metre
      */
-    const REC20_DYNE_METRE = 'M97';
+    public const REC20_DYNE_METRE = 'M97';
 
     /**
      * kilogram centimetre per second
      */
-    const REC20_KILOGRAM_CENTIMETRE_PER_SECOND = 'M98';
+    public const REC20_KILOGRAM_CENTIMETRE_PER_SECOND = 'M98';
 
     /**
      * gram centimetre per second
      */
-    const REC20_GRAM_CENTIMETRE_PER_SECOND = 'M99';
+    public const REC20_GRAM_CENTIMETRE_PER_SECOND = 'M99';
 
     /**
      * megavolt ampere reactive hour
      */
-    const REC20_MEGAVOLT_AMPERE_REACTIVE_HOUR = 'MAH';
+    public const REC20_MEGAVOLT_AMPERE_REACTIVE_HOUR = 'MAH';
 
     /**
      * megalitre
      */
-    const REC20_MEGALITRE = 'MAL';
+    public const REC20_MEGALITRE = 'MAL';
 
     /**
      * megametre
      */
-    const REC20_MEGAMETRE = 'MAM';
+    public const REC20_MEGAMETRE = 'MAM';
 
     /**
      * megavar
      */
-    const REC20_MEGAVAR = 'MAR';
+    public const REC20_MEGAVAR = 'MAR';
 
     /**
      * megawatt
      */
-    const REC20_MEGAWATT = 'MAW';
+    public const REC20_MEGAWATT = 'MAW';
 
     /**
      * thousand standard brick equivalent
      */
-    const REC20_THOUSAND_STANDARD_BRICK_EQUIVALENT = 'MBE';
+    public const REC20_THOUSAND_STANDARD_BRICK_EQUIVALENT = 'MBE';
 
     /**
      * thousand board foot
      */
-    const REC20_THOUSAND_BOARD_FOOT = 'MBF';
+    public const REC20_THOUSAND_BOARD_FOOT = 'MBF';
 
     /**
      * millibar
      */
-    const REC20_MILLIBAR = 'MBR';
+    public const REC20_MILLIBAR = 'MBR';
 
     /**
      * microgram
      */
-    const REC20_MICROGRAM = 'MC';
+    public const REC20_MICROGRAM = 'MC';
 
     /**
      * millicurie
      */
-    const REC20_MILLICURIE = 'MCU';
+    public const REC20_MILLICURIE = 'MCU';
 
     /**
      * air dry metric ton
      */
-    const REC20_AIR_DRY_METRIC_TON = 'MD';
+    public const REC20_AIR_DRY_METRIC_TON = 'MD';
 
     /**
      * milligram
      */
-    const REC20_MILLIGRAM = 'MGM';
+    public const REC20_MILLIGRAM = 'MGM';
 
     /**
      * megahertz
      */
-    const REC20_MEGAHERTZ = 'MHZ';
+    public const REC20_MEGAHERTZ = 'MHZ';
 
     /**
      * square mile (statute mile)
      */
-    const REC20_SQUARE_MILE_STATUTE_MILE = 'MIK';
+    public const REC20_SQUARE_MILE_STATUTE_MILE = 'MIK';
 
     /**
      * thousand
      */
-    const REC20_THOUSAND = 'MIL';
+    public const REC20_THOUSAND = 'MIL';
 
     /**
      * minute [unit of time]
      */
-    const REC20_MINUTE_UNIT_OF_TIME = 'MIN';
+    public const REC20_MINUTE_UNIT_OF_TIME = 'MIN';
 
     /**
      * million
      */
-    const REC20_MILLION = 'MIO';
+    public const REC20_MILLION = 'MIO';
 
     /**
      * million international unit
      */
-    const REC20_MILLION_INTERNATIONAL_UNIT = 'MIU';
+    public const REC20_MILLION_INTERNATIONAL_UNIT = 'MIU';
 
     /**
      * milliard
      */
-    const REC20_MILLIARD = 'MLD';
+    public const REC20_MILLIARD = 'MLD';
 
     /**
      * millilitre
      */
-    const REC20_MILLILITRE = 'MLT';
+    public const REC20_MILLILITRE = 'MLT';
 
     /**
      * square millimetre
      */
-    const REC20_SQUARE_MILLIMETRE = 'MMK';
+    public const REC20_SQUARE_MILLIMETRE = 'MMK';
 
     /**
      * cubic millimetre
      */
-    const REC20_CUBIC_MILLIMETRE = 'MMQ';
+    public const REC20_CUBIC_MILLIMETRE = 'MMQ';
 
     /**
      * millimetre
      */
-    const REC20_MILLIMETRE = 'MMT';
+    public const REC20_MILLIMETRE = 'MMT';
 
     /**
      * kilogram, dry weight
      */
-    const REC20_KILOGRAM_DRY_WEIGHT = 'MND';
+    public const REC20_KILOGRAM_DRY_WEIGHT = 'MND';
 
     /**
      * month
      */
-    const REC20_MONTH = 'MON';
+    public const REC20_MONTH = 'MON';
 
     /**
      * megapascal
      */
-    const REC20_MEGAPASCAL = 'MPA';
+    public const REC20_MEGAPASCAL = 'MPA';
 
     /**
      * cubic metre per hour
      */
-    const REC20_CUBIC_METRE_PER_HOUR = 'MQH';
+    public const REC20_CUBIC_METRE_PER_HOUR = 'MQH';
 
     /**
      * cubic metre per second
      */
-    const REC20_CUBIC_METRE_PER_SECOND = 'MQS';
+    public const REC20_CUBIC_METRE_PER_SECOND = 'MQS';
 
     /**
      * metre per second squared
      */
-    const REC20_METRE_PER_SECOND_SQUARED = 'MSK';
+    public const REC20_METRE_PER_SECOND_SQUARED = 'MSK';
 
     /**
      * square metre
      */
-    const REC20_SQUARE_METRE = 'MTK';
+    public const REC20_SQUARE_METRE = 'MTK';
 
     /**
      * cubic metre
      */
-    const REC20_CUBIC_METRE = 'MTQ';
+    public const REC20_CUBIC_METRE = 'MTQ';
 
     /**
      * metre
      */
-    const REC20_METRE = 'MTR';
+    public const REC20_METRE = 'MTR';
 
     /**
      * metre per second
      */
-    const REC20_METRE_PER_SECOND = 'MTS';
+    public const REC20_METRE_PER_SECOND = 'MTS';
 
     /**
      * megavolt - ampere
      */
-    const REC20_MEGAVOLT__AMPERE = 'MVA';
+    public const REC20_MEGAVOLT__AMPERE = 'MVA';
 
     /**
      * megawatt hour (1000Â kW.h)
      */
-    const REC20_MEGAWATT_HOUR_1000KWH = 'MWH';
+    public const REC20_MEGAWATT_HOUR_1000KWH = 'MWH';
 
     /**
      * pen calorie
      */
-    const REC20_PEN_CALORIE = 'N1';
+    public const REC20_PEN_CALORIE = 'N1';
 
     /**
      * pound foot per second
      */
-    const REC20_POUND_FOOT_PER_SECOND = 'N10';
+    public const REC20_POUND_FOOT_PER_SECOND = 'N10';
 
     /**
      * pound inch per second
      */
-    const REC20_POUND_INCH_PER_SECOND = 'N11';
+    public const REC20_POUND_INCH_PER_SECOND = 'N11';
 
     /**
      * Pferdestaerke
      */
-    const REC20_PFERDESTAERKE = 'N12';
+    public const REC20_PFERDESTAERKE = 'N12';
 
     /**
      * centimetre of mercury (0 ÂºC)
      */
-    const REC20_CENTIMETRE_OF_MERCURY_0_C = 'N13';
+    public const REC20_CENTIMETRE_OF_MERCURY_0_C = 'N13';
 
     /**
      * centimetre of water (4 ÂºC)
      */
-    const REC20_CENTIMETRE_OF_WATER_4_C = 'N14';
+    public const REC20_CENTIMETRE_OF_WATER_4_C = 'N14';
 
     /**
      * foot of water (39.2 ÂºF)
      */
-    const REC20_FOOT_OF_WATER_392_F = 'N15';
+    public const REC20_FOOT_OF_WATER_392_F = 'N15';
 
     /**
      * inch of mercury (32 ÂºF)
      */
-    const REC20_INCH_OF_MERCURY_32_F = 'N16';
+    public const REC20_INCH_OF_MERCURY_32_F = 'N16';
 
     /**
      * inch of mercury (60 ÂºF)
      */
-    const REC20_INCH_OF_MERCURY_60_F = 'N17';
+    public const REC20_INCH_OF_MERCURY_60_F = 'N17';
 
     /**
      * inch of water (39.2 ÂºF)
      */
-    const REC20_INCH_OF_WATER_392_F = 'N18';
+    public const REC20_INCH_OF_WATER_392_F = 'N18';
 
     /**
      * inch of water (60 ÂºF)
      */
-    const REC20_INCH_OF_WATER_60_F = 'N19';
+    public const REC20_INCH_OF_WATER_60_F = 'N19';
 
     /**
      * kip per square inch
      */
-    const REC20_KIP_PER_SQUARE_INCH = 'N20';
+    public const REC20_KIP_PER_SQUARE_INCH = 'N20';
 
     /**
      * poundal per square foot
      */
-    const REC20_POUNDAL_PER_SQUARE_FOOT = 'N21';
+    public const REC20_POUNDAL_PER_SQUARE_FOOT = 'N21';
 
     /**
      * ounce (avoirdupois) per square inch
      */
-    const REC20_OUNCE_AVOIRDUPOIS_PER_SQUARE_INCH = 'N22';
+    public const REC20_OUNCE_AVOIRDUPOIS_PER_SQUARE_INCH = 'N22';
 
     /**
      * conventional metre of water
      */
-    const REC20_CONVENTIONAL_METRE_OF_WATER = 'N23';
+    public const REC20_CONVENTIONAL_METRE_OF_WATER = 'N23';
 
     /**
      * gram per square millimetre
      */
-    const REC20_GRAM_PER_SQUARE_MILLIMETRE = 'N24';
+    public const REC20_GRAM_PER_SQUARE_MILLIMETRE = 'N24';
 
     /**
      * pound per square yard
      */
-    const REC20_POUND_PER_SQUARE_YARD = 'N25';
+    public const REC20_POUND_PER_SQUARE_YARD = 'N25';
 
     /**
      * poundal per square inch
      */
-    const REC20_POUNDAL_PER_SQUARE_INCH = 'N26';
+    public const REC20_POUNDAL_PER_SQUARE_INCH = 'N26';
 
     /**
      * foot to the fourth power
      */
-    const REC20_FOOT_TO_THE_FOURTH_POWER = 'N27';
+    public const REC20_FOOT_TO_THE_FOURTH_POWER = 'N27';
 
     /**
      * cubic decimetre per kilogram
      */
-    const REC20_CUBIC_DECIMETRE_PER_KILOGRAM = 'N28';
+    public const REC20_CUBIC_DECIMETRE_PER_KILOGRAM = 'N28';
 
     /**
      * cubic foot per pound
      */
-    const REC20_CUBIC_FOOT_PER_POUND = 'N29';
+    public const REC20_CUBIC_FOOT_PER_POUND = 'N29';
 
     /**
      * print point
      */
-    const REC20_PRINT_POINT = 'N3';
+    public const REC20_PRINT_POINT = 'N3';
 
     /**
      * cubic inch per pound
      */
-    const REC20_CUBIC_INCH_PER_POUND = 'N30';
+    public const REC20_CUBIC_INCH_PER_POUND = 'N30';
 
     /**
      * kilonewton per metre
      */
-    const REC20_KILONEWTON_PER_METRE = 'N31';
+    public const REC20_KILONEWTON_PER_METRE = 'N31';
 
     /**
      * poundal per inch
      */
-    const REC20_POUNDAL_PER_INCH = 'N32';
+    public const REC20_POUNDAL_PER_INCH = 'N32';
 
     /**
      * pound-force per yard
      */
-    const REC20_POUNDFORCE_PER_YARD = 'N33';
+    public const REC20_POUNDFORCE_PER_YARD = 'N33';
 
     /**
      * poundal second per square foot
      */
-    const REC20_POUNDAL_SECOND_PER_SQUARE_FOOT = 'N34';
+    public const REC20_POUNDAL_SECOND_PER_SQUARE_FOOT = 'N34';
 
     /**
      * poise per pascal
      */
-    const REC20_POISE_PER_PASCAL = 'N35';
+    public const REC20_POISE_PER_PASCAL = 'N35';
 
     /**
      * newton second per square metre
      */
-    const REC20_NEWTON_SECOND_PER_SQUARE_METRE = 'N36';
+    public const REC20_NEWTON_SECOND_PER_SQUARE_METRE = 'N36';
 
     /**
      * kilogram per metre second
      */
-    const REC20_KILOGRAM_PER_METRE_SECOND = 'N37';
+    public const REC20_KILOGRAM_PER_METRE_SECOND = 'N37';
 
     /**
      * kilogram per metre minute
      */
-    const REC20_KILOGRAM_PER_METRE_MINUTE = 'N38';
+    public const REC20_KILOGRAM_PER_METRE_MINUTE = 'N38';
 
     /**
      * kilogram per metre day
      */
-    const REC20_KILOGRAM_PER_METRE_DAY = 'N39';
+    public const REC20_KILOGRAM_PER_METRE_DAY = 'N39';
 
     /**
      * kilogram per metre hour
      */
-    const REC20_KILOGRAM_PER_METRE_HOUR = 'N40';
+    public const REC20_KILOGRAM_PER_METRE_HOUR = 'N40';
 
     /**
      * gram per centimetre second
      */
-    const REC20_GRAM_PER_CENTIMETRE_SECOND = 'N41';
+    public const REC20_GRAM_PER_CENTIMETRE_SECOND = 'N41';
 
     /**
      * poundal second per square inch
      */
-    const REC20_POUNDAL_SECOND_PER_SQUARE_INCH = 'N42';
+    public const REC20_POUNDAL_SECOND_PER_SQUARE_INCH = 'N42';
 
     /**
      * pound per foot minute
      */
-    const REC20_POUND_PER_FOOT_MINUTE = 'N43';
+    public const REC20_POUND_PER_FOOT_MINUTE = 'N43';
 
     /**
      * pound per foot day
      */
-    const REC20_POUND_PER_FOOT_DAY = 'N44';
+    public const REC20_POUND_PER_FOOT_DAY = 'N44';
 
     /**
      * cubic metre per second pascal
      */
-    const REC20_CUBIC_METRE_PER_SECOND_PASCAL = 'N45';
+    public const REC20_CUBIC_METRE_PER_SECOND_PASCAL = 'N45';
 
     /**
      * foot poundal
      */
-    const REC20_FOOT_POUNDAL = 'N46';
+    public const REC20_FOOT_POUNDAL = 'N46';
 
     /**
      * inch poundal
      */
-    const REC20_INCH_POUNDAL = 'N47';
+    public const REC20_INCH_POUNDAL = 'N47';
 
     /**
      * watt per square centimetre
      */
-    const REC20_WATT_PER_SQUARE_CENTIMETRE = 'N48';
+    public const REC20_WATT_PER_SQUARE_CENTIMETRE = 'N48';
 
     /**
      * watt per square inch
      */
-    const REC20_WATT_PER_SQUARE_INCH = 'N49';
+    public const REC20_WATT_PER_SQUARE_INCH = 'N49';
 
     /**
      * British thermal unit (international table) per square foot hour
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SQUARE_FOOT_HOUR = 'N50';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SQUARE_FOOT_HOUR = 'N50';
 
     /**
      * British thermal unit (thermochemical) per square foot hour
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SQUARE_FOOT_HOUR = 'N51';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SQUARE_FOOT_HOUR = 'N51';
 
     /**
      * British thermal unit (thermochemical) per square foot minute
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SQUARE_FOOT_MINUTE = 'N52';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SQUARE_FOOT_MINUTE = 'N52';
 
     /**
      * British thermal unit (international table) per square foot second
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SQUARE_FOOT_SECOND = 'N53';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SQUARE_FOOT_SECOND = 'N53';
 
     /**
      * British thermal unit (thermochemical) per square foot second
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SQUARE_FOOT_SECOND = 'N54';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SQUARE_FOOT_SECOND = 'N54';
 
     /**
      * British thermal unit (international table) per square inch second
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SQUARE_INCH_SECOND = 'N55';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SQUARE_INCH_SECOND = 'N55';
 
     /**
      * calorie (thermochemical) per square centimetre minute
      */
-    const REC20_CALORIE_THERMOCHEMICAL_PER_SQUARE_CENTIMETRE_MINUTE = 'N56';
+    public const REC20_CALORIE_THERMOCHEMICAL_PER_SQUARE_CENTIMETRE_MINUTE = 'N56';
 
     /**
      * calorie (thermochemical) per square centimetre second
      */
-    const REC20_CALORIE_THERMOCHEMICAL_PER_SQUARE_CENTIMETRE_SECOND = 'N57';
+    public const REC20_CALORIE_THERMOCHEMICAL_PER_SQUARE_CENTIMETRE_SECOND = 'N57';
 
     /**
      * British thermal unit (international table) per cubic foot
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_CUBIC_FOOT = 'N58';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_CUBIC_FOOT = 'N58';
 
     /**
      * British thermal unit (thermochemical) per cubic foot
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_CUBIC_FOOT = 'N59';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_CUBIC_FOOT = 'N59';
 
     /**
      * British thermal unit (international table) per degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_DEGREE_FAHRENHEIT = 'N60';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_DEGREE_FAHRENHEIT = 'N60';
 
     /**
      * British thermal unit (thermochemical) per degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_DEGREE_FAHRENHEIT = 'N61';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_DEGREE_FAHRENHEIT = 'N61';
 
     /**
      * British thermal unit (international table) per degree Rankine
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_DEGREE_RANKINE = 'N62';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_DEGREE_RANKINE = 'N62';
 
     /**
      * British thermal unit (thermochemical) per degree Rankine
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_DEGREE_RANKINE = 'N63';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_DEGREE_RANKINE = 'N63';
 
     /**
      * British thermal unit (thermochemical) per pound degree Rankine
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_POUND_DEGREE_RANKINE = 'N64';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_POUND_DEGREE_RANKINE = 'N64';
 
     /**
      * kilocalorie (international table) per gram kelvin
      */
-    const REC20_KILOCALORIE_INTERNATIONAL_TABLE_PER_GRAM_KELVIN = 'N65';
+    public const REC20_KILOCALORIE_INTERNATIONAL_TABLE_PER_GRAM_KELVIN = 'N65';
 
     /**
      * British thermal unit (39 ÂºF)
      */
-    const REC20_BRITISH_THERMAL_UNIT_39_F = 'N66';
+    public const REC20_BRITISH_THERMAL_UNIT_39_F = 'N66';
 
     /**
      * British thermal unit (59 ÂºF)
      */
-    const REC20_BRITISH_THERMAL_UNIT_59_F = 'N67';
+    public const REC20_BRITISH_THERMAL_UNIT_59_F = 'N67';
 
     /**
      * British thermal unit (60 ÂºF)
      */
-    const REC20_BRITISH_THERMAL_UNIT_60_F = 'N68';
+    public const REC20_BRITISH_THERMAL_UNIT_60_F = 'N68';
 
     /**
      * calorie (20 ÂºC)
      */
-    const REC20_CALORIE_20_C = 'N69';
+    public const REC20_CALORIE_20_C = 'N69';
 
     /**
      * quad (1015 BtuIT)
      */
-    const REC20_QUAD_1015_BTUIT = 'N70';
+    public const REC20_QUAD_1015_BTUIT = 'N70';
 
     /**
      * therm (EC)
      */
-    const REC20_THERM_EC = 'N71';
+    public const REC20_THERM_EC = 'N71';
 
     /**
      * therm (U.S.)
      */
-    const REC20_THERM_US = 'N72';
+    public const REC20_THERM_US = 'N72';
 
     /**
      * British thermal unit (thermochemical) per pound
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_POUND = 'N73';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_POUND = 'N73';
 
     /**
@@ -7326,5 +7326,5 @@
      * Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_HOUR_SQUARE_FOOT_DEGREE_FAHRENHEIT = 'N74';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_HOUR_SQUARE_FOOT_DEGREE_FAHRENHEIT = 'N74';
 
     /**
@@ -7332,5 +7332,5 @@
      * Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_HOUR_SQUARE_FOOT_DEGREE_FAHRENHEIT = 'N75';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_HOUR_SQUARE_FOOT_DEGREE_FAHRENHEIT = 'N75';
 
     /**
@@ -7338,5 +7338,5 @@
      * degree Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SECOND_SQUARE_FOOT_DEGREE_FAHRENHEIT = 'N76';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SECOND_SQUARE_FOOT_DEGREE_FAHRENHEIT = 'N76';
 
     /**
@@ -7344,45 +7344,45 @@
      * Fahrenheit
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SECOND_SQUARE_FOOT_DEGREE_FAHRENHEIT = 'N77';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SECOND_SQUARE_FOOT_DEGREE_FAHRENHEIT = 'N77';
 
     /**
      * kilowatt per square metre kelvin
      */
-    const REC20_KILOWATT_PER_SQUARE_METRE_KELVIN = 'N78';
+    public const REC20_KILOWATT_PER_SQUARE_METRE_KELVIN = 'N78';
 
     /**
      * kelvin per pascal
      */
-    const REC20_KELVIN_PER_PASCAL = 'N79';
+    public const REC20_KELVIN_PER_PASCAL = 'N79';
 
     /**
      * watt per metre degree Celsius
      */
-    const REC20_WATT_PER_METRE_DEGREE_CELSIUS = 'N80';
+    public const REC20_WATT_PER_METRE_DEGREE_CELSIUS = 'N80';
 
     /**
      * kilowatt per metre kelvin
      */
-    const REC20_KILOWATT_PER_METRE_KELVIN = 'N81';
+    public const REC20_KILOWATT_PER_METRE_KELVIN = 'N81';
 
     /**
      * kilowatt per metre degree Celsius
      */
-    const REC20_KILOWATT_PER_METRE_DEGREE_CELSIUS = 'N82';
+    public const REC20_KILOWATT_PER_METRE_DEGREE_CELSIUS = 'N82';
 
     /**
      * metre per degree Celcius metre
      */
-    const REC20_METRE_PER_DEGREE_CELCIUS_METRE = 'N83';
+    public const REC20_METRE_PER_DEGREE_CELCIUS_METRE = 'N83';
 
     /**
      * degree Fahrenheit hour per British thermal unit (international table)
      */
-    const REC20_DEGREE_FAHRENHEIT_HOUR_PER_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE = 'N84';
+    public const REC20_DEGREE_FAHRENHEIT_HOUR_PER_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE = 'N84';
 
     /**
      * degree Fahrenheit hour per British thermal unit (thermochemical)
      */
-    const REC20_DEGREE_FAHRENHEIT_HOUR_PER_BRITISH_THERMAL_UNIT_THERMOCHEMICAL = 'N85';
+    public const REC20_DEGREE_FAHRENHEIT_HOUR_PER_BRITISH_THERMAL_UNIT_THERMOCHEMICAL = 'N85';
 
     /**
@@ -7390,10 +7390,10 @@
      * table)
      */
-    const REC20_DEGREE_FAHRENHEIT_SECOND_PER_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE = 'N86';
+    public const REC20_DEGREE_FAHRENHEIT_SECOND_PER_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE = 'N86';
 
     /**
      * degree Fahrenheit second per British thermal unit (thermochemical)
      */
-    const REC20_DEGREE_FAHRENHEIT_SECOND_PER_BRITISH_THERMAL_UNIT_THERMOCHEMICAL = 'N87';
+    public const REC20_DEGREE_FAHRENHEIT_SECOND_PER_BRITISH_THERMAL_UNIT_THERMOCHEMICAL = 'N87';
 
     /**
@@ -7401,5 +7401,5 @@
      * (international table) inch
      */
-    const REC20_DEGREE_FAHRENHEIT_HOUR_SQUARE_FOOT_PER_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_INCH = 'N88';
+    public const REC20_DEGREE_FAHRENHEIT_HOUR_SQUARE_FOOT_PER_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_INCH = 'N88';
 
     /**
@@ -7407,3095 +7407,3095 @@
      * (thermochemical) inch
      */
-    const REC20_DEGREE_FAHRENHEIT_HOUR_SQUARE_FOOT_PER_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_INCH = 'N89';
+    public const REC20_DEGREE_FAHRENHEIT_HOUR_SQUARE_FOOT_PER_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_INCH = 'N89';
 
     /**
      * kilofarad
      */
-    const REC20_KILOFARAD = 'N90';
+    public const REC20_KILOFARAD = 'N90';
 
     /**
      * reciprocal joule
      */
-    const REC20_RECIPROCAL_JOULE = 'N91';
+    public const REC20_RECIPROCAL_JOULE = 'N91';
 
     /**
      * picosiemens
      */
-    const REC20_PICOSIEMENS = 'N92';
+    public const REC20_PICOSIEMENS = 'N92';
 
     /**
      * ampere per pascal
      */
-    const REC20_AMPERE_PER_PASCAL = 'N93';
+    public const REC20_AMPERE_PER_PASCAL = 'N93';
 
     /**
      * franklin
      */
-    const REC20_FRANKLIN = 'N94';
+    public const REC20_FRANKLIN = 'N94';
 
     /**
      * ampere minute
      */
-    const REC20_AMPERE_MINUTE = 'N95';
+    public const REC20_AMPERE_MINUTE = 'N95';
 
     /**
      * biot
      */
-    const REC20_BIOT = 'N96';
+    public const REC20_BIOT = 'N96';
 
     /**
      * gilbert
      */
-    const REC20_GILBERT = 'N97';
+    public const REC20_GILBERT = 'N97';
 
     /**
      * volt per pascal
      */
-    const REC20_VOLT_PER_PASCAL = 'N98';
+    public const REC20_VOLT_PER_PASCAL = 'N98';
 
     /**
      * picovolt
      */
-    const REC20_PICOVOLT = 'N99';
+    public const REC20_PICOVOLT = 'N99';
 
     /**
      * milligram per kilogram
      */
-    const REC20_MILLIGRAM_PER_KILOGRAM = 'NA';
+    public const REC20_MILLIGRAM_PER_KILOGRAM = 'NA';
 
     /**
      * number of articles
      */
-    const REC20_NUMBER_OF_ARTICLES = 'NAR';
+    public const REC20_NUMBER_OF_ARTICLES = 'NAR';
 
     /**
      * number of cells
      */
-    const REC20_NUMBER_OF_CELLS = 'NCL';
+    public const REC20_NUMBER_OF_CELLS = 'NCL';
 
     /**
      * newton
      */
-    const REC20_NEWTON = 'NEW';
+    public const REC20_NEWTON = 'NEW';
 
     /**
      * message
      */
-    const REC20_MESSAGE = 'NF';
+    public const REC20_MESSAGE = 'NF';
 
     /**
      * nil
      */
-    const REC20_NIL = 'NIL';
+    public const REC20_NIL = 'NIL';
 
     /**
      * number of international units
      */
-    const REC20_NUMBER_OF_INTERNATIONAL_UNITS = 'NIU';
+    public const REC20_NUMBER_OF_INTERNATIONAL_UNITS = 'NIU';
 
     /**
      * load
      */
-    const REC20_LOAD = 'NL';
+    public const REC20_LOAD = 'NL';
 
     /**
      * Normalised cubic metre
      */
-    const REC20_NORMALISED_CUBIC_METRE = 'NM3';
+    public const REC20_NORMALISED_CUBIC_METRE = 'NM3';
 
     /**
      * nautical mile
      */
-    const REC20_NAUTICAL_MILE = 'NMI';
+    public const REC20_NAUTICAL_MILE = 'NMI';
 
     /**
      * number of packs
      */
-    const REC20_NUMBER_OF_PACKS = 'NMP';
+    public const REC20_NUMBER_OF_PACKS = 'NMP';
 
     /**
      * number of parts
      */
-    const REC20_NUMBER_OF_PARTS = 'NPT';
+    public const REC20_NUMBER_OF_PARTS = 'NPT';
 
     /**
      * net ton
      */
-    const REC20_NET_TON = 'NT';
+    public const REC20_NET_TON = 'NT';
 
     /**
      * newton metre
      */
-    const REC20_NEWTON_METRE = 'NU';
+    public const REC20_NEWTON_METRE = 'NU';
 
     /**
      * part per thousand
      */
-    const REC20_PART_PER_THOUSAND = 'NX';
+    public const REC20_PART_PER_THOUSAND = 'NX';
 
     /**
      * panel
      */
-    const REC20_PANEL = 'OA';
+    public const REC20_PANEL = 'OA';
 
     /**
      * ozone depletion equivalent
      */
-    const REC20_OZONE_DEPLETION_EQUIVALENT = 'ODE';
+    public const REC20_OZONE_DEPLETION_EQUIVALENT = 'ODE';
 
     /**
      * ODS Grams
      */
-    const REC20_ODS_GRAMS = 'ODG';
+    public const REC20_ODS_GRAMS = 'ODG';
 
     /**
      * ODS Kilograms
      */
-    const REC20_ODS_KILOGRAMS = 'ODK';
+    public const REC20_ODS_KILOGRAMS = 'ODK';
 
     /**
      * ODS Milligrams
      */
-    const REC20_ODS_MILLIGRAMS = 'ODM';
+    public const REC20_ODS_MILLIGRAMS = 'ODM';
 
     /**
      * ohm
      */
-    const REC20_OHM = 'OHM';
+    public const REC20_OHM = 'OHM';
 
     /**
      * ounce per square yard
      */
-    const REC20_OUNCE_PER_SQUARE_YARD = 'ON';
+    public const REC20_OUNCE_PER_SQUARE_YARD = 'ON';
 
     /**
      * ounce (avoirdupois)
      */
-    const REC20_OUNCE_AVOIRDUPOIS = 'ONZ';
+    public const REC20_OUNCE_AVOIRDUPOIS = 'ONZ';
 
     /**
      * oscillations per minute
      */
-    const REC20_OSCILLATIONS_PER_MINUTE = 'OPM';
+    public const REC20_OSCILLATIONS_PER_MINUTE = 'OPM';
 
     /**
      * overtime hour
      */
-    const REC20_OVERTIME_HOUR = 'OT';
+    public const REC20_OVERTIME_HOUR = 'OT';
 
     /**
      * fluid ounce (US)
      */
-    const REC20_FLUID_OUNCE_US = 'OZA';
+    public const REC20_FLUID_OUNCE_US = 'OZA';
 
     /**
      * fluid ounce (UK)
      */
-    const REC20_FLUID_OUNCE_UK = 'OZI';
+    public const REC20_FLUID_OUNCE_UK = 'OZI';
 
     /**
      * percent
      */
-    const REC20_PERCENT = 'P1';
+    public const REC20_PERCENT = 'P1';
 
     /**
      * coulomb per metre
      */
-    const REC20_COULOMB_PER_METRE = 'P10';
+    public const REC20_COULOMB_PER_METRE = 'P10';
 
     /**
      * kiloweber
      */
-    const REC20_KILOWEBER = 'P11';
+    public const REC20_KILOWEBER = 'P11';
 
     /**
      * gamma
      */
-    const REC20_GAMMA = 'P12';
+    public const REC20_GAMMA = 'P12';
 
     /**
      * kilotesla
      */
-    const REC20_KILOTESLA = 'P13';
+    public const REC20_KILOTESLA = 'P13';
 
     /**
      * joule per second
      */
-    const REC20_JOULE_PER_SECOND = 'P14';
+    public const REC20_JOULE_PER_SECOND = 'P14';
 
     /**
      * joule per minute
      */
-    const REC20_JOULE_PER_MINUTE = 'P15';
+    public const REC20_JOULE_PER_MINUTE = 'P15';
 
     /**
      * joule per hour
      */
-    const REC20_JOULE_PER_HOUR = 'P16';
+    public const REC20_JOULE_PER_HOUR = 'P16';
 
     /**
      * joule per day
      */
-    const REC20_JOULE_PER_DAY = 'P17';
+    public const REC20_JOULE_PER_DAY = 'P17';
 
     /**
      * kilojoule per second
      */
-    const REC20_KILOJOULE_PER_SECOND = 'P18';
+    public const REC20_KILOJOULE_PER_SECOND = 'P18';
 
     /**
      * kilojoule per minute
      */
-    const REC20_KILOJOULE_PER_MINUTE = 'P19';
+    public const REC20_KILOJOULE_PER_MINUTE = 'P19';
 
     /**
      * pound per foot
      */
-    const REC20_POUND_PER_FOOT = 'P2';
+    public const REC20_POUND_PER_FOOT = 'P2';
 
     /**
      * kilojoule per hour
      */
-    const REC20_KILOJOULE_PER_HOUR = 'P20';
+    public const REC20_KILOJOULE_PER_HOUR = 'P20';
 
     /**
      * kilojoule per day
      */
-    const REC20_KILOJOULE_PER_DAY = 'P21';
+    public const REC20_KILOJOULE_PER_DAY = 'P21';
 
     /**
      * nanoohm
      */
-    const REC20_NANOOHM = 'P22';
+    public const REC20_NANOOHM = 'P22';
 
     /**
      * ohm circular-mil per foot
      */
-    const REC20_OHM_CIRCULARMIL_PER_FOOT = 'P23';
+    public const REC20_OHM_CIRCULARMIL_PER_FOOT = 'P23';
 
     /**
      * kilohenry
      */
-    const REC20_KILOHENRY = 'P24';
+    public const REC20_KILOHENRY = 'P24';
 
     /**
      * lumen per square foot
      */
-    const REC20_LUMEN_PER_SQUARE_FOOT = 'P25';
+    public const REC20_LUMEN_PER_SQUARE_FOOT = 'P25';
 
     /**
      * phot
      */
-    const REC20_PHOT = 'P26';
+    public const REC20_PHOT = 'P26';
 
     /**
      * footcandle
      */
-    const REC20_FOOTCANDLE = 'P27';
+    public const REC20_FOOTCANDLE = 'P27';
 
     /**
      * candela per square inch
      */
-    const REC20_CANDELA_PER_SQUARE_INCH = 'P28';
+    public const REC20_CANDELA_PER_SQUARE_INCH = 'P28';
 
     /**
      * footlambert
      */
-    const REC20_FOOTLAMBERT = 'P29';
+    public const REC20_FOOTLAMBERT = 'P29';
 
     /**
      * lambert
      */
-    const REC20_LAMBERT = 'P30';
+    public const REC20_LAMBERT = 'P30';
 
     /**
      * stilb
      */
-    const REC20_STILB = 'P31';
+    public const REC20_STILB = 'P31';
 
     /**
      * candela per square foot
      */
-    const REC20_CANDELA_PER_SQUARE_FOOT = 'P32';
+    public const REC20_CANDELA_PER_SQUARE_FOOT = 'P32';
 
     /**
      * kilocandela
      */
-    const REC20_KILOCANDELA = 'P33';
+    public const REC20_KILOCANDELA = 'P33';
 
     /**
      * millicandela
      */
-    const REC20_MILLICANDELA = 'P34';
+    public const REC20_MILLICANDELA = 'P34';
 
     /**
      * Hefner-Kerze
      */
-    const REC20_HEFNERKERZE = 'P35';
+    public const REC20_HEFNERKERZE = 'P35';
 
     /**
      * international candle
      */
-    const REC20_INTERNATIONAL_CANDLE = 'P36';
+    public const REC20_INTERNATIONAL_CANDLE = 'P36';
 
     /**
      * British thermal unit (international table) per square foot
      */
-    const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SQUARE_FOOT = 'P37';
+    public const REC20_BRITISH_THERMAL_UNIT_INTERNATIONAL_TABLE_PER_SQUARE_FOOT = 'P37';
 
     /**
      * British thermal unit (thermochemical) per square foot
      */
-    const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SQUARE_FOOT = 'P38';
+    public const REC20_BRITISH_THERMAL_UNIT_THERMOCHEMICAL_PER_SQUARE_FOOT = 'P38';
 
     /**
      * calorie (thermochemical) per square centimetre
      */
-    const REC20_CALORIE_THERMOCHEMICAL_PER_SQUARE_CENTIMETRE = 'P39';
+    public const REC20_CALORIE_THERMOCHEMICAL_PER_SQUARE_CENTIMETRE = 'P39';
 
     /**
      * langley
      */
-    const REC20_LANGLEY = 'P40';
+    public const REC20_LANGLEY = 'P40';
 
     /**
      * decade (logarithmic)
      */
-    const REC20_DECADE_LOGARITHMIC = 'P41';
+    public const REC20_DECADE_LOGARITHMIC = 'P41';
 
     /**
      * pascal squared second
      */
-    const REC20_PASCAL_SQUARED_SECOND = 'P42';
+    public const REC20_PASCAL_SQUARED_SECOND = 'P42';
 
     /**
      * bel per metre
      */
-    const REC20_BEL_PER_METRE = 'P43';
+    public const REC20_BEL_PER_METRE = 'P43';
 
     /**
      * pound mole
      */
-    const REC20_POUND_MOLE = 'P44';
+    public const REC20_POUND_MOLE = 'P44';
 
     /**
      * pound mole per second
      */
-    const REC20_POUND_MOLE_PER_SECOND = 'P45';
+    public const REC20_POUND_MOLE_PER_SECOND = 'P45';
 
     /**
      * pound mole per minute
      */
-    const REC20_POUND_MOLE_PER_MINUTE = 'P46';
+    public const REC20_POUND_MOLE_PER_MINUTE = 'P46';
 
     /**
      * kilomole per kilogram
      */
-    const REC20_KILOMOLE_PER_KILOGRAM = 'P47';
+    public const REC20_KILOMOLE_PER_KILOGRAM = 'P47';
 
     /**
      * pound mole per pound
      */
-    const REC20_POUND_MOLE_PER_POUND = 'P48';
+    public const REC20_POUND_MOLE_PER_POUND = 'P48';
 
     /**
      * newton square metre per ampere
      */
-    const REC20_NEWTON_SQUARE_METRE_PER_AMPERE = 'P49';
+    public const REC20_NEWTON_SQUARE_METRE_PER_AMPERE = 'P49';
 
     /**
      * five pack
      */
-    const REC20_FIVE_PACK = 'P5';
+    public const REC20_FIVE_PACK = 'P5';
 
     /**
      * weber metre
      */
-    const REC20_WEBER_METRE = 'P50';
+    public const REC20_WEBER_METRE = 'P50';
 
     /**
      * mol per kilogram pascal
      */
-    const REC20_MOL_PER_KILOGRAM_PASCAL = 'P51';
+    public const REC20_MOL_PER_KILOGRAM_PASCAL = 'P51';
 
     /**
      * mol per cubic metre pascal
      */
-    const REC20_MOL_PER_CUBIC_METRE_PASCAL = 'P52';
+    public const REC20_MOL_PER_CUBIC_METRE_PASCAL = 'P52';
 
     /**
      * unit pole
      */
-    const REC20_UNIT_POLE = 'P53';
+    public const REC20_UNIT_POLE = 'P53';
 
     /**
      * milligray per second
      */
-    const REC20_MILLIGRAY_PER_SECOND = 'P54';
+    public const REC20_MILLIGRAY_PER_SECOND = 'P54';
 
     /**
      * microgray per second
      */
-    const REC20_MICROGRAY_PER_SECOND = 'P55';
+    public const REC20_MICROGRAY_PER_SECOND = 'P55';
 
     /**
      * nanogray per second
      */
-    const REC20_NANOGRAY_PER_SECOND = 'P56';
+    public const REC20_NANOGRAY_PER_SECOND = 'P56';
 
     /**
      * gray per minute
      */
-    const REC20_GRAY_PER_MINUTE = 'P57';
+    public const REC20_GRAY_PER_MINUTE = 'P57';
 
     /**
      * milligray per minute
      */
-    const REC20_MILLIGRAY_PER_MINUTE = 'P58';
+    public const REC20_MILLIGRAY_PER_MINUTE = 'P58';
 
     /**
      * microgray per minute
      */
-    const REC20_MICROGRAY_PER_MINUTE = 'P59';
+    public const REC20_MICROGRAY_PER_MINUTE = 'P59';
 
     /**
      * nanogray per minute
      */
-    const REC20_NANOGRAY_PER_MINUTE = 'P60';
+    public const REC20_NANOGRAY_PER_MINUTE = 'P60';
 
     /**
      * gray per hour
      */
-    const REC20_GRAY_PER_HOUR = 'P61';
+    public const REC20_GRAY_PER_HOUR = 'P61';
 
     /**
      * milligray per hour
      */
-    const REC20_MILLIGRAY_PER_HOUR = 'P62';
+    public const REC20_MILLIGRAY_PER_HOUR = 'P62';
 
     /**
      * microgray per hour
      */
-    const REC20_MICROGRAY_PER_HOUR = 'P63';
+    public const REC20_MICROGRAY_PER_HOUR = 'P63';
 
     /**
      * nanogray per hour
      */
-    const REC20_NANOGRAY_PER_HOUR = 'P64';
+    public const REC20_NANOGRAY_PER_HOUR = 'P64';
 
     /**
      * sievert per second
      */
-    const REC20_SIEVERT_PER_SECOND = 'P65';
+    public const REC20_SIEVERT_PER_SECOND = 'P65';
 
     /**
      * millisievert per second
      */
-    const REC20_MILLISIEVERT_PER_SECOND = 'P66';
+    public const REC20_MILLISIEVERT_PER_SECOND = 'P66';
 
     /**
      * microsievert per second
      */
-    const REC20_MICROSIEVERT_PER_SECOND = 'P67';
+    public const REC20_MICROSIEVERT_PER_SECOND = 'P67';
 
     /**
      * nanosievert per second
      */
-    const REC20_NANOSIEVERT_PER_SECOND = 'P68';
+    public const REC20_NANOSIEVERT_PER_SECOND = 'P68';
 
     /**
      * rem per second
      */
-    const REC20_REM_PER_SECOND = 'P69';
+    public const REC20_REM_PER_SECOND = 'P69';
 
     /**
      * sievert per hour
      */
-    const REC20_SIEVERT_PER_HOUR = 'P70';
+    public const REC20_SIEVERT_PER_HOUR = 'P70';
 
     /**
      * millisievert per hour
      */
-    const REC20_MILLISIEVERT_PER_HOUR = 'P71';
+    public const REC20_MILLISIEVERT_PER_HOUR = 'P71';
 
     /**
      * microsievert per hour
      */
-    const REC20_MICROSIEVERT_PER_HOUR = 'P72';
+    public const REC20_MICROSIEVERT_PER_HOUR = 'P72';
 
     /**
      * nanosievert per hour
      */
-    const REC20_NANOSIEVERT_PER_HOUR = 'P73';
+    public const REC20_NANOSIEVERT_PER_HOUR = 'P73';
 
     /**
      * sievert per minute
      */
-    const REC20_SIEVERT_PER_MINUTE = 'P74';
+    public const REC20_SIEVERT_PER_MINUTE = 'P74';
 
     /**
      * millisievert per minute
      */
-    const REC20_MILLISIEVERT_PER_MINUTE = 'P75';
+    public const REC20_MILLISIEVERT_PER_MINUTE = 'P75';
 
     /**
      * microsievert per minute
      */
-    const REC20_MICROSIEVERT_PER_MINUTE = 'P76';
+    public const REC20_MICROSIEVERT_PER_MINUTE = 'P76';
 
     /**
      * nanosievert per minute
      */
-    const REC20_NANOSIEVERT_PER_MINUTE = 'P77';
+    public const REC20_NANOSIEVERT_PER_MINUTE = 'P77';
 
     /**
      * reciprocal square inch
      */
-    const REC20_RECIPROCAL_SQUARE_INCH = 'P78';
+    public const REC20_RECIPROCAL_SQUARE_INCH = 'P78';
 
     /**
      * pascal square metre per kilogram
      */
-    const REC20_PASCAL_SQUARE_METRE_PER_KILOGRAM = 'P79';
+    public const REC20_PASCAL_SQUARE_METRE_PER_KILOGRAM = 'P79';
 
     /**
      * millipascal per metre
      */
-    const REC20_MILLIPASCAL_PER_METRE = 'P80';
+    public const REC20_MILLIPASCAL_PER_METRE = 'P80';
 
     /**
      * kilopascal per metre
      */
-    const REC20_KILOPASCAL_PER_METRE = 'P81';
+    public const REC20_KILOPASCAL_PER_METRE = 'P81';
 
     /**
      * hectopascal per metre
      */
-    const REC20_HECTOPASCAL_PER_METRE = 'P82';
+    public const REC20_HECTOPASCAL_PER_METRE = 'P82';
 
     /**
      * standard atmosphere per metre
      */
-    const REC20_STANDARD_ATMOSPHERE_PER_METRE = 'P83';
+    public const REC20_STANDARD_ATMOSPHERE_PER_METRE = 'P83';
 
     /**
      * technical atmosphere per metre
      */
-    const REC20_TECHNICAL_ATMOSPHERE_PER_METRE = 'P84';
+    public const REC20_TECHNICAL_ATMOSPHERE_PER_METRE = 'P84';
 
     /**
      * torr per metre
      */
-    const REC20_TORR_PER_METRE = 'P85';
+    public const REC20_TORR_PER_METRE = 'P85';
 
     /**
      * psi per inch
      */
-    const REC20_PSI_PER_INCH = 'P86';
+    public const REC20_PSI_PER_INCH = 'P86';
 
     /**
      * cubic metre per second square metre
      */
-    const REC20_CUBIC_METRE_PER_SECOND_SQUARE_METRE = 'P87';
+    public const REC20_CUBIC_METRE_PER_SECOND_SQUARE_METRE = 'P87';
 
     /**
      * rhe
      */
-    const REC20_RHE = 'P88';
+    public const REC20_RHE = 'P88';
 
     /**
      * pound-force foot per inch
      */
-    const REC20_POUNDFORCE_FOOT_PER_INCH = 'P89';
+    public const REC20_POUNDFORCE_FOOT_PER_INCH = 'P89';
 
     /**
      * pound-force inch per inch
      */
-    const REC20_POUNDFORCE_INCH_PER_INCH = 'P90';
+    public const REC20_POUNDFORCE_INCH_PER_INCH = 'P90';
 
     /**
      * perm (0 ÂºC)
      */
-    const REC20_PERM_0_C = 'P91';
+    public const REC20_PERM_0_C = 'P91';
 
     /**
      * perm (23 ÂºC)
      */
-    const REC20_PERM_23_C = 'P92';
+    public const REC20_PERM_23_C = 'P92';
 
     /**
      * byte per second
      */
-    const REC20_BYTE_PER_SECOND = 'P93';
+    public const REC20_BYTE_PER_SECOND = 'P93';
 
     /**
      * kilobyte per second
      */
-    const REC20_KILOBYTE_PER_SECOND = 'P94';
+    public const REC20_KILOBYTE_PER_SECOND = 'P94';
 
     /**
      * megabyte per second
      */
-    const REC20_MEGABYTE_PER_SECOND = 'P95';
+    public const REC20_MEGABYTE_PER_SECOND = 'P95';
 
     /**
      * reciprocal volt
      */
-    const REC20_RECIPROCAL_VOLT = 'P96';
+    public const REC20_RECIPROCAL_VOLT = 'P96';
 
     /**
      * reciprocal radian
      */
-    const REC20_RECIPROCAL_RADIAN = 'P97';
+    public const REC20_RECIPROCAL_RADIAN = 'P97';
 
     /**
      * pascal to the power sum of stoichiometric numbers
      */
-    const REC20_PASCAL_TO_THE_POWER_SUM_OF_STOICHIOMETRIC_NUMBERS = 'P98';
+    public const REC20_PASCAL_TO_THE_POWER_SUM_OF_STOICHIOMETRIC_NUMBERS = 'P98';
 
     /**
      * mole per cubiv metre to the power sum of stoichiometric numbers
      */
-    const REC20_MOLE_PER_CUBIV_METRE_TO_THE_POWER_SUM_OF_STOICHIOMETRIC_NUMBERS = 'P99';
+    public const REC20_MOLE_PER_CUBIV_METRE_TO_THE_POWER_SUM_OF_STOICHIOMETRIC_NUMBERS = 'P99';
 
     /**
      * pascal
      */
-    const REC20_PASCAL = 'PAL';
+    public const REC20_PASCAL = 'PAL';
 
     /**
      * pad
      */
-    const REC20_PAD = 'PD';
+    public const REC20_PAD = 'PD';
 
     /**
      * proof litre
      */
-    const REC20_PROOF_LITRE = 'PFL';
+    public const REC20_PROOF_LITRE = 'PFL';
 
     /**
      * proof gallon
      */
-    const REC20_PROOF_GALLON = 'PGL';
+    public const REC20_PROOF_GALLON = 'PGL';
 
     /**
      * pitch
      */
-    const REC20_PITCH = 'PI';
+    public const REC20_PITCH = 'PI';
 
     /**
      * degree Plato
      */
-    const REC20_DEGREE_PLATO = 'PLA';
+    public const REC20_DEGREE_PLATO = 'PLA';
 
     /**
      * pound per inch of length
      */
-    const REC20_POUND_PER_INCH_OF_LENGTH = 'PO';
+    public const REC20_POUND_PER_INCH_OF_LENGTH = 'PO';
 
     /**
      * page per inch
      */
-    const REC20_PAGE_PER_INCH = 'PQ';
+    public const REC20_PAGE_PER_INCH = 'PQ';
 
     /**
      * pair
      */
-    const REC20_PAIR = 'PR';
+    public const REC20_PAIR = 'PR';
 
     /**
      * pound-force per square inch
      */
-    const REC20_POUNDFORCE_PER_SQUARE_INCH = 'PS';
+    public const REC20_POUNDFORCE_PER_SQUARE_INCH = 'PS';
 
     /**
      * dry pint (US)
      */
-    const REC20_DRY_PINT_US = 'PTD';
+    public const REC20_DRY_PINT_US = 'PTD';
 
     /**
      * pint (UK)
      */
-    const REC20_PINT_UK = 'PTI';
+    public const REC20_PINT_UK = 'PTI';
 
     /**
      * liquid pint (US)
      */
-    const REC20_LIQUID_PINT_US = 'PTL';
+    public const REC20_LIQUID_PINT_US = 'PTL';
 
     /**
      * portion
      */
-    const REC20_PORTION = 'PTN';
+    public const REC20_PORTION = 'PTN';
 
     /**
      * joule per tesla
      */
-    const REC20_JOULE_PER_TESLA = 'Q10';
+    public const REC20_JOULE_PER_TESLA = 'Q10';
 
     /**
      * erlang
      */
-    const REC20_ERLANG = 'Q11';
+    public const REC20_ERLANG = 'Q11';
 
     /**
      * octet
      */
-    const REC20_OCTET = 'Q12';
+    public const REC20_OCTET = 'Q12';
 
     /**
      * octet per second
      */
-    const REC20_OCTET_PER_SECOND = 'Q13';
+    public const REC20_OCTET_PER_SECOND = 'Q13';
 
     /**
      * shannon
      */
-    const REC20_SHANNON = 'Q14';
+    public const REC20_SHANNON = 'Q14';
 
     /**
      * hartley
      */
-    const REC20_HARTLEY = 'Q15';
+    public const REC20_HARTLEY = 'Q15';
 
     /**
      * natural unit of information
      */
-    const REC20_NATURAL_UNIT_OF_INFORMATION = 'Q16';
+    public const REC20_NATURAL_UNIT_OF_INFORMATION = 'Q16';
 
     /**
      * shannon per second
      */
-    const REC20_SHANNON_PER_SECOND = 'Q17';
+    public const REC20_SHANNON_PER_SECOND = 'Q17';
 
     /**
      * hartley per second
      */
-    const REC20_HARTLEY_PER_SECOND = 'Q18';
+    public const REC20_HARTLEY_PER_SECOND = 'Q18';
 
     /**
      * natural unit of information per second
      */
-    const REC20_NATURAL_UNIT_OF_INFORMATION_PER_SECOND = 'Q19';
+    public const REC20_NATURAL_UNIT_OF_INFORMATION_PER_SECOND = 'Q19';
 
     /**
      * second per kilogramm
      */
-    const REC20_SECOND_PER_KILOGRAMM = 'Q20';
+    public const REC20_SECOND_PER_KILOGRAMM = 'Q20';
 
     /**
      * watt square metre
      */
-    const REC20_WATT_SQUARE_METRE = 'Q21';
+    public const REC20_WATT_SQUARE_METRE = 'Q21';
 
     /**
      * second per radian cubic metre
      */
-    const REC20_SECOND_PER_RADIAN_CUBIC_METRE = 'Q22';
+    public const REC20_SECOND_PER_RADIAN_CUBIC_METRE = 'Q22';
 
     /**
      * weber to the power minus one
      */
-    const REC20_WEBER_TO_THE_POWER_MINUS_ONE = 'Q23';
+    public const REC20_WEBER_TO_THE_POWER_MINUS_ONE = 'Q23';
 
     /**
      * reciprocal inch
      */
-    const REC20_RECIPROCAL_INCH = 'Q24';
+    public const REC20_RECIPROCAL_INCH = 'Q24';
 
     /**
      * dioptre
      */
-    const REC20_DIOPTRE = 'Q25';
+    public const REC20_DIOPTRE = 'Q25';
 
     /**
      * one per one
      */
-    const REC20_ONE_PER_ONE = 'Q26';
+    public const REC20_ONE_PER_ONE = 'Q26';
 
     /**
      * newton metre per metre
      */
-    const REC20_NEWTON_METRE_PER_METRE = 'Q27';
+    public const REC20_NEWTON_METRE_PER_METRE = 'Q27';
 
     /**
      * kilogram per square metre pascal second
      */
-    const REC20_KILOGRAM_PER_SQUARE_METRE_PASCAL_SECOND = 'Q28';
+    public const REC20_KILOGRAM_PER_SQUARE_METRE_PASCAL_SECOND = 'Q28';
 
     /**
      * microgram per hectogram
      */
-    const REC20_MICROGRAM_PER_HECTOGRAM = 'Q29';
+    public const REC20_MICROGRAM_PER_HECTOGRAM = 'Q29';
 
     /**
      * pH (potential of Hydrogen)
      */
-    const REC20_PH_POTENTIAL_OF_HYDROGEN = 'Q30';
+    public const REC20_PH_POTENTIAL_OF_HYDROGEN = 'Q30';
 
     /**
      * kilojoule per gram
      */
-    const REC20_KILOJOULE_PER_GRAM = 'Q31';
+    public const REC20_KILOJOULE_PER_GRAM = 'Q31';
 
     /**
      * femtolitre
      */
-    const REC20_FEMTOLITRE = 'Q32';
+    public const REC20_FEMTOLITRE = 'Q32';
 
     /**
      * picolitre
      */
-    const REC20_PICOLITRE = 'Q33';
+    public const REC20_PICOLITRE = 'Q33';
 
     /**
      * nanolitre
      */
-    const REC20_NANOLITRE = 'Q34';
+    public const REC20_NANOLITRE = 'Q34';
 
     /**
      * megawatts per minute
      */
-    const REC20_MEGAWATTS_PER_MINUTE = 'Q35';
+    public const REC20_MEGAWATTS_PER_MINUTE = 'Q35';
 
     /**
      * square metre per cubic metre
      */
-    const REC20_SQUARE_METRE_PER_CUBIC_METRE = 'Q36';
+    public const REC20_SQUARE_METRE_PER_CUBIC_METRE = 'Q36';
 
     /**
      * Standard cubic metre per day
      */
-    const REC20_STANDARD_CUBIC_METRE_PER_DAY = 'Q37';
+    public const REC20_STANDARD_CUBIC_METRE_PER_DAY = 'Q37';
 
     /**
      * Standard cubic metre per hour
      */
-    const REC20_STANDARD_CUBIC_METRE_PER_HOUR = 'Q38';
+    public const REC20_STANDARD_CUBIC_METRE_PER_HOUR = 'Q38';
 
     /**
      * Normalized cubic metre per day
      */
-    const REC20_NORMALIZED_CUBIC_METRE_PER_DAY = 'Q39';
+    public const REC20_NORMALIZED_CUBIC_METRE_PER_DAY = 'Q39';
 
     /**
      * Normalized cubic metre per hour
      */
-    const REC20_NORMALIZED_CUBIC_METRE_PER_HOUR = 'Q40';
+    public const REC20_NORMALIZED_CUBIC_METRE_PER_HOUR = 'Q40';
 
     /**
      * Joule per normalised cubic metre
      */
-    const REC20_JOULE_PER_NORMALISED_CUBIC_METRE = 'Q41';
+    public const REC20_JOULE_PER_NORMALISED_CUBIC_METRE = 'Q41';
 
     /**
      * Joule per standard cubic metre
      */
-    const REC20_JOULE_PER_STANDARD_CUBIC_METRE = 'Q42';
+    public const REC20_JOULE_PER_STANDARD_CUBIC_METRE = 'Q42';
 
     /**
      * meal
      */
-    const REC20_MEAL = 'Q3';
+    public const REC20_MEAL = 'Q3';
 
     /**
      * page - facsimile
      */
-    const REC20_PAGE__FACSIMILE = 'QA';
+    public const REC20_PAGE__FACSIMILE = 'QA';
 
     /**
      * quarter (of a year)
      */
-    const REC20_QUARTER_OF_A_YEAR = 'QAN';
+    public const REC20_QUARTER_OF_A_YEAR = 'QAN';
 
     /**
      * page - hardcopy
      */
-    const REC20_PAGE__HARDCOPY = 'QB';
+    public const REC20_PAGE__HARDCOPY = 'QB';
 
     /**
      * quire
      */
-    const REC20_QUIRE = 'QR';
+    public const REC20_QUIRE = 'QR';
 
     /**
      * dry quart (US)
      */
-    const REC20_DRY_QUART_US = 'QTD';
+    public const REC20_DRY_QUART_US = 'QTD';
 
     /**
      * quart (UK)
      */
-    const REC20_QUART_UK = 'QTI';
+    public const REC20_QUART_UK = 'QTI';
 
     /**
      * liquid quart (US)
      */
-    const REC20_LIQUID_QUART_US = 'QTL';
+    public const REC20_LIQUID_QUART_US = 'QTL';
 
     /**
      * quarter (UK)
      */
-    const REC20_QUARTER_UK = 'QTR';
+    public const REC20_QUARTER_UK = 'QTR';
 
     /**
      * pica
      */
-    const REC20_PICA = 'R1';
+    public const REC20_PICA = 'R1';
 
     /**
      * thousand cubic metre
      */
-    const REC20_THOUSAND_CUBIC_METRE = 'R9';
+    public const REC20_THOUSAND_CUBIC_METRE = 'R9';
 
     /**
      * running or operating hour
      */
-    const REC20_RUNNING_OR_OPERATING_HOUR = 'RH';
+    public const REC20_RUNNING_OR_OPERATING_HOUR = 'RH';
 
     /**
      * ream
      */
-    const REC20_REAM = 'RM';
+    public const REC20_REAM = 'RM';
 
     /**
      * room
      */
-    const REC20_ROOM = 'ROM';
+    public const REC20_ROOM = 'ROM';
 
     /**
      * pound per ream
      */
-    const REC20_POUND_PER_REAM = 'RP';
+    public const REC20_POUND_PER_REAM = 'RP';
 
     /**
      * revolutions per minute
      */
-    const REC20_REVOLUTIONS_PER_MINUTE = 'RPM';
+    public const REC20_REVOLUTIONS_PER_MINUTE = 'RPM';
 
     /**
      * revolutions per second
      */
-    const REC20_REVOLUTIONS_PER_SECOND = 'RPS';
+    public const REC20_REVOLUTIONS_PER_SECOND = 'RPS';
 
     /**
      * revenue ton mile
      */
-    const REC20_REVENUE_TON_MILE = 'RT';
+    public const REC20_REVENUE_TON_MILE = 'RT';
 
     /**
      * square foot per second
      */
-    const REC20_SQUARE_FOOT_PER_SECOND = 'S3';
+    public const REC20_SQUARE_FOOT_PER_SECOND = 'S3';
 
     /**
      * square metre per second
      */
-    const REC20_SQUARE_METRE_PER_SECOND = 'S4';
+    public const REC20_SQUARE_METRE_PER_SECOND = 'S4';
 
     /**
      * half year (6 months)
      */
-    const REC20_HALF_YEAR_6_MONTHS = 'SAN';
+    public const REC20_HALF_YEAR_6_MONTHS = 'SAN';
 
     /**
      * score
      */
-    const REC20_SCORE = 'SCO';
+    public const REC20_SCORE = 'SCO';
 
     /**
      * scruple
      */
-    const REC20_SCRUPLE = 'SCR';
+    public const REC20_SCRUPLE = 'SCR';
 
     /**
      * second [unit of time]
      */
-    const REC20_SECOND_UNIT_OF_TIME = 'SEC';
+    public const REC20_SECOND_UNIT_OF_TIME = 'SEC';
 
     /**
      * set
      */
-    const REC20_SET = 'SET';
+    public const REC20_SET = 'SET';
 
     /**
      * segment
      */
-    const REC20_SEGMENT = 'SG';
+    public const REC20_SEGMENT = 'SG';
 
     /**
      * siemens
      */
-    const REC20_SIEMENS = 'SIE';
+    public const REC20_SIEMENS = 'SIE';
 
     /**
      * Standard cubic metre
      */
-    const REC20_STANDARD_CUBIC_METRE = 'SM3';
+    public const REC20_STANDARD_CUBIC_METRE = 'SM3';
 
     /**
      * mile (statute mile)
      */
-    const REC20_MILE_STATUTE_MILE = 'SMI';
+    public const REC20_MILE_STATUTE_MILE = 'SMI';
 
     /**
      * square
      */
-    const REC20_SQUARE = 'SQ';
+    public const REC20_SQUARE = 'SQ';
 
     /**
      * square, roofing
      */
-    const REC20_SQUARE_ROOFING = 'SQR';
+    public const REC20_SQUARE_ROOFING = 'SQR';
 
     /**
      * strip
      */
-    const REC20_STRIP = 'SR';
+    public const REC20_STRIP = 'SR';
 
     /**
      * stick
      */
-    const REC20_STICK = 'STC';
+    public const REC20_STICK = 'STC';
 
     /**
      * stone (UK)
      */
-    const REC20_STONE_UK = 'STI';
+    public const REC20_STONE_UK = 'STI';
 
     /**
      * stick, cigarette
      */
-    const REC20_STICK_CIGARETTE = 'STK';
+    public const REC20_STICK_CIGARETTE = 'STK';
 
     /**
      * standard litre
      */
-    const REC20_STANDARD_LITRE = 'STL';
+    public const REC20_STANDARD_LITRE = 'STL';
 
     /**
      * ton (US) or short ton (UK/US)
      */
-    const REC20_TON_US_OR_SHORT_TON_UK_US = 'STN';
+    public const REC20_TON_US_OR_SHORT_TON_UK_US = 'STN';
 
     /**
      * straw
      */
-    const REC20_STRAW = 'STW';
+    public const REC20_STRAW = 'STW';
 
     /**
      * skein
      */
-    const REC20_SKEIN = 'SW';
+    public const REC20_SKEIN = 'SW';
 
     /**
      * shipment
      */
-    const REC20_SHIPMENT = 'SX';
+    public const REC20_SHIPMENT = 'SX';
 
     /**
      * syringe
      */
-    const REC20_SYRINGE = 'SYR';
+    public const REC20_SYRINGE = 'SYR';
 
     /**
      * telecommunication line in service
      */
-    const REC20_TELECOMMUNICATION_LINE_IN_SERVICE = 'T0';
+    public const REC20_TELECOMMUNICATION_LINE_IN_SERVICE = 'T0';
 
     /**
      * thousand piece
      */
-    const REC20_THOUSAND_PIECE = 'T3';
+    public const REC20_THOUSAND_PIECE = 'T3';
 
     /**
      * kiloampere hour (thousand ampere hour)
      */
-    const REC20_KILOAMPERE_HOUR_THOUSAND_AMPERE_HOUR = 'TAH';
+    public const REC20_KILOAMPERE_HOUR_THOUSAND_AMPERE_HOUR = 'TAH';
 
     /**
      * total acid number
      */
-    const REC20_TOTAL_ACID_NUMBER = 'TAN';
+    public const REC20_TOTAL_ACID_NUMBER = 'TAN';
 
     /**
      * thousand square inch
      */
-    const REC20_THOUSAND_SQUARE_INCH = 'TI';
+    public const REC20_THOUSAND_SQUARE_INCH = 'TI';
 
     /**
      * metric ton, including container
      */
-    const REC20_METRIC_TON_INCLUDING_CONTAINER = 'TIC';
+    public const REC20_METRIC_TON_INCLUDING_CONTAINER = 'TIC';
 
     /**
      * metric ton, including inner packaging
      */
-    const REC20_METRIC_TON_INCLUDING_INNER_PACKAGING = 'TIP';
+    public const REC20_METRIC_TON_INCLUDING_INNER_PACKAGING = 'TIP';
 
     /**
      * tonne kilometre
      */
-    const REC20_TONNE_KILOMETRE = 'TKM';
+    public const REC20_TONNE_KILOMETRE = 'TKM';
 
     /**
      * kilogram of imported meat, less offal
      */
-    const REC20_KILOGRAM_OF_IMPORTED_MEAT_LESS_OFFAL = 'TMS';
+    public const REC20_KILOGRAM_OF_IMPORTED_MEAT_LESS_OFFAL = 'TMS';
 
     /**
      * tonne (metric ton)
      */
-    const REC20_TONNE_METRIC_TON = 'TNE';
+    public const REC20_TONNE_METRIC_TON = 'TNE';
 
     /**
      * ten pack
      */
-    const REC20_TEN_PACK = 'TP';
+    public const REC20_TEN_PACK = 'TP';
 
     /**
      * teeth per inch
      */
-    const REC20_TEETH_PER_INCH = 'TPI';
+    public const REC20_TEETH_PER_INCH = 'TPI';
 
     /**
      * ten pair
      */
-    const REC20_TEN_PAIR = 'TPR';
+    public const REC20_TEN_PAIR = 'TPR';
 
     /**
      * thousand cubic metre per day
      */
-    const REC20_THOUSAND_CUBIC_METRE_PER_DAY = 'TQD';
+    public const REC20_THOUSAND_CUBIC_METRE_PER_DAY = 'TQD';
 
     /**
      * trillion (EUR)
      */
-    const REC20_TRILLION_EUR = 'TRL';
+    public const REC20_TRILLION_EUR = 'TRL';
 
     /**
      * ten set
      */
-    const REC20_TEN_SET = 'TST';
+    public const REC20_TEN_SET = 'TST';
 
     /**
      * ten thousand sticks
      */
-    const REC20_TEN_THOUSAND_STICKS = 'TTS';
+    public const REC20_TEN_THOUSAND_STICKS = 'TTS';
 
     /**
      * treatment
      */
-    const REC20_TREATMENT = 'U1';
+    public const REC20_TREATMENT = 'U1';
 
     /**
      * tablet
      */
-    const REC20_TABLET = 'U2';
+    public const REC20_TABLET = 'U2';
 
     /**
      * telecommunication line in service average
      */
-    const REC20_TELECOMMUNICATION_LINE_IN_SERVICE_AVERAGE = 'UB';
+    public const REC20_TELECOMMUNICATION_LINE_IN_SERVICE_AVERAGE = 'UB';
 
     /**
      * telecommunication port
      */
-    const REC20_TELECOMMUNICATION_PORT = 'UC';
+    public const REC20_TELECOMMUNICATION_PORT = 'UC';
 
     /**
      * volt - ampere per kilogram
      */
-    const REC20_VOLT__AMPERE_PER_KILOGRAM = 'VA';
+    public const REC20_VOLT__AMPERE_PER_KILOGRAM = 'VA';
 
     /**
      * volt
      */
-    const REC20_VOLT = 'VLT';
+    public const REC20_VOLT = 'VLT';
 
     /**
      * percent volume
      */
-    const REC20_PERCENT_VOLUME = 'VP';
+    public const REC20_PERCENT_VOLUME = 'VP';
 
     /**
      * wet kilo
      */
-    const REC20_WET_KILO = 'W2';
+    public const REC20_WET_KILO = 'W2';
 
     /**
      * watt per kilogram
      */
-    const REC20_WATT_PER_KILOGRAM = 'WA';
+    public const REC20_WATT_PER_KILOGRAM = 'WA';
 
     /**
      * wet pound
      */
-    const REC20_WET_POUND = 'WB';
+    public const REC20_WET_POUND = 'WB';
 
     /**
      * cord
      */
-    const REC20_CORD = 'WCD';
+    public const REC20_CORD = 'WCD';
 
     /**
      * wet ton
      */
-    const REC20_WET_TON = 'WE';
+    public const REC20_WET_TON = 'WE';
 
     /**
      * weber
      */
-    const REC20_WEBER = 'WEB';
+    public const REC20_WEBER = 'WEB';
 
     /**
      * week
      */
-    const REC20_WEEK = 'WEE';
+    public const REC20_WEEK = 'WEE';
 
     /**
      * wine gallon
      */
-    const REC20_WINE_GALLON = 'WG';
+    public const REC20_WINE_GALLON = 'WG';
 
     /**
      * watt hour
      */
-    const REC20_WATT_HOUR = 'WHR';
+    public const REC20_WATT_HOUR = 'WHR';
 
     /**
      * working month
      */
-    const REC20_WORKING_MONTH = 'WM';
+    public const REC20_WORKING_MONTH = 'WM';
 
     /**
      * standard
      */
-    const REC20_STANDARD = 'WSD';
+    public const REC20_STANDARD = 'WSD';
 
     /**
      * watt
      */
-    const REC20_WATT = 'WTT';
+    public const REC20_WATT = 'WTT';
 
     /**
      * Gunter's chain
      */
-    const REC20_GUNTERS_CHAIN = 'X1';
+    public const REC20_GUNTERS_CHAIN = 'X1';
 
     /**
      * square yard
      */
-    const REC20_SQUARE_YARD = 'YDK';
+    public const REC20_SQUARE_YARD = 'YDK';
 
     /**
      * cubic yard
      */
-    const REC20_CUBIC_YARD = 'YDQ';
+    public const REC20_CUBIC_YARD = 'YDQ';
 
     /**
      * yard
      */
-    const REC20_YARD = 'YRD';
+    public const REC20_YARD = 'YRD';
 
     /**
      * hanging container
      */
-    const REC20_HANGING_CONTAINER = 'Z11';
+    public const REC20_HANGING_CONTAINER = 'Z11';
 
     /**
      * page
      */
-    const REC20_PAGE = 'ZP';
+    public const REC20_PAGE = 'ZP';
 
     /**
      * mutually defined
      */
-    const REC20_MUTUALLY_DEFINED = 'ZZ';
+    public const REC20_MUTUALLY_DEFINED = 'ZZ';
 
     /**
      * Drum, steel
      */
-    const REC21_DRUM_STEEL = 'X1A';
+    public const REC21_DRUM_STEEL = 'X1A';
 
     /**
      * Drum, aluminium
      */
-    const REC21_DRUM_ALUMINIUM = 'X1B';
+    public const REC21_DRUM_ALUMINIUM = 'X1B';
 
     /**
      * Drum, plywood
      */
-    const REC21_DRUM_PLYWOOD = 'X1D';
+    public const REC21_DRUM_PLYWOOD = 'X1D';
 
     /**
      * Container, flexible
      */
-    const REC21_CONTAINER_FLEXIBLE = 'X1F';
+    public const REC21_CONTAINER_FLEXIBLE = 'X1F';
 
     /**
      * Drum, fibre
      */
-    const REC21_DRUM_FIBRE = 'X1G';
+    public const REC21_DRUM_FIBRE = 'X1G';
 
     /**
      * Drum, wooden
      */
-    const REC21_DRUM_WOODEN = 'X1W';
+    public const REC21_DRUM_WOODEN = 'X1W';
 
     /**
      * Barrel, wooden
      */
-    const REC21_BARREL_WOODEN = 'X2C';
+    public const REC21_BARREL_WOODEN = 'X2C';
 
     /**
      * Jerrican, steel
      */
-    const REC21_JERRICAN_STEEL = 'X3A';
+    public const REC21_JERRICAN_STEEL = 'X3A';
 
     /**
      * Jerrican, plastic
      */
-    const REC21_JERRICAN_PLASTIC = 'X3H';
+    public const REC21_JERRICAN_PLASTIC = 'X3H';
 
     /**
      * Bag, super bulk
      */
-    const REC21_BAG_SUPER_BULK = 'X43';
+    public const REC21_BAG_SUPER_BULK = 'X43';
 
     /**
      * Bag, polybag
      */
-    const REC21_BAG_POLYBAG = 'X44';
+    public const REC21_BAG_POLYBAG = 'X44';
 
     /**
      * Box, steel
      */
-    const REC21_BOX_STEEL = 'X4A';
+    public const REC21_BOX_STEEL = 'X4A';
 
     /**
      * Box, aluminium
      */
-    const REC21_BOX_ALUMINIUM = 'X4B';
+    public const REC21_BOX_ALUMINIUM = 'X4B';
 
     /**
      * Box, natural wood
      */
-    const REC21_BOX_NATURAL_WOOD = 'X4C';
+    public const REC21_BOX_NATURAL_WOOD = 'X4C';
 
     /**
      * Box, plywood
      */
-    const REC21_BOX_PLYWOOD = 'X4D';
+    public const REC21_BOX_PLYWOOD = 'X4D';
 
     /**
      * Box, reconstituted wood
      */
-    const REC21_BOX_RECONSTITUTED_WOOD = 'X4F';
+    public const REC21_BOX_RECONSTITUTED_WOOD = 'X4F';
 
     /**
      * Box, fibreboard
      */
-    const REC21_BOX_FIBREBOARD = 'X4G';
+    public const REC21_BOX_FIBREBOARD = 'X4G';
 
     /**
      * Box, plastic
      */
-    const REC21_BOX_PLASTIC = 'X4H';
+    public const REC21_BOX_PLASTIC = 'X4H';
 
     /**
      * Bag, woven plastic
      */
-    const REC21_BAG_WOVEN_PLASTIC = 'X5H';
+    public const REC21_BAG_WOVEN_PLASTIC = 'X5H';
 
     /**
      * Bag, textile
      */
-    const REC21_BAG_TEXTILE = 'X5L';
+    public const REC21_BAG_TEXTILE = 'X5L';
 
     /**
      * Bag, paper
      */
-    const REC21_BAG_PAPER = 'X5M';
+    public const REC21_BAG_PAPER = 'X5M';
 
     /**
      * Composite packaging, plastic receptacle
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE = 'X6H';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE = 'X6H';
 
     /**
      * Composite packaging, glass receptacle
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE = 'X6P';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE = 'X6P';
 
     /**
      * Case, car
      */
-    const REC21_CASE_CAR = 'X7A';
+    public const REC21_CASE_CAR = 'X7A';
 
     /**
      * Case, wooden
      */
-    const REC21_CASE_WOODEN = 'X7B';
+    public const REC21_CASE_WOODEN = 'X7B';
 
     /**
      * Pallet, wooden
      */
-    const REC21_PALLET_WOODEN = 'X8A';
+    public const REC21_PALLET_WOODEN = 'X8A';
 
     /**
      * Crate, wooden
      */
-    const REC21_CRATE_WOODEN = 'X8B';
+    public const REC21_CRATE_WOODEN = 'X8B';
 
     /**
      * Bundle, wooden
      */
-    const REC21_BUNDLE_WOODEN = 'X8C';
+    public const REC21_BUNDLE_WOODEN = 'X8C';
 
     /**
      * Intermediate bulk container, rigid plastic
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC = 'XAA';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC = 'XAA';
 
     /**
      * Receptacle, fibre
      */
-    const REC21_RECEPTACLE_FIBRE = 'XAB';
+    public const REC21_RECEPTACLE_FIBRE = 'XAB';
 
     /**
      * Receptacle, paper
      */
-    const REC21_RECEPTACLE_PAPER = 'XAC';
+    public const REC21_RECEPTACLE_PAPER = 'XAC';
 
     /**
      * Receptacle, wooden
      */
-    const REC21_RECEPTACLE_WOODEN = 'XAD';
+    public const REC21_RECEPTACLE_WOODEN = 'XAD';
 
     /**
      * Aerosol
      */
-    const REC21_AEROSOL = 'XAE';
+    public const REC21_AEROSOL = 'XAE';
 
     /**
      * Pallet, modular, collars 80cms * 60cms
      */
-    const REC21_PALLET_MODULAR_COLLARS_80CMS__60CMS = 'XAF';
+    public const REC21_PALLET_MODULAR_COLLARS_80CMS__60CMS = 'XAF';
 
     /**
      * Pallet, shrinkwrapped
      */
-    const REC21_PALLET_SHRINKWRAPPED = 'XAG';
+    public const REC21_PALLET_SHRINKWRAPPED = 'XAG';
 
     /**
      * Pallet, 100cms * 110cms
      */
-    const REC21_PALLET_100CMS__110CMS = 'XAH';
+    public const REC21_PALLET_100CMS__110CMS = 'XAH';
 
     /**
      * Clamshell
      */
-    const REC21_CLAMSHELL = 'XAI';
+    public const REC21_CLAMSHELL = 'XAI';
 
     /**
      * Cone
      */
-    const REC21_CONE = 'XAJ';
+    public const REC21_CONE = 'XAJ';
 
     /**
      * Ball
      */
-    const REC21_BALL = 'XAL';
+    public const REC21_BALL = 'XAL';
 
     /**
      * Ampoule, non-protected
      */
-    const REC21_AMPOULE_NONPROTECTED = 'XAM';
+    public const REC21_AMPOULE_NONPROTECTED = 'XAM';
 
     /**
      * Ampoule, protected
      */
-    const REC21_AMPOULE_PROTECTED = 'XAP';
+    public const REC21_AMPOULE_PROTECTED = 'XAP';
 
     /**
      * Atomizer
      */
-    const REC21_ATOMIZER = 'XAT';
+    public const REC21_ATOMIZER = 'XAT';
 
     /**
      * Capsule
      */
-    const REC21_CAPSULE = 'XAV';
+    public const REC21_CAPSULE = 'XAV';
 
     /**
      * Belt
      */
-    const REC21_BELT = 'XB4';
+    public const REC21_BELT = 'XB4';
 
     /**
      * Barrel
      */
-    const REC21_BARREL = 'XBA';
+    public const REC21_BARREL = 'XBA';
 
     /**
      * Bobbin
      */
-    const REC21_BOBBIN = 'XBB';
+    public const REC21_BOBBIN = 'XBB';
 
     /**
      * Bottlecrate / bottlerack
      */
-    const REC21_BOTTLECRATE___BOTTLERACK = 'XBC';
+    public const REC21_BOTTLECRATE___BOTTLERACK = 'XBC';
 
     /**
      * Board
      */
-    const REC21_BOARD = 'XBD';
+    public const REC21_BOARD = 'XBD';
 
     /**
      * Bundle
      */
-    const REC21_BUNDLE = 'XBE';
+    public const REC21_BUNDLE = 'XBE';
 
     /**
      * Balloon, non-protected
      */
-    const REC21_BALLOON_NONPROTECTED = 'XBF';
+    public const REC21_BALLOON_NONPROTECTED = 'XBF';
 
     /**
      * Bag
      */
-    const REC21_BAG = 'XBG';
+    public const REC21_BAG = 'XBG';
 
     /**
      * Bunch
      */
-    const REC21_BUNCH = 'XBH';
+    public const REC21_BUNCH = 'XBH';
 
     /**
      * Bin
      */
-    const REC21_BIN = 'XBI';
+    public const REC21_BIN = 'XBI';
 
     /**
      * Bucket
      */
-    const REC21_BUCKET = 'XBJ';
+    public const REC21_BUCKET = 'XBJ';
 
     /**
      * Basket
      */
-    const REC21_BASKET = 'XBK';
+    public const REC21_BASKET = 'XBK';
 
     /**
      * Bale, compressed
      */
-    const REC21_BALE_COMPRESSED = 'XBL';
+    public const REC21_BALE_COMPRESSED = 'XBL';
 
     /**
      * Basin
      */
-    const REC21_BASIN = 'XBM';
+    public const REC21_BASIN = 'XBM';
 
     /**
      * Bale, non-compressed
      */
-    const REC21_BALE_NONCOMPRESSED = 'XBN';
+    public const REC21_BALE_NONCOMPRESSED = 'XBN';
 
     /**
      * Bottle, non-protected, cylindrical
      */
-    const REC21_BOTTLE_NONPROTECTED_CYLINDRICAL = 'XBO';
+    public const REC21_BOTTLE_NONPROTECTED_CYLINDRICAL = 'XBO';
 
     /**
      * Balloon, protected
      */
-    const REC21_BALLOON_PROTECTED = 'XBP';
+    public const REC21_BALLOON_PROTECTED = 'XBP';
 
     /**
      * Bottle, protected cylindrical
      */
-    const REC21_BOTTLE_PROTECTED_CYLINDRICAL = 'XBQ';
+    public const REC21_BOTTLE_PROTECTED_CYLINDRICAL = 'XBQ';
 
     /**
      * Bar
      */
-    const REC21_BAR = 'XBR';
+    public const REC21_BAR = 'XBR';
 
     /**
      * Bottle, non-protected, bulbous
      */
-    const REC21_BOTTLE_NONPROTECTED_BULBOUS = 'XBS';
+    public const REC21_BOTTLE_NONPROTECTED_BULBOUS = 'XBS';
 
     /**
      * Bolt
      */
-    const REC21_BOLT = 'XBT';
+    public const REC21_BOLT = 'XBT';
 
     /**
      * Butt
      */
-    const REC21_BUTT = 'XBU';
+    public const REC21_BUTT = 'XBU';
 
     /**
      * Bottle, protected bulbous
      */
-    const REC21_BOTTLE_PROTECTED_BULBOUS = 'XBV';
+    public const REC21_BOTTLE_PROTECTED_BULBOUS = 'XBV';
 
     /**
      * Box, for liquids
      */
-    const REC21_BOX_FOR_LIQUIDS = 'XBW';
+    public const REC21_BOX_FOR_LIQUIDS = 'XBW';
 
     /**
      * Box
      */
-    const REC21_BOX = 'XBX';
+    public const REC21_BOX = 'XBX';
 
     /**
      * Board, in bundle/bunch/truss
      */
-    const REC21_BOARD_IN_BUNDLE_BUNCH_TRUSS = 'XBY';
+    public const REC21_BOARD_IN_BUNDLE_BUNCH_TRUSS = 'XBY';
 
     /**
      * Bars, in bundle/bunch/truss
      */
-    const REC21_BARS_IN_BUNDLE_BUNCH_TRUSS = 'XBZ';
+    public const REC21_BARS_IN_BUNDLE_BUNCH_TRUSS = 'XBZ';
 
     /**
      * Can, rectangular
      */
-    const REC21_CAN_RECTANGULAR = 'XCA';
+    public const REC21_CAN_RECTANGULAR = 'XCA';
 
     /**
      * Crate, beer
      */
-    const REC21_CRATE_BEER = 'XCB';
+    public const REC21_CRATE_BEER = 'XCB';
 
     /**
      * Churn
      */
-    const REC21_CHURN = 'XCC';
+    public const REC21_CHURN = 'XCC';
 
     /**
      * Can, with handle and spout
      */
-    const REC21_CAN_WITH_HANDLE_AND_SPOUT = 'XCD';
+    public const REC21_CAN_WITH_HANDLE_AND_SPOUT = 'XCD';
 
     /**
      * Creel
      */
-    const REC21_CREEL = 'XCE';
+    public const REC21_CREEL = 'XCE';
 
     /**
      * Coffer
      */
-    const REC21_COFFER = 'XCF';
+    public const REC21_COFFER = 'XCF';
 
     /**
      * Cage
      */
-    const REC21_CAGE = 'XCG';
+    public const REC21_CAGE = 'XCG';
 
     /**
      * Chest
      */
-    const REC21_CHEST = 'XCH';
+    public const REC21_CHEST = 'XCH';
 
     /**
      * Canister
      */
-    const REC21_CANISTER = 'XCI';
+    public const REC21_CANISTER = 'XCI';
 
     /**
      * Coffin
      */
-    const REC21_COFFIN = 'XCJ';
+    public const REC21_COFFIN = 'XCJ';
 
     /**
      * Cask
      */
-    const REC21_CASK = 'XCK';
+    public const REC21_CASK = 'XCK';
 
     /**
      * Coil
      */
-    const REC21_COIL = 'XCL';
+    public const REC21_COIL = 'XCL';
 
     /**
      * Card
      */
-    const REC21_CARD = 'XCM';
+    public const REC21_CARD = 'XCM';
 
     /**
      * Container, not otherwise specified as transport equipment
      */
-    const REC21_CONTAINER_NOT_OTHERWISE_SPECIFIED_AS_TRANSPORT_EQUIPMENT = 'XCN';
+    public const REC21_CONTAINER_NOT_OTHERWISE_SPECIFIED_AS_TRANSPORT_EQUIPMENT = 'XCN';
 
     /**
      * Carboy, non-protected
      */
-    const REC21_CARBOY_NONPROTECTED = 'XCO';
+    public const REC21_CARBOY_NONPROTECTED = 'XCO';
 
     /**
      * Carboy, protected
      */
-    const REC21_CARBOY_PROTECTED = 'XCP';
+    public const REC21_CARBOY_PROTECTED = 'XCP';
 
     /**
      * Cartridge
      */
-    const REC21_CARTRIDGE = 'XCQ';
+    public const REC21_CARTRIDGE = 'XCQ';
 
     /**
      * Crate
      */
-    const REC21_CRATE = 'XCR';
+    public const REC21_CRATE = 'XCR';
 
     /**
      * Case
      */
-    const REC21_CASE = 'XCS';
+    public const REC21_CASE = 'XCS';
 
     /**
      * Carton
      */
-    const REC21_CARTON = 'XCT';
+    public const REC21_CARTON = 'XCT';
 
     /**
      * Cup
      */
-    const REC21_CUP = 'XCU';
+    public const REC21_CUP = 'XCU';
 
     /**
      * Cover
      */
-    const REC21_COVER = 'XCV';
+    public const REC21_COVER = 'XCV';
 
     /**
      * Cage, roll
      */
-    const REC21_CAGE_ROLL = 'XCW';
+    public const REC21_CAGE_ROLL = 'XCW';
 
     /**
      * Can, cylindrical
      */
-    const REC21_CAN_CYLINDRICAL = 'XCX';
+    public const REC21_CAN_CYLINDRICAL = 'XCX';
 
     /**
      * Cylinder
      */
-    const REC21_CYLINDER = 'XCY';
+    public const REC21_CYLINDER = 'XCY';
 
     /**
      * Canvas
      */
-    const REC21_CANVAS = 'XCZ';
+    public const REC21_CANVAS = 'XCZ';
 
     /**
      * Crate, multiple layer, plastic
      */
-    const REC21_CRATE_MULTIPLE_LAYER_PLASTIC = 'XDA';
+    public const REC21_CRATE_MULTIPLE_LAYER_PLASTIC = 'XDA';
 
     /**
      * Crate, multiple layer, wooden
      */
-    const REC21_CRATE_MULTIPLE_LAYER_WOODEN = 'XDB';
+    public const REC21_CRATE_MULTIPLE_LAYER_WOODEN = 'XDB';
 
     /**
      * Crate, multiple layer, cardboard
      */
-    const REC21_CRATE_MULTIPLE_LAYER_CARDBOARD = 'XDC';
+    public const REC21_CRATE_MULTIPLE_LAYER_CARDBOARD = 'XDC';
 
     /**
      * Cage, Commonwealth Handling Equipment Pool  (CHEP)
      */
-    const REC21_CAGE_COMMONWEALTH_HANDLING_EQUIPMENT_POOL__CHEP = 'XDG';
+    public const REC21_CAGE_COMMONWEALTH_HANDLING_EQUIPMENT_POOL__CHEP = 'XDG';
 
     /**
      * Box, Commonwealth Handling Equipment Pool (CHEP), Eurobox
      */
-    const REC21_BOX_COMMONWEALTH_HANDLING_EQUIPMENT_POOL_CHEP_EUROBOX = 'XDH';
+    public const REC21_BOX_COMMONWEALTH_HANDLING_EQUIPMENT_POOL_CHEP_EUROBOX = 'XDH';
 
     /**
      * Drum, iron
      */
-    const REC21_DRUM_IRON = 'XDI';
+    public const REC21_DRUM_IRON = 'XDI';
 
     /**
      * Demijohn, non-protected
      */
-    const REC21_DEMIJOHN_NONPROTECTED = 'XDJ';
+    public const REC21_DEMIJOHN_NONPROTECTED = 'XDJ';
 
     /**
      * Crate, bulk, cardboard
      */
-    const REC21_CRATE_BULK_CARDBOARD = 'XDK';
+    public const REC21_CRATE_BULK_CARDBOARD = 'XDK';
 
     /**
      * Crate, bulk, plastic
      */
-    const REC21_CRATE_BULK_PLASTIC = 'XDL';
+    public const REC21_CRATE_BULK_PLASTIC = 'XDL';
 
     /**
      * Crate, bulk, wooden
      */
-    const REC21_CRATE_BULK_WOODEN = 'XDM';
+    public const REC21_CRATE_BULK_WOODEN = 'XDM';
 
     /**
      * Dispenser
      */
-    const REC21_DISPENSER = 'XDN';
+    public const REC21_DISPENSER = 'XDN';
 
     /**
      * Demijohn, protected
      */
-    const REC21_DEMIJOHN_PROTECTED = 'XDP';
+    public const REC21_DEMIJOHN_PROTECTED = 'XDP';
 
     /**
      * Drum
      */
-    const REC21_DRUM = 'XDR';
+    public const REC21_DRUM = 'XDR';
 
     /**
      * Tray, one layer no cover, plastic
      */
-    const REC21_TRAY_ONE_LAYER_NO_COVER_PLASTIC = 'XDS';
+    public const REC21_TRAY_ONE_LAYER_NO_COVER_PLASTIC = 'XDS';
 
     /**
      * Tray, one layer no cover, wooden
      */
-    const REC21_TRAY_ONE_LAYER_NO_COVER_WOODEN = 'XDT';
+    public const REC21_TRAY_ONE_LAYER_NO_COVER_WOODEN = 'XDT';
 
     /**
      * Tray, one layer no cover, polystyrene
      */
-    const REC21_TRAY_ONE_LAYER_NO_COVER_POLYSTYRENE = 'XDU';
+    public const REC21_TRAY_ONE_LAYER_NO_COVER_POLYSTYRENE = 'XDU';
 
     /**
      * Tray, one layer no cover, cardboard
      */
-    const REC21_TRAY_ONE_LAYER_NO_COVER_CARDBOARD = 'XDV';
+    public const REC21_TRAY_ONE_LAYER_NO_COVER_CARDBOARD = 'XDV';
 
     /**
      * Tray, two layers no cover, plastic tray
      */
-    const REC21_TRAY_TWO_LAYERS_NO_COVER_PLASTIC_TRAY = 'XDW';
+    public const REC21_TRAY_TWO_LAYERS_NO_COVER_PLASTIC_TRAY = 'XDW';
 
     /**
      * Tray, two layers no cover, wooden
      */
-    const REC21_TRAY_TWO_LAYERS_NO_COVER_WOODEN = 'XDX';
+    public const REC21_TRAY_TWO_LAYERS_NO_COVER_WOODEN = 'XDX';
 
     /**
      * Tray, two layers no cover, cardboard
      */
-    const REC21_TRAY_TWO_LAYERS_NO_COVER_CARDBOARD = 'XDY';
+    public const REC21_TRAY_TWO_LAYERS_NO_COVER_CARDBOARD = 'XDY';
 
     /**
      * Bag, plastic
      */
-    const REC21_BAG_PLASTIC = 'XEC';
+    public const REC21_BAG_PLASTIC = 'XEC';
 
     /**
      * Case, with pallet base
      */
-    const REC21_CASE_WITH_PALLET_BASE = 'XED';
+    public const REC21_CASE_WITH_PALLET_BASE = 'XED';
 
     /**
      * Case, with pallet base, wooden
      */
-    const REC21_CASE_WITH_PALLET_BASE_WOODEN = 'XEE';
+    public const REC21_CASE_WITH_PALLET_BASE_WOODEN = 'XEE';
 
     /**
      * Case, with pallet base, cardboard
      */
-    const REC21_CASE_WITH_PALLET_BASE_CARDBOARD = 'XEF';
+    public const REC21_CASE_WITH_PALLET_BASE_CARDBOARD = 'XEF';
 
     /**
      * Case, with pallet base, plastic
      */
-    const REC21_CASE_WITH_PALLET_BASE_PLASTIC = 'XEG';
+    public const REC21_CASE_WITH_PALLET_BASE_PLASTIC = 'XEG';
 
     /**
      * Case, with pallet base, metal
      */
-    const REC21_CASE_WITH_PALLET_BASE_METAL = 'XEH';
+    public const REC21_CASE_WITH_PALLET_BASE_METAL = 'XEH';
 
     /**
      * Case, isothermic
      */
-    const REC21_CASE_ISOTHERMIC = 'XEI';
+    public const REC21_CASE_ISOTHERMIC = 'XEI';
 
     /**
      * Envelope
      */
-    const REC21_ENVELOPE = 'XEN';
+    public const REC21_ENVELOPE = 'XEN';
 
     /**
      * Flexibag
      */
-    const REC21_FLEXIBAG = 'XFB';
+    public const REC21_FLEXIBAG = 'XFB';
 
     /**
      * Crate, fruit
      */
-    const REC21_CRATE_FRUIT = 'XFC';
+    public const REC21_CRATE_FRUIT = 'XFC';
 
     /**
      * Crate, framed
      */
-    const REC21_CRATE_FRAMED = 'XFD';
+    public const REC21_CRATE_FRAMED = 'XFD';
 
     /**
      * Flexitank
      */
-    const REC21_FLEXITANK = 'XFE';
+    public const REC21_FLEXITANK = 'XFE';
 
     /**
      * Firkin
      */
-    const REC21_FIRKIN = 'XFI';
+    public const REC21_FIRKIN = 'XFI';
 
     /**
      * Flask
      */
-    const REC21_FLASK = 'XFL';
+    public const REC21_FLASK = 'XFL';
 
     /**
      * Footlocker
      */
-    const REC21_FOOTLOCKER = 'XFO';
+    public const REC21_FOOTLOCKER = 'XFO';
 
     /**
      * Filmpack
      */
-    const REC21_FILMPACK = 'XFP';
+    public const REC21_FILMPACK = 'XFP';
 
     /**
      * Frame
      */
-    const REC21_FRAME = 'XFR';
+    public const REC21_FRAME = 'XFR';
 
     /**
      * Foodtainer
      */
-    const REC21_FOODTAINER = 'XFT';
+    public const REC21_FOODTAINER = 'XFT';
 
     /**
      * Cart, flatbed
      */
-    const REC21_CART_FLATBED = 'XFW';
+    public const REC21_CART_FLATBED = 'XFW';
 
     /**
      * Bag, flexible container
      */
-    const REC21_BAG_FLEXIBLE_CONTAINER = 'XFX';
+    public const REC21_BAG_FLEXIBLE_CONTAINER = 'XFX';
 
     /**
      * Bottle, gas
      */
-    const REC21_BOTTLE_GAS = 'XGB';
+    public const REC21_BOTTLE_GAS = 'XGB';
 
     /**
      * Girder
      */
-    const REC21_GIRDER = 'XGI';
+    public const REC21_GIRDER = 'XGI';
 
     /**
      * Container, gallon
      */
-    const REC21_CONTAINER_GALLON = 'XGL';
+    public const REC21_CONTAINER_GALLON = 'XGL';
 
     /**
      * Receptacle, glass
      */
-    const REC21_RECEPTACLE_GLASS = 'XGR';
+    public const REC21_RECEPTACLE_GLASS = 'XGR';
 
     /**
      * Tray, containing horizontally stacked flat items
      */
-    const REC21_TRAY_CONTAINING_HORIZONTALLY_STACKED_FLAT_ITEMS = 'XGU';
+    public const REC21_TRAY_CONTAINING_HORIZONTALLY_STACKED_FLAT_ITEMS = 'XGU';
 
     /**
      * Bag, gunny
      */
-    const REC21_BAG_GUNNY = 'XGY';
+    public const REC21_BAG_GUNNY = 'XGY';
 
     /**
      * Girders, in bundle/bunch/truss
      */
-    const REC21_GIRDERS_IN_BUNDLE_BUNCH_TRUSS = 'XGZ';
+    public const REC21_GIRDERS_IN_BUNDLE_BUNCH_TRUSS = 'XGZ';
 
     /**
      * Basket, with handle, plastic
      */
-    const REC21_BASKET_WITH_HANDLE_PLASTIC = 'XHA';
+    public const REC21_BASKET_WITH_HANDLE_PLASTIC = 'XHA';
 
     /**
      * Basket, with handle, wooden
      */
-    const REC21_BASKET_WITH_HANDLE_WOODEN = 'XHB';
+    public const REC21_BASKET_WITH_HANDLE_WOODEN = 'XHB';
 
     /**
      * Basket, with handle, cardboard
      */
-    const REC21_BASKET_WITH_HANDLE_CARDBOARD = 'XHC';
+    public const REC21_BASKET_WITH_HANDLE_CARDBOARD = 'XHC';
 
     /**
      * Hogshead
      */
-    const REC21_HOGSHEAD = 'XHG';
+    public const REC21_HOGSHEAD = 'XHG';
 
     /**
      * Hanger
      */
-    const REC21_HANGER = 'XHN';
+    public const REC21_HANGER = 'XHN';
 
     /**
      * Hamper
      */
-    const REC21_HAMPER = 'XHR';
+    public const REC21_HAMPER = 'XHR';
 
     /**
      * Package, display, wooden
      */
-    const REC21_PACKAGE_DISPLAY_WOODEN = 'XIA';
+    public const REC21_PACKAGE_DISPLAY_WOODEN = 'XIA';
 
     /**
      * Package, display, cardboard
      */
-    const REC21_PACKAGE_DISPLAY_CARDBOARD = 'XIB';
+    public const REC21_PACKAGE_DISPLAY_CARDBOARD = 'XIB';
 
     /**
      * Package, display, plastic
      */
-    const REC21_PACKAGE_DISPLAY_PLASTIC = 'XIC';
+    public const REC21_PACKAGE_DISPLAY_PLASTIC = 'XIC';
 
     /**
      * Package, display, metal
      */
-    const REC21_PACKAGE_DISPLAY_METAL = 'XID';
+    public const REC21_PACKAGE_DISPLAY_METAL = 'XID';
 
     /**
      * Package, show
      */
-    const REC21_PACKAGE_SHOW = 'XIE';
+    public const REC21_PACKAGE_SHOW = 'XIE';
 
     /**
      * Package, flow
      */
-    const REC21_PACKAGE_FLOW = 'XIF';
+    public const REC21_PACKAGE_FLOW = 'XIF';
 
     /**
      * Package, paper wrapped
      */
-    const REC21_PACKAGE_PAPER_WRAPPED = 'XIG';
+    public const REC21_PACKAGE_PAPER_WRAPPED = 'XIG';
 
     /**
      * Drum, plastic
      */
-    const REC21_DRUM_PLASTIC = 'XIH';
+    public const REC21_DRUM_PLASTIC = 'XIH';
 
     /**
      * Package, cardboard, with bottle grip-holes
      */
-    const REC21_PACKAGE_CARDBOARD_WITH_BOTTLE_GRIPHOLES = 'XIK';
+    public const REC21_PACKAGE_CARDBOARD_WITH_BOTTLE_GRIPHOLES = 'XIK';
 
     /**
      * Tray, rigid, lidded stackable (CEN TS 14482:2002)
      */
-    const REC21_TRAY_RIGID_LIDDED_STACKABLE_CEN_TS_144822002 = 'XIL';
+    public const REC21_TRAY_RIGID_LIDDED_STACKABLE_CEN_TS_144822002 = 'XIL';
 
     /**
      * Ingot
      */
-    const REC21_INGOT = 'XIN';
+    public const REC21_INGOT = 'XIN';
 
     /**
      * Ingots, in bundle/bunch/truss
      */
-    const REC21_INGOTS_IN_BUNDLE_BUNCH_TRUSS = 'XIZ';
+    public const REC21_INGOTS_IN_BUNDLE_BUNCH_TRUSS = 'XIZ';
 
     /**
      * Bag, jumbo
      */
-    const REC21_BAG_JUMBO = 'XJB';
+    public const REC21_BAG_JUMBO = 'XJB';
 
     /**
      * Jerrican, rectangular
      */
-    const REC21_JERRICAN_RECTANGULAR = 'XJC';
+    public const REC21_JERRICAN_RECTANGULAR = 'XJC';
 
     /**
      * Jug
      */
-    const REC21_JUG = 'XJG';
+    public const REC21_JUG = 'XJG';
 
     /**
      * Jar
      */
-    const REC21_JAR = 'XJR';
+    public const REC21_JAR = 'XJR';
 
     /**
      * Jutebag
      */
-    const REC21_JUTEBAG = 'XJT';
+    public const REC21_JUTEBAG = 'XJT';
 
     /**
      * Jerrican, cylindrical
      */
-    const REC21_JERRICAN_CYLINDRICAL = 'XJY';
+    public const REC21_JERRICAN_CYLINDRICAL = 'XJY';
 
     /**
      * Keg
      */
-    const REC21_KEG = 'XKG';
+    public const REC21_KEG = 'XKG';
 
     /**
      * Kit
      */
-    const REC21_KIT = 'XKI';
+    public const REC21_KIT = 'XKI';
 
     /**
      * Luggage
      */
-    const REC21_LUGGAGE = 'XLE';
+    public const REC21_LUGGAGE = 'XLE';
 
     /**
      * Log
      */
-    const REC21_LOG = 'XLG';
+    public const REC21_LOG = 'XLG';
 
     /**
      * Lot
      */
-    const REC21_LOT = 'XLT';
+    public const REC21_LOT = 'XLT';
 
     /**
      * Lug
      */
-    const REC21_LUG = 'XLU';
+    public const REC21_LUG = 'XLU';
 
     /**
      * Liftvan
      */
-    const REC21_LIFTVAN = 'XLV';
+    public const REC21_LIFTVAN = 'XLV';
 
     /**
      * Logs, in bundle/bunch/truss
      */
-    const REC21_LOGS_IN_BUNDLE_BUNCH_TRUSS = 'XLZ';
+    public const REC21_LOGS_IN_BUNDLE_BUNCH_TRUSS = 'XLZ';
 
     /**
      * Crate, metal
      */
-    const REC21_CRATE_METAL = 'XMA';
+    public const REC21_CRATE_METAL = 'XMA';
 
     /**
      * Bag, multiply
      */
-    const REC21_BAG_MULTIPLY = 'XMB';
+    public const REC21_BAG_MULTIPLY = 'XMB';
 
     /**
      * Crate, milk
      */
-    const REC21_CRATE_MILK = 'XMC';
+    public const REC21_CRATE_MILK = 'XMC';
 
     /**
      * Container, metal
      */
-    const REC21_CONTAINER_METAL = 'XME';
+    public const REC21_CONTAINER_METAL = 'XME';
 
     /**
      * Receptacle, metal
      */
-    const REC21_RECEPTACLE_METAL = 'XMR';
+    public const REC21_RECEPTACLE_METAL = 'XMR';
 
     /**
      * Sack, multi-wall
      */
-    const REC21_SACK_MULTIWALL = 'XMS';
+    public const REC21_SACK_MULTIWALL = 'XMS';
 
     /**
      * Mat
      */
-    const REC21_MAT = 'XMT';
+    public const REC21_MAT = 'XMT';
 
     /**
      * Receptacle, plastic wrapped
      */
-    const REC21_RECEPTACLE_PLASTIC_WRAPPED = 'XMW';
+    public const REC21_RECEPTACLE_PLASTIC_WRAPPED = 'XMW';
 
     /**
      * Matchbox
      */
-    const REC21_MATCHBOX = 'XMX';
+    public const REC21_MATCHBOX = 'XMX';
 
     /**
      * Not available
      */
-    const REC21_NOT_AVAILABLE = 'XNA';
+    public const REC21_NOT_AVAILABLE = 'XNA';
 
     /**
      * Unpacked or unpackaged
      */
-    const REC21_UNPACKED_OR_UNPACKAGED = 'XNE';
+    public const REC21_UNPACKED_OR_UNPACKAGED = 'XNE';
 
     /**
      * Unpacked or unpackaged, single unit
      */
-    const REC21_UNPACKED_OR_UNPACKAGED_SINGLE_UNIT = 'XNF';
+    public const REC21_UNPACKED_OR_UNPACKAGED_SINGLE_UNIT = 'XNF';
 
     /**
      * Unpacked or unpackaged, multiple units
      */
-    const REC21_UNPACKED_OR_UNPACKAGED_MULTIPLE_UNITS = 'XNG';
+    public const REC21_UNPACKED_OR_UNPACKAGED_MULTIPLE_UNITS = 'XNG';
 
     /**
      * Nest
      */
-    const REC21_NEST = 'XNS';
+    public const REC21_NEST = 'XNS';
 
     /**
      * Net
      */
-    const REC21_NET = 'XNT';
+    public const REC21_NET = 'XNT';
 
     /**
      * Net, tube, plastic
      */
-    const REC21_NET_TUBE_PLASTIC = 'XNU';
+    public const REC21_NET_TUBE_PLASTIC = 'XNU';
 
     /**
      * Net, tube, textile
      */
-    const REC21_NET_TUBE_TEXTILE = 'XNV';
+    public const REC21_NET_TUBE_TEXTILE = 'XNV';
 
     /**
      * Pallet, CHEP 40 cm x 60 cm
      */
-    const REC21_PALLET_CHEP_40_CM_X_60_CM = 'XOA';
+    public const REC21_PALLET_CHEP_40_CM_X_60_CM = 'XOA';
 
     /**
      * Pallet, CHEP 80 cm x 120 cm
      */
-    const REC21_PALLET_CHEP_80_CM_X_120_CM = 'XOB';
+    public const REC21_PALLET_CHEP_80_CM_X_120_CM = 'XOB';
 
     /**
      * Pallet, CHEP 100 cm x 120 cm
      */
-    const REC21_PALLET_CHEP_100_CM_X_120_CM = 'XOC';
+    public const REC21_PALLET_CHEP_100_CM_X_120_CM = 'XOC';
 
     /**
      * Pallet, AS 4068-1993
      */
-    const REC21_PALLET_AS_40681993 = 'XOD';
+    public const REC21_PALLET_AS_40681993 = 'XOD';
 
     /**
      * Pallet, ISO T11
      */
-    const REC21_PALLET_ISO_T11 = 'XOE';
+    public const REC21_PALLET_ISO_T11 = 'XOE';
 
     /**
      * Platform, unspecified weight or dimension
      */
-    const REC21_PLATFORM_UNSPECIFIED_WEIGHT_OR_DIMENSION = 'XOF';
+    public const REC21_PLATFORM_UNSPECIFIED_WEIGHT_OR_DIMENSION = 'XOF';
 
     /**
      * Block
      */
-    const REC21_BLOCK = 'XOK';
+    public const REC21_BLOCK = 'XOK';
 
     /**
      * Octabin
      */
-    const REC21_OCTABIN = 'XOT';
+    public const REC21_OCTABIN = 'XOT';
 
     /**
      * Container, outer
      */
-    const REC21_CONTAINER_OUTER = 'XOU';
+    public const REC21_CONTAINER_OUTER = 'XOU';
 
     /**
      * Pan
      */
-    const REC21_PAN = 'XP2';
+    public const REC21_PAN = 'XP2';
 
     /**
      * Packet
      */
-    const REC21_PACKET = 'XPA';
+    public const REC21_PACKET = 'XPA';
 
     /**
      * Pallet, box Combined open-ended box and pallet
      */
-    const REC21_PALLET_BOX_COMBINED_OPENENDED_BOX_AND_PALLET = 'XPB';
+    public const REC21_PALLET_BOX_COMBINED_OPENENDED_BOX_AND_PALLET = 'XPB';
 
     /**
      * Parcel
      */
-    const REC21_PARCEL = 'XPC';
+    public const REC21_PARCEL = 'XPC';
 
     /**
      * Pallet, modular, collars 80cms * 100cms
      */
-    const REC21_PALLET_MODULAR_COLLARS_80CMS__100CMS = 'XPD';
+    public const REC21_PALLET_MODULAR_COLLARS_80CMS__100CMS = 'XPD';
 
     /**
      * Pallet, modular, collars 80cms * 120cms
      */
-    const REC21_PALLET_MODULAR_COLLARS_80CMS__120CMS = 'XPE';
+    public const REC21_PALLET_MODULAR_COLLARS_80CMS__120CMS = 'XPE';
 
     /**
      * Pen
      */
-    const REC21_PEN = 'XPF';
+    public const REC21_PEN = 'XPF';
 
     /**
      * Plate
      */
-    const REC21_PLATE = 'XPG';
+    public const REC21_PLATE = 'XPG';
 
     /**
      * Pitcher
      */
-    const REC21_PITCHER = 'XPH';
+    public const REC21_PITCHER = 'XPH';
 
     /**
      * Pipe
      */
-    const REC21_PIPE = 'XPI';
+    public const REC21_PIPE = 'XPI';
 
     /**
      * Punnet
      */
-    const REC21_PUNNET = 'XPJ';
+    public const REC21_PUNNET = 'XPJ';
 
     /**
      * Package
      */
-    const REC21_PACKAGE = 'XPK';
+    public const REC21_PACKAGE = 'XPK';
 
     /**
      * Pail
      */
-    const REC21_PAIL = 'XPL';
+    public const REC21_PAIL = 'XPL';
 
     /**
      * Plank
      */
-    const REC21_PLANK = 'XPN';
+    public const REC21_PLANK = 'XPN';
 
     /**
      * Pouch
      */
-    const REC21_POUCH = 'XPO';
+    public const REC21_POUCH = 'XPO';
 
     /**
      * Piece
      */
-    const REC21_PIECE = 'XPP';
+    public const REC21_PIECE = 'XPP';
 
     /**
      * Receptacle, plastic
      */
-    const REC21_RECEPTACLE_PLASTIC = 'XPR';
+    public const REC21_RECEPTACLE_PLASTIC = 'XPR';
 
     /**
      * Pot
      */
-    const REC21_POT = 'XPT';
+    public const REC21_POT = 'XPT';
 
     /**
      * Tray
      */
-    const REC21_TRAY = 'XPU';
+    public const REC21_TRAY = 'XPU';
 
     /**
      * Pipes, in bundle/bunch/truss
      */
-    const REC21_PIPES_IN_BUNDLE_BUNCH_TRUSS = 'XPV';
+    public const REC21_PIPES_IN_BUNDLE_BUNCH_TRUSS = 'XPV';
 
     /**
      * Pallet
      */
-    const REC21_PALLET = 'XPX';
+    public const REC21_PALLET = 'XPX';
 
     /**
      * Plates, in bundle/bunch/truss
      */
-    const REC21_PLATES_IN_BUNDLE_BUNCH_TRUSS = 'XPY';
+    public const REC21_PLATES_IN_BUNDLE_BUNCH_TRUSS = 'XPY';
 
     /**
      * Planks, in bundle/bunch/truss
      */
-    const REC21_PLANKS_IN_BUNDLE_BUNCH_TRUSS = 'XPZ';
+    public const REC21_PLANKS_IN_BUNDLE_BUNCH_TRUSS = 'XPZ';
 
     /**
      * Drum, steel, non-removable head
      */
-    const REC21_DRUM_STEEL_NONREMOVABLE_HEAD = 'XQA';
+    public const REC21_DRUM_STEEL_NONREMOVABLE_HEAD = 'XQA';
 
     /**
      * Drum, steel, removable head
      */
-    const REC21_DRUM_STEEL_REMOVABLE_HEAD = 'XQB';
+    public const REC21_DRUM_STEEL_REMOVABLE_HEAD = 'XQB';
 
     /**
      * Drum, aluminium, non-removable head
      */
-    const REC21_DRUM_ALUMINIUM_NONREMOVABLE_HEAD = 'XQC';
+    public const REC21_DRUM_ALUMINIUM_NONREMOVABLE_HEAD = 'XQC';
 
     /**
      * Drum, aluminium, removable head
      */
-    const REC21_DRUM_ALUMINIUM_REMOVABLE_HEAD = 'XQD';
+    public const REC21_DRUM_ALUMINIUM_REMOVABLE_HEAD = 'XQD';
 
     /**
      * Drum, plastic, non-removable head
      */
-    const REC21_DRUM_PLASTIC_NONREMOVABLE_HEAD = 'XQF';
+    public const REC21_DRUM_PLASTIC_NONREMOVABLE_HEAD = 'XQF';
 
     /**
      * Drum, plastic, removable head
      */
-    const REC21_DRUM_PLASTIC_REMOVABLE_HEAD = 'XQG';
+    public const REC21_DRUM_PLASTIC_REMOVABLE_HEAD = 'XQG';
 
     /**
      * Barrel, wooden, bung type
      */
-    const REC21_BARREL_WOODEN_BUNG_TYPE = 'XQH';
+    public const REC21_BARREL_WOODEN_BUNG_TYPE = 'XQH';
 
     /**
      * Barrel, wooden, removable head
      */
-    const REC21_BARREL_WOODEN_REMOVABLE_HEAD = 'XQJ';
+    public const REC21_BARREL_WOODEN_REMOVABLE_HEAD = 'XQJ';
 
     /**
      * Jerrican, steel, non-removable head
      */
-    const REC21_JERRICAN_STEEL_NONREMOVABLE_HEAD = 'XQK';
+    public const REC21_JERRICAN_STEEL_NONREMOVABLE_HEAD = 'XQK';
 
     /**
      * Jerrican, steel, removable head
      */
-    const REC21_JERRICAN_STEEL_REMOVABLE_HEAD = 'XQL';
+    public const REC21_JERRICAN_STEEL_REMOVABLE_HEAD = 'XQL';
 
     /**
      * Jerrican, plastic, non-removable head
      */
-    const REC21_JERRICAN_PLASTIC_NONREMOVABLE_HEAD = 'XQM';
+    public const REC21_JERRICAN_PLASTIC_NONREMOVABLE_HEAD = 'XQM';
 
     /**
      * Jerrican, plastic, removable head
      */
-    const REC21_JERRICAN_PLASTIC_REMOVABLE_HEAD = 'XQN';
+    public const REC21_JERRICAN_PLASTIC_REMOVABLE_HEAD = 'XQN';
 
     /**
      * Box, wooden, natural wood, ordinary
      */
-    const REC21_BOX_WOODEN_NATURAL_WOOD_ORDINARY = 'XQP';
+    public const REC21_BOX_WOODEN_NATURAL_WOOD_ORDINARY = 'XQP';
 
     /**
      * Box, wooden, natural wood, with sift proof walls
      */
-    const REC21_BOX_WOODEN_NATURAL_WOOD_WITH_SIFT_PROOF_WALLS = 'XQQ';
+    public const REC21_BOX_WOODEN_NATURAL_WOOD_WITH_SIFT_PROOF_WALLS = 'XQQ';
 
     /**
      * Box, plastic, expanded
      */
-    const REC21_BOX_PLASTIC_EXPANDED = 'XQR';
+    public const REC21_BOX_PLASTIC_EXPANDED = 'XQR';
 
     /**
      * Box, plastic, solid
      */
-    const REC21_BOX_PLASTIC_SOLID = 'XQS';
+    public const REC21_BOX_PLASTIC_SOLID = 'XQS';
 
     /**
      * Rod
      */
-    const REC21_ROD = 'XRD';
+    public const REC21_ROD = 'XRD';
 
     /**
      * Ring
      */
-    const REC21_RING = 'XRG';
+    public const REC21_RING = 'XRG';
 
     /**
      * Rack, clothing hanger
      */
-    const REC21_RACK_CLOTHING_HANGER = 'XRJ';
+    public const REC21_RACK_CLOTHING_HANGER = 'XRJ';
 
     /**
      * Rack
      */
-    const REC21_RACK = 'XRK';
+    public const REC21_RACK = 'XRK';
 
     /**
      * Reel
      */
-    const REC21_REEL = 'XRL';
+    public const REC21_REEL = 'XRL';
 
     /**
      * Roll
      */
-    const REC21_ROLL = 'XRO';
+    public const REC21_ROLL = 'XRO';
 
     /**
      * Rednet
      */
-    const REC21_REDNET = 'XRT';
+    public const REC21_REDNET = 'XRT';
 
     /**
      * Rods, in bundle/bunch/truss
      */
-    const REC21_RODS_IN_BUNDLE_BUNCH_TRUSS = 'XRZ';
+    public const REC21_RODS_IN_BUNDLE_BUNCH_TRUSS = 'XRZ';
 
     /**
      * Sack
      */
-    const REC21_SACK = 'XSA';
+    public const REC21_SACK = 'XSA';
 
     /**
      * Slab
      */
-    const REC21_SLAB = 'XSB';
+    public const REC21_SLAB = 'XSB';
 
     /**
      * Crate, shallow
      */
-    const REC21_CRATE_SHALLOW = 'XSC';
+    public const REC21_CRATE_SHALLOW = 'XSC';
 
     /**
      * Spindle
      */
-    const REC21_SPINDLE = 'XSD';
+    public const REC21_SPINDLE = 'XSD';
 
     /**
      * Sea-chest
      */
-    const REC21_SEACHEST = 'XSE';
+    public const REC21_SEACHEST = 'XSE';
 
     /**
      * Sachet
      */
-    const REC21_SACHET = 'XSH';
+    public const REC21_SACHET = 'XSH';
 
     /**
      * Skid
      */
-    const REC21_SKID = 'XSI';
+    public const REC21_SKID = 'XSI';
 
     /**
      * Case, skeleton
      */
-    const REC21_CASE_SKELETON = 'XSK';
+    public const REC21_CASE_SKELETON = 'XSK';
 
     /**
      * Slipsheet
      */
-    const REC21_SLIPSHEET = 'XSL';
+    public const REC21_SLIPSHEET = 'XSL';
 
     /**
      * Sheetmetal
      */
-    const REC21_SHEETMETAL = 'XSM';
+    public const REC21_SHEETMETAL = 'XSM';
 
     /**
      * Spool
      */
-    const REC21_SPOOL = 'XSO';
+    public const REC21_SPOOL = 'XSO';
 
     /**
      * Sheet, plastic wrapping
      */
-    const REC21_SHEET_PLASTIC_WRAPPING = 'XSP';
+    public const REC21_SHEET_PLASTIC_WRAPPING = 'XSP';
 
     /**
      * Case, steel
      */
-    const REC21_CASE_STEEL = 'XSS';
+    public const REC21_CASE_STEEL = 'XSS';
 
     /**
      * Sheet
      */
-    const REC21_SHEET = 'XST';
+    public const REC21_SHEET = 'XST';
 
     /**
      * Suitcase
      */
-    const REC21_SUITCASE = 'XSU';
+    public const REC21_SUITCASE = 'XSU';
 
     /**
      * Envelope, steel
      */
-    const REC21_ENVELOPE_STEEL = 'XSV';
+    public const REC21_ENVELOPE_STEEL = 'XSV';
 
     /**
      * Shrinkwrapped
      */
-    const REC21_SHRINKWRAPPED = 'XSW';
+    public const REC21_SHRINKWRAPPED = 'XSW';
 
     /**
      * Sleeve
      */
-    const REC21_SLEEVE = 'XSY';
+    public const REC21_SLEEVE = 'XSY';
 
     /**
      * Sheets, in bundle/bunch/truss
      */
-    const REC21_SHEETS_IN_BUNDLE_BUNCH_TRUSS = 'XSZ';
+    public const REC21_SHEETS_IN_BUNDLE_BUNCH_TRUSS = 'XSZ';
 
     /**
      * Tablet
      */
-    const REC21_TABLET = 'XT1';
+    public const REC21_TABLET = 'XT1';
 
     /**
      * Tub
      */
-    const REC21_TUB = 'XTB';
+    public const REC21_TUB = 'XTB';
 
     /**
      * Tea-chest
      */
-    const REC21_TEACHEST = 'XTC';
+    public const REC21_TEACHEST = 'XTC';
 
     /**
      * Tube, collapsible
      */
-    const REC21_TUBE_COLLAPSIBLE = 'XTD';
+    public const REC21_TUBE_COLLAPSIBLE = 'XTD';
 
     /**
      * Tyre
      */
-    const REC21_TYRE = 'XTE';
+    public const REC21_TYRE = 'XTE';
 
     /**
      * Tank container, generic
      */
-    const REC21_TANK_CONTAINER_GENERIC = 'XTG';
+    public const REC21_TANK_CONTAINER_GENERIC = 'XTG';
 
     /**
      * Tierce
      */
-    const REC21_TIERCE = 'XTI';
+    public const REC21_TIERCE = 'XTI';
 
     /**
      * Tank, rectangular
      */
-    const REC21_TANK_RECTANGULAR = 'XTK';
+    public const REC21_TANK_RECTANGULAR = 'XTK';
 
     /**
      * Tub, with lid
      */
-    const REC21_TUB_WITH_LID = 'XTL';
+    public const REC21_TUB_WITH_LID = 'XTL';
 
     /**
      * Tin
      */
-    const REC21_TIN = 'XTN';
+    public const REC21_TIN = 'XTN';
 
     /**
      * Tun
      */
-    const REC21_TUN = 'XTO';
+    public const REC21_TUN = 'XTO';
 
     /**
      * Trunk
      */
-    const REC21_TRUNK = 'XTR';
+    public const REC21_TRUNK = 'XTR';
 
     /**
      * Truss
      */
-    const REC21_TRUSS = 'XTS';
+    public const REC21_TRUSS = 'XTS';
 
     /**
      * Bag, tote
      */
-    const REC21_BAG_TOTE = 'XTT';
+    public const REC21_BAG_TOTE = 'XTT';
 
     /**
      * Tube
      */
-    const REC21_TUBE = 'XTU';
+    public const REC21_TUBE = 'XTU';
 
     /**
      * Tube, with nozzle
      */
-    const REC21_TUBE_WITH_NOZZLE = 'XTV';
+    public const REC21_TUBE_WITH_NOZZLE = 'XTV';
 
     /**
      * Pallet, triwall
      */
-    const REC21_PALLET_TRIWALL = 'XTW';
+    public const REC21_PALLET_TRIWALL = 'XTW';
 
     /**
      * Tank, cylindrical
      */
-    const REC21_TANK_CYLINDRICAL = 'XTY';
+    public const REC21_TANK_CYLINDRICAL = 'XTY';
 
     /**
      * Tubes, in bundle/bunch/truss
      */
-    const REC21_TUBES_IN_BUNDLE_BUNCH_TRUSS = 'XTZ';
+    public const REC21_TUBES_IN_BUNDLE_BUNCH_TRUSS = 'XTZ';
 
     /**
      * Uncaged
      */
-    const REC21_UNCAGED = 'XUC';
+    public const REC21_UNCAGED = 'XUC';
 
     /**
      * Unit
      */
-    const REC21_UNIT = 'XUN';
+    public const REC21_UNIT = 'XUN';
 
     /**
      * Vat
      */
-    const REC21_VAT = 'XVA';
+    public const REC21_VAT = 'XVA';
 
     /**
      * Bulk, gas (at 1031 mbar and 15Â°C)
      */
-    const REC21_BULK_GAS_AT_1031_MBAR_AND_15C = 'XVG';
+    public const REC21_BULK_GAS_AT_1031_MBAR_AND_15C = 'XVG';
 
     /**
      * Vial
      */
-    const REC21_VIAL = 'XVI';
+    public const REC21_VIAL = 'XVI';
 
     /**
      * Vanpack
      */
-    const REC21_VANPACK = 'XVK';
+    public const REC21_VANPACK = 'XVK';
 
     /**
      * Bulk, liquid
      */
-    const REC21_BULK_LIQUID = 'XVL';
+    public const REC21_BULK_LIQUID = 'XVL';
 
     /**
      * Bulk, solid, large particles (ânodulesâ)
      */
-    const REC21_BULK_SOLID_LARGE_PARTICLES_NODULES = 'XVO';
+    public const REC21_BULK_SOLID_LARGE_PARTICLES_NODULES = 'XVO';
 
     /**
      * Vacuum-packed
      */
-    const REC21_VACUUMPACKED = 'XVP';
+    public const REC21_VACUUMPACKED = 'XVP';
 
     /**
      * Bulk, liquefied gas (at abnormal temperature/pressure)
      */
-    const REC21_BULK_LIQUEFIED_GAS_AT_ABNORMAL_TEMPERATURE_PRESSURE = 'XVQ';
+    public const REC21_BULK_LIQUEFIED_GAS_AT_ABNORMAL_TEMPERATURE_PRESSURE = 'XVQ';
 
     /**
      * Vehicle
      */
-    const REC21_VEHICLE = 'XVN';
+    public const REC21_VEHICLE = 'XVN';
 
     /**
      * Bulk, solid, granular particles (âgrainsâ)
      */
-    const REC21_BULK_SOLID_GRANULAR_PARTICLES_GRAINS = 'XVR';
+    public const REC21_BULK_SOLID_GRANULAR_PARTICLES_GRAINS = 'XVR';
 
     /**
      * Bulk, scrap metal
      */
-    const REC21_BULK_SCRAP_METAL = 'XVS';
+    public const REC21_BULK_SCRAP_METAL = 'XVS';
 
     /**
      * Bulk, solid, fine particles (âpowdersâ)
      */
-    const REC21_BULK_SOLID_FINE_PARTICLES_POWDERS = 'XVY';
+    public const REC21_BULK_SOLID_FINE_PARTICLES_POWDERS = 'XVY';
 
     /**
      * Intermediate bulk container
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER = 'XWA';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER = 'XWA';
 
     /**
      * Wickerbottle
      */
-    const REC21_WICKERBOTTLE = 'XWB';
+    public const REC21_WICKERBOTTLE = 'XWB';
 
     /**
      * Intermediate bulk container, steel
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_STEEL = 'XWC';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_STEEL = 'XWC';
 
     /**
      * Intermediate bulk container, aluminium
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_ALUMINIUM = 'XWD';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_ALUMINIUM = 'XWD';
 
     /**
      * Intermediate bulk container, metal
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_METAL = 'XWF';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_METAL = 'XWF';
 
     /**
      * Intermediate bulk container, steel, pressurised > 10 kpa
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_STEEL_PRESSURISED__10_KPA = 'XWG';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_STEEL_PRESSURISED__10_KPA = 'XWG';
 
     /**
      * Intermediate bulk container, aluminium, pressurised > 10 kpa
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_ALUMINIUM_PRESSURISED__10_KPA = 'XWH';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_ALUMINIUM_PRESSURISED__10_KPA = 'XWH';
 
     /**
      * Intermediate bulk container, metal, pressure 10 kpa
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_METAL_PRESSURE_10_KPA = 'XWJ';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_METAL_PRESSURE_10_KPA = 'XWJ';
 
     /**
      * Intermediate bulk container, steel, liquid
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_STEEL_LIQUID = 'XWK';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_STEEL_LIQUID = 'XWK';
 
     /**
      * Intermediate bulk container, aluminium, liquid
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_ALUMINIUM_LIQUID = 'XWL';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_ALUMINIUM_LIQUID = 'XWL';
 
     /**
      * Intermediate bulk container, metal, liquid
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_METAL_LIQUID = 'XWM';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_METAL_LIQUID = 'XWM';
 
     /**
      * Intermediate bulk container, woven plastic, without coat/liner
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_WOVEN_PLASTIC_WITHOUT_COAT_LINER = 'XWN';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_WOVEN_PLASTIC_WITHOUT_COAT_LINER = 'XWN';
 
     /**
      * Intermediate bulk container, woven plastic, coated
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_WOVEN_PLASTIC_COATED = 'XWP';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_WOVEN_PLASTIC_COATED = 'XWP';
 
     /**
      * Intermediate bulk container, woven plastic, with liner
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_WOVEN_PLASTIC_WITH_LINER = 'XWQ';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_WOVEN_PLASTIC_WITH_LINER = 'XWQ';
 
     /**
      * Intermediate bulk container, woven plastic, coated and liner
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_WOVEN_PLASTIC_COATED_AND_LINER = 'XWR';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_WOVEN_PLASTIC_COATED_AND_LINER = 'XWR';
 
     /**
      * Intermediate bulk container, plastic film
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_PLASTIC_FILM = 'XWS';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_PLASTIC_FILM = 'XWS';
 
     /**
      * Intermediate bulk container, textile with out coat/liner
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_TEXTILE_WITH_OUT_COAT_LINER = 'XWT';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_TEXTILE_WITH_OUT_COAT_LINER = 'XWT';
 
     /**
      * Intermediate bulk container, natural wood, with inner liner
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_NATURAL_WOOD_WITH_INNER_LINER = 'XWU';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_NATURAL_WOOD_WITH_INNER_LINER = 'XWU';
 
     /**
      * Intermediate bulk container, textile, coated
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_TEXTILE_COATED = 'XWV';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_TEXTILE_COATED = 'XWV';
 
     /**
      * Intermediate bulk container, textile, with liner
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_TEXTILE_WITH_LINER = 'XWW';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_TEXTILE_WITH_LINER = 'XWW';
 
     /**
      * Intermediate bulk container, textile, coated and liner
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_TEXTILE_COATED_AND_LINER = 'XWX';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_TEXTILE_COATED_AND_LINER = 'XWX';
 
     /**
      * Intermediate bulk container, plywood, with inner liner
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_PLYWOOD_WITH_INNER_LINER = 'XWY';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_PLYWOOD_WITH_INNER_LINER = 'XWY';
 
     /**
      * Intermediate bulk container, reconstituted wood, with inner liner
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_RECONSTITUTED_WOOD_WITH_INNER_LINER = 'XWZ';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_RECONSTITUTED_WOOD_WITH_INNER_LINER = 'XWZ';
 
     /**
      * Bag, woven plastic, without inner coat/liner
      */
-    const REC21_BAG_WOVEN_PLASTIC_WITHOUT_INNER_COAT_LINER = 'XXA';
+    public const REC21_BAG_WOVEN_PLASTIC_WITHOUT_INNER_COAT_LINER = 'XXA';
 
     /**
      * Bag, woven plastic, sift proof
      */
-    const REC21_BAG_WOVEN_PLASTIC_SIFT_PROOF = 'XXB';
+    public const REC21_BAG_WOVEN_PLASTIC_SIFT_PROOF = 'XXB';
 
     /**
      * Bag, woven plastic, water resistant
      */
-    const REC21_BAG_WOVEN_PLASTIC_WATER_RESISTANT = 'XXC';
+    public const REC21_BAG_WOVEN_PLASTIC_WATER_RESISTANT = 'XXC';
 
     /**
      * Bag, plastics film
      */
-    const REC21_BAG_PLASTICS_FILM = 'XXD';
+    public const REC21_BAG_PLASTICS_FILM = 'XXD';
 
     /**
      * Bag, textile, without inner coat/liner
      */
-    const REC21_BAG_TEXTILE_WITHOUT_INNER_COAT_LINER = 'XXF';
+    public const REC21_BAG_TEXTILE_WITHOUT_INNER_COAT_LINER = 'XXF';
 
     /**
      * Bag, textile, sift proof
      */
-    const REC21_BAG_TEXTILE_SIFT_PROOF = 'XXG';
+    public const REC21_BAG_TEXTILE_SIFT_PROOF = 'XXG';
 
     /**
      * Bag, textile, water resistant
      */
-    const REC21_BAG_TEXTILE_WATER_RESISTANT = 'XXH';
+    public const REC21_BAG_TEXTILE_WATER_RESISTANT = 'XXH';
 
     /**
      * Bag, paper, multi-wall
      */
-    const REC21_BAG_PAPER_MULTIWALL = 'XXJ';
+    public const REC21_BAG_PAPER_MULTIWALL = 'XXJ';
 
     /**
      * Bag, paper, multi-wall, water resistant
      */
-    const REC21_BAG_PAPER_MULTIWALL_WATER_RESISTANT = 'XXK';
+    public const REC21_BAG_PAPER_MULTIWALL_WATER_RESISTANT = 'XXK';
 
     /**
      * Composite packaging, plastic receptacle in steel drum
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_STEEL_DRUM = 'XYA';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_STEEL_DRUM = 'XYA';
 
     /**
      * Composite packaging, plastic receptacle in steel crate box
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_STEEL_CRATE_BOX = 'XYB';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_STEEL_CRATE_BOX = 'XYB';
 
     /**
      * Composite packaging, plastic receptacle in aluminium drum
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_ALUMINIUM_DRUM = 'XYC';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_ALUMINIUM_DRUM = 'XYC';
 
     /**
      * Composite packaging, plastic receptacle in aluminium crate
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_ALUMINIUM_CRATE = 'XYD';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_ALUMINIUM_CRATE = 'XYD';
 
     /**
      * Composite packaging, plastic receptacle in wooden box
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_WOODEN_BOX = 'XYF';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_WOODEN_BOX = 'XYF';
 
     /**
      * Composite packaging, plastic receptacle in plywood drum
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_PLYWOOD_DRUM = 'XYG';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_PLYWOOD_DRUM = 'XYG';
 
     /**
      * Composite packaging, plastic receptacle in plywood box
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_PLYWOOD_BOX = 'XYH';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_PLYWOOD_BOX = 'XYH';
 
     /**
      * Composite packaging, plastic receptacle in fibre drum
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_FIBRE_DRUM = 'XYJ';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_FIBRE_DRUM = 'XYJ';
 
     /**
      * Composite packaging, plastic receptacle in fibreboard box
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_FIBREBOARD_BOX = 'XYK';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_FIBREBOARD_BOX = 'XYK';
 
     /**
      * Composite packaging, plastic receptacle in plastic drum
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_PLASTIC_DRUM = 'XYL';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_PLASTIC_DRUM = 'XYL';
 
     /**
      * Composite packaging, plastic receptacle in solid plastic box
      */
-    const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_SOLID_PLASTIC_BOX = 'XYM';
+    public const REC21_COMPOSITE_PACKAGING_PLASTIC_RECEPTACLE_IN_SOLID_PLASTIC_BOX = 'XYM';
 
     /**
      * Composite packaging, glass receptacle in steel drum
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_STEEL_DRUM = 'XYN';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_STEEL_DRUM = 'XYN';
 
     /**
      * Composite packaging, glass receptacle in steel crate box
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_STEEL_CRATE_BOX = 'XYP';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_STEEL_CRATE_BOX = 'XYP';
 
     /**
      * Composite packaging, glass receptacle in aluminium drum
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_ALUMINIUM_DRUM = 'XYQ';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_ALUMINIUM_DRUM = 'XYQ';
 
     /**
      * Composite packaging, glass receptacle in aluminium crate
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_ALUMINIUM_CRATE = 'XYR';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_ALUMINIUM_CRATE = 'XYR';
 
     /**
      * Composite packaging, glass receptacle in wooden box
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_WOODEN_BOX = 'XYS';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_WOODEN_BOX = 'XYS';
 
     /**
      * Composite packaging, glass receptacle in plywood drum
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_PLYWOOD_DRUM = 'XYT';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_PLYWOOD_DRUM = 'XYT';
 
     /**
      * Composite packaging, glass receptacle in wickerwork hamper
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_WICKERWORK_HAMPER = 'XYV';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_WICKERWORK_HAMPER = 'XYV';
 
     /**
      * Composite packaging, glass receptacle in fibre drum
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_FIBRE_DRUM = 'XYW';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_FIBRE_DRUM = 'XYW';
 
     /**
      * Composite packaging, glass receptacle in fibreboard box
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_FIBREBOARD_BOX = 'XYX';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_FIBREBOARD_BOX = 'XYX';
 
     /**
      * Composite packaging, glass receptacle in expandable plastic pack
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_EXPANDABLE_PLASTIC_PACK = 'XYY';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_EXPANDABLE_PLASTIC_PACK = 'XYY';
 
     /**
      * Composite packaging, glass receptacle in solid plastic pack
      */
-    const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_SOLID_PLASTIC_PACK = 'XYZ';
+    public const REC21_COMPOSITE_PACKAGING_GLASS_RECEPTACLE_IN_SOLID_PLASTIC_PACK = 'XYZ';
 
     /**
      * Intermediate bulk container, paper, multi-wall
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_PAPER_MULTIWALL = 'XZA';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_PAPER_MULTIWALL = 'XZA';
 
     /**
      * Bag, large
      */
-    const REC21_BAG_LARGE = 'XZB';
+    public const REC21_BAG_LARGE = 'XZB';
 
     /**
      * Intermediate bulk container, paper, multi-wall, water resistant
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_PAPER_MULTIWALL_WATER_RESISTANT = 'XZC';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_PAPER_MULTIWALL_WATER_RESISTANT = 'XZC';
 
     /**
@@ -10503,10 +10503,10 @@
      * solids
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_WITH_STRUCTURAL_EQUIPMENT_SOLIDS = 'XZD';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_WITH_STRUCTURAL_EQUIPMENT_SOLIDS = 'XZD';
 
     /**
      * Intermediate bulk container, rigid plastic, freestanding, solids
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_FREESTANDING_SOLIDS = 'XZF';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_FREESTANDING_SOLIDS = 'XZF';
 
     /**
@@ -10514,10 +10514,10 @@
      * pressurised
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_WITH_STRUCTURAL_EQUIPMENT_PRESSURISED = 'XZG';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_WITH_STRUCTURAL_EQUIPMENT_PRESSURISED = 'XZG';
 
     /**
      * Intermediate bulk container, rigid plastic, freestanding, pressurised
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_FREESTANDING_PRESSURISED = 'XZH';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_FREESTANDING_PRESSURISED = 'XZH';
 
     /**
@@ -10525,79 +10525,79 @@
      * liquids
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_WITH_STRUCTURAL_EQUIPMENT_LIQUIDS = 'XZJ';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_WITH_STRUCTURAL_EQUIPMENT_LIQUIDS = 'XZJ';
 
     /**
      * Intermediate bulk container, rigid plastic, freestanding, liquids
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_FREESTANDING_LIQUIDS = 'XZK';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_RIGID_PLASTIC_FREESTANDING_LIQUIDS = 'XZK';
 
     /**
      * Intermediate bulk container, composite, rigid plastic, solids
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_RIGID_PLASTIC_SOLIDS = 'XZL';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_RIGID_PLASTIC_SOLIDS = 'XZL';
 
     /**
      * Intermediate bulk container, composite, flexible plastic, solids
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_FLEXIBLE_PLASTIC_SOLIDS = 'XZM';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_FLEXIBLE_PLASTIC_SOLIDS = 'XZM';
 
     /**
      * Intermediate bulk container, composite, rigid plastic, pressurised
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_RIGID_PLASTIC_PRESSURISED = 'XZN';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_RIGID_PLASTIC_PRESSURISED = 'XZN';
 
     /**
      * Intermediate bulk container, composite, flexible plastic, pressurised
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_FLEXIBLE_PLASTIC_PRESSURISED = 'XZP';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_FLEXIBLE_PLASTIC_PRESSURISED = 'XZP';
 
     /**
      * Intermediate bulk container, composite, rigid plastic, liquids
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_RIGID_PLASTIC_LIQUIDS = 'XZQ';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_RIGID_PLASTIC_LIQUIDS = 'XZQ';
 
     /**
      * Intermediate bulk container, composite, flexible plastic, liquids
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_FLEXIBLE_PLASTIC_LIQUIDS = 'XZR';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE_FLEXIBLE_PLASTIC_LIQUIDS = 'XZR';
 
     /**
      * Intermediate bulk container, composite
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE = 'XZS';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_COMPOSITE = 'XZS';
 
     /**
      * Intermediate bulk container, fibreboard
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_FIBREBOARD = 'XZT';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_FIBREBOARD = 'XZT';
 
     /**
      * Intermediate bulk container, flexible
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_FLEXIBLE = 'XZU';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_FLEXIBLE = 'XZU';
 
     /**
      * Intermediate bulk container, metal, other than steel
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_METAL_OTHER_THAN_STEEL = 'XZV';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_METAL_OTHER_THAN_STEEL = 'XZV';
 
     /**
      * Intermediate bulk container, natural wood
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_NATURAL_WOOD = 'XZW';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_NATURAL_WOOD = 'XZW';
 
     /**
      * Intermediate bulk container, plywood
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_PLYWOOD = 'XZX';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_PLYWOOD = 'XZX';
 
     /**
      * Intermediate bulk container, reconstituted wood
      */
-    const REC21_INTERMEDIATE_BULK_CONTAINER_RECONSTITUTED_WOOD = 'XZY';
+    public const REC21_INTERMEDIATE_BULK_CONTAINER_RECONSTITUTED_WOOD = 'XZY';
 
     /**
      * Mutually defined
      */
-    const REC21_MUTUALLY_DEFINED = 'XZZ';
+    public const REC21_MUTUALLY_DEFINED = 'XZZ';
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdVATExemptionReasonCode.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdVATExemptionReasonCode.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/codelists/ZugferdVATExemptionReasonCode.php	(revision 8504)
@@ -28,5 +28,5 @@
      * Context of exemption: Exemptions relating to repayment of expenditures.
      */
-    const VATEXEU79C = "VATEX-EU-79-C";
+    public const VATEXEU79C = "VATEX-EU-79-C";
 
     /**
@@ -35,5 +35,5 @@
      * Context of exemption: Exemptions for certain activities in public interest.
      */
-    const VATEXEU132 = "VATEX-EU-132";
+    public const VATEXEU132 = "VATEX-EU-132";
 
     /**
@@ -42,5 +42,5 @@
      * Context of exemption: The supply by the public postal services of services other than passenger transport and telecommunications services, and the supply of goods incidental thereto.
      */
-    const VATEXEU1321A = "VATEX-EU-132-1A";
+    public const VATEXEU1321A = "VATEX-EU-132-1A";
 
     /**
@@ -49,5 +49,5 @@
      * Context of exemption: Hospital and medical care and closely related activities undertaken by bodies governed by public law or, under social conditions comparable with those applicable to bodies governed by public law, by hospitals, centres for medical treatment or diagnosis and other duly recognised establishments of a similar nature.
      */
-    const VATEXEU1321B = "VATEX-EU-132-1B";
+    public const VATEXEU1321B = "VATEX-EU-132-1B";
 
     /**
@@ -56,5 +56,5 @@
      * Context of exemption: The provision of medical care in the exercise of the medical and paramedical professions as defined by the Member State concerned.
      */
-    const VATEXEU1321C = "VATEX-EU-132-1C";
+    public const VATEXEU1321C = "VATEX-EU-132-1C";
 
     /**
@@ -63,5 +63,5 @@
      * Context of exemption: The supply of human organs, blood and milk.
      */
-    const VATEXEU1321D = "VATEX-EU-132-1D";
+    public const VATEXEU1321D = "VATEX-EU-132-1D";
 
     /**
@@ -70,5 +70,5 @@
      * Context of exemption: The supply of services by dental technicians in their professional capacity and the supply of dental prostheses by dentists and dental technicians.
      */
-    const VATEXEU1321E = "VATEX-EU-132-1E";
+    public const VATEXEU1321E = "VATEX-EU-132-1E";
 
     /**
@@ -77,5 +77,5 @@
      * Context of exemption: The supply of services by independent groups of persons, who are carrying on an activity which is exempt from VAT or in relation to which they are not taxable persons, for the purpose of rendering their members the services directly necessary for the exercise of that activity, where those groups merely claim from their members exact reimbursement of their share of the joint expenses, provided that such exemption is not likely to cause distortion of competition.
      */
-    const VATEXEU1321F = "VATEX-EU-132-1F";
+    public const VATEXEU1321F = "VATEX-EU-132-1F";
 
     /**
@@ -84,5 +84,5 @@
      * Context of exemption: The supply of services and of goods closely linked to welfare and social security work, including those supplied by old people's homes, by bodies governed by public law or by other bodies recognised by the Member State concerned as being devoted to social wellbeing.
      */
-    const VATEXEU1321G = "VATEX-EU-132-1G";
+    public const VATEXEU1321G = "VATEX-EU-132-1G";
 
     /**
@@ -91,5 +91,5 @@
      * Context of exemption: The supply of services and of goods closely linked to the protection of children and young persons by bodies governed by public law or by other organisations recognised by the Member State concerned as being devoted to social wellbeing.
      */
-    const VATEXEU1321H = "VATEX-EU-132-1H";
+    public const VATEXEU1321H = "VATEX-EU-132-1H";
 
     /**
@@ -98,5 +98,5 @@
      * Context of exemption: The provision of children's or young people's education, school or university education, vocational training or retraining, including the supply of services and of goods closely related thereto, by bodies governed by public law having such as their aim or by other organisations recognised by the Member State concerned as having similar objects.
      */
-    const VATEXEU1321I = "VATEX-EU-132-1I";
+    public const VATEXEU1321I = "VATEX-EU-132-1I";
 
     /**
@@ -105,5 +105,5 @@
      * Context of exemption: Tuition given privately by teachers and covering school or university education.
      */
-    const VATEXEU1321J = "VATEX-EU-132-1J";
+    public const VATEXEU1321J = "VATEX-EU-132-1J";
 
     /**
@@ -112,5 +112,5 @@
      * Context of exemption: The supply of staff by religious or philosophical institutions for the purpose of the activities referred to in points (b), (g), (h) and (i) and with a view to spiritual welfare.
      */
-    const VATEXEU1321K = "VATEX-EU-132-1K";
+    public const VATEXEU1321K = "VATEX-EU-132-1K";
 
     /**
@@ -119,5 +119,5 @@
      * Context of exemption: The supply of services, and the supply of goods closely linked thereto, to their members in their common interest in return for a subscription fixed in accordance with their rules by non-profitmaking organisations with aims of a political, trade-union, religious, patriotic, philosophical, philanthropic or civic nature, provided that this exemption is not likely to cause distortion of competition.
      */
-    const VATEXEU1321L = "VATEX-EU-132-1L";
+    public const VATEXEU1321L = "VATEX-EU-132-1L";
 
     /**
@@ -126,5 +126,5 @@
      * Context of exemption: The supply of certain services closely linked to sport or physical education by non-profit-making organisations to persons taking part in sport or physical education.
      */
-    const VATEXEU1321M = "VATEX-EU-132-1M";
+    public const VATEXEU1321M = "VATEX-EU-132-1M";
 
     /**
@@ -133,5 +133,5 @@
      * Context of exemption: The supply of certain cultural services, and the supply of goods closely linked thereto, by bodies governed by public law or by other cultural bodies recognised by the Member State concerned.
      */
-    const VATEXEU1321N = "VATEX-EU-132-1N";
+    public const VATEXEU1321N = "VATEX-EU-132-1N";
 
     /**
@@ -140,5 +140,5 @@
      * Context of exemption: The supply of services and goods, by organisations whose activities are exempt pursuant to points (b), (g), (h), (i), (l), (m) and (n), in connection with fund-raising events organised exclusively for their own benefit, provided that exemption is not likely to cause distortion of competition.
      */
-    const VATEXEU1321O = "VATEX-EU-132-1O";
+    public const VATEXEU1321O = "VATEX-EU-132-1O";
 
     /**
@@ -147,5 +147,5 @@
      * Context of exemption: The supply of transport services for sick or injured persons in vehicles specially designed for the purpose, by duly authorised bodies.
      */
-    const VATEXEU1321P = "VATEX-EU-132-1P";
+    public const VATEXEU1321P = "VATEX-EU-132-1P";
 
     /**
@@ -154,5 +154,5 @@
      * Context of exemption: The activities, other than those of a commercial nature, carried out by public radio and television bodies.
      */
-    const VATEXEU1321Q = "VATEX-EU-132-1Q";
+    public const VATEXEU1321Q = "VATEX-EU-132-1Q";
 
     /**
@@ -161,5 +161,5 @@
      * Context of exemption: Exemptions on importation.
      */
-    const VATEXEU143 = "VATEX-EU-143";
+    public const VATEXEU143 = "VATEX-EU-143";
 
     /**
@@ -168,5 +168,5 @@
      * Context of exemption: The final importation of goods of which the supply by a taxable person would in all circumstances be exempt within their respective territory.
      */
-    const VATEX_EU_143_1A = "VATEX-EU-143-1A";
+    public const VATEX_EU_143_1A = "VATEX-EU-143-1A";
 
     /**
@@ -175,5 +175,5 @@
      * Context of exemption: The final importation of goods governed by Council Directives 69/169/EEC (1), 83/181/EEC (2) and 2006/79/EC (3).
      */
-    const VATEX_EU_143_1B = "VATEX-EU-143-1B";
+    public const VATEX_EU_143_1B = "VATEX-EU-143-1B";
 
     /**
@@ -182,5 +182,5 @@
      * Context of exemption: The final importation of goods, in free circulation from a third territory forming part of the Community customs territory, which would be entitled to exemption under point (b) if they had been imported within the meaning of the first paragraph of Article 30.
      */
-    const VATEX_EU_143_1C = "VATEX-EU-143-1C";
+    public const VATEX_EU_143_1C = "VATEX-EU-143-1C";
 
     /**
@@ -189,5 +189,5 @@
      * Context of exemption: The importation of goods dispatched or transported from a third territory or a third country into a Member State other than that in which the dispatch or transport of goods ends, where the supply of such goods by the importer designated or recognised under Article 201 as liable for payment of VAT is exempt under Article 138.
      */
-    const VATEX_EU_143_1D = "VATEX-EU-143-1D";
+    public const VATEX_EU_143_1D = "VATEX-EU-143-1D";
 
     /**
@@ -196,5 +196,5 @@
      * Context of exemption: The reimportation, by the person who exported them, of goods in the state in which they were exported, where those goods are exempt from customs duties.
      */
-    const VATEX_EU_143_1E = "VATEX-EU-143-1E";
+    public const VATEX_EU_143_1E = "VATEX-EU-143-1E";
 
     /**
@@ -203,12 +203,15 @@
      * Context of exemption: The importation, under diplomatic and consular arrangements, of goods which are exempt from customs duties.
      */
-    const VATEX_EU_143_1F = "VATEX-EU-143-1F";
+    public const VATEX_EU_143_1F = "VATEX-EU-143-1F";
 
     /**
      * VATEX-EU-143-1FA
      * Exempt based on article 143, section 1 (fa) of Council Directive 2006/112/EC
-     * Context of exemption: The importation of goods by the European Community, the European Atomic Energy Community, the European Central Bank or the European Investment Bank, or by the bodies set up by the Communities to which the Protocol of 8 April 1965 on the privileges and immunities of the European Communities applies, within the limits and under the conditions of that Protocol and the agreements for its implementation or the headquarters agreements, in so far as it does not lead to distortion of  competition;
-     */
-    const VATEX_EU_143_1FA = "VATEX-EU-143-1FA";
+     * Context of exemption: The importation of goods by the European Community, the European Atomic Energy Community, the European Central
+     * Bank or the European Investment Bank, or by the bodies set up by the Communities to which the Protocol of 8 April 1965 on the
+     * privileges and immunities of the European Communities applies, within the limits and under the conditions of that Protocol and the
+     * agreements for its implementation or the headquarters agreements, in so far as it does not lead to distortion of  competition;
+     */
+    public const VATEX_EU_143_1FA = "VATEX-EU-143-1FA";
 
     /**
@@ -217,5 +220,5 @@
      * Context of exemption: The importation of goods by international bodies, other than those referred to in point (fa), recognised as such by the public authorities of the host Member State, or by members of such bodies, within the limits and under the conditions laid down by the international conventions establishing the bodies or by headquarters agreements;
      */
-    const VATEX_EU_143_1G = "VATEX-EU-143-1G";
+    public const VATEX_EU_143_1G = "VATEX-EU-143-1G";
 
     /**
@@ -224,5 +227,5 @@
      * Context of exemption: The importation of goods, into Member States party to the North Atlantic Treaty, by the armed forces of other States party to that Treaty for the use of those forces or the civilian staff accompanying them or for supplying their messes or canteens where such forces take part in the common defence effort.
      */
-    const VATEX_EU_143_1H = "VATEX-EU-143-1H";
+    public const VATEX_EU_143_1H = "VATEX-EU-143-1H";
 
     /**
@@ -231,5 +234,5 @@
      * Context of exemption: The importation of goods by the armed forces of the United Kingdom stationed in the island of Cyprus pursuant to the Treaty of Establishment concerning the Republic of Cyprus, dated 16 August 1960, which are for the use of those forces or the civilian staff accompanying them or for supplying their messes or canteens.
      */
-    const VATEX_EU_143_1I = "VATEX-EU-143-1I";
+    public const VATEX_EU_143_1I = "VATEX-EU-143-1I";
 
     /**
@@ -238,5 +241,5 @@
      * Context of exemption: The importation into ports, by sea fishing undertakings, of their catches, unprocessed or after undergoing preservation for marketing but before being supplied.
      */
-    const VATEX_EU_143_1J = "VATEX-EU-143-1J";
+    public const VATEX_EU_143_1J = "VATEX-EU-143-1J";
 
     /**
@@ -245,5 +248,5 @@
      * Context of exemption: The importation of gold by central banks.
      */
-    const VATEX_EU_143_1K = "VATEX-EU-143-1K";
+    public const VATEX_EU_143_1K = "VATEX-EU-143-1K";
 
     /**
@@ -252,5 +255,5 @@
      * Context of exemption: The importation of gas through a natural gas system or any network connected to such a system or fed in from a vessel transporting gas into a natural gas system or any upstream pipeline network, of electricity or of heat or cooling energy through heating or cooling networks.
      */
-    const VATEX_EU_143_1L = "VATEX-EU-143-1L";
+    public const VATEX_EU_143_1L = "VATEX-EU-143-1L";
 
     /**
@@ -259,5 +262,5 @@
      * Context of exemption: Exemptions related to international transport.
      */
-    const VATEX_EU_148 = "VATEX-EU-148";
+    public const VATEX_EU_148 = "VATEX-EU-148";
 
     /**
@@ -266,5 +269,5 @@
      * Context of exemption: Fuel supplies for commercial international transport vessels.
      */
-    const VATEX_EU_148_A = "VATEX-EU-148-A";
+    public const VATEX_EU_148_A = "VATEX-EU-148-A";
 
     /**
@@ -273,5 +276,5 @@
      * Context of exemption: Fuel supplies for fighting ships in international transport.
      */
-    const VATEX_EU_148_B = "VATEX-EU-148-B";
+    public const VATEX_EU_148_B = "VATEX-EU-148-B";
 
     /**
@@ -280,5 +283,5 @@
      * Context of exemption: Maintenance, modification, chartering and hiring of international transport vessels.
      */
-    const VATEX_EU_148_C = "VATEX-EU-148-C";
+    public const VATEX_EU_148_C = "VATEX-EU-148-C";
 
     /**
@@ -287,5 +290,5 @@
      * Context of exemption: Services directly linked to the exportation or importation of goods, including transportation and ancillary services, such as loading, unloading, handling, storage and warehousing.
      */
-    const VATEX_EU_148_D = "VATEX-EU-148-D";
+    public const VATEX_EU_148_D = "VATEX-EU-148-D";
 
     /**
@@ -294,5 +297,5 @@
      * Context of exemption: Services directly linked to the exportation or importation of goods, including transportation and ancillary services, such as loading, unloading, handling, storage and warehousing, supplied by intermediaries, including customs agents, and which are performed on behalf of the exporter or importer.
      */
-    const VATEX_EU_148_E = "VATEX-EU-148-E";
+    public const VATEX_EU_148_E = "VATEX-EU-148-E";
 
     /**
@@ -301,5 +304,5 @@
      * Context of exemption: Maintenance, repair, etc., of aircraft used for commercial international transport.
      */
-    const VATEX_EU_148_F = "VATEX-EU-148-F";
+    public const VATEX_EU_148_F = "VATEX-EU-148-F";
 
     /**
@@ -308,5 +311,5 @@
      * Context of exemption: Supplies of goods or services to be used or consumed on board commercial international transport vessels or aircraft, and the supply of goods or services directly connected with the supplies referred to above, up to the amount of the exemption applicable to such supplies.
      */
-    const VATEX_EU_148_G = "VATEX-EU-148-G";
+    public const VATEX_EU_148_G = "VATEX-EU-148-G";
 
     /**
@@ -315,5 +318,5 @@
      * Context of exemption: Exemptions for final importation of certain goods.
      */
-    const VATEX_EU_151 = "VATEX-EU-151";
+    public const VATEX_EU_151 = "VATEX-EU-151";
 
     /**
@@ -322,12 +325,16 @@
      * Context of exemption: The supply of goods or services under diplomatic and consular arrangements.
      */
-    const VATEX_EU_151_1A = "VATEX-EU-151-1A";
+    public const VATEX_EU_151_1A = "VATEX-EU-151-1A";
 
     /**
      * VATEX-EU-151-1AA
      * Exempt based on article 151, section 1 (aa) of Council Directive 2006/112/EC
-     * Context of exemption: The supply of goods or services to the European Community, the European Atomic Energy Community, the European Central Bank or the European Investment Bank, or to the bodies set up by the Communities to which the Protocol of 8 April 1965 on the privileges and immunities of the European Communities applies, within the limits and under the conditions of that Protocol and the agreements for its implementation or the headquarters agreements, in so far as it does not lead to distortion of competition.
-     */
-    const VATEX_EU_151_1AA = "VATEX-EU-151-1AA";
+     * Context of exemption: The supply of goods or services to the European Community, the European Atomic Energy Community,
+     * the European Central Bank or the European Investment Bank, or to the bodies set up by the Communities to which the Protocol
+     * of 8 April 1965 on the privileges and immunities of the European Communities applies, within the limits and under the
+     * conditions of that Protocol and the agreements for its implementation or the headquarters agreements, in so far as it does
+     * not lead to distortion of competition.
+     */
+    public const VATEX_EU_151_1AA = "VATEX-EU-151-1AA";
 
     /**
@@ -336,5 +343,5 @@
      * Context of exemption: The supply of goods or services to international bodies, other than those referred to in point (aa), recognised as such by the public authorities of the host Member States, and to members of such bodies, within the limits and under the conditions laid down by the international conventions establishing the bodies or by headquarters agreements.
      */
-    const VATEX_EU_151_1B = "VATEX-EU-151-1B";
+    public const VATEX_EU_151_1B = "VATEX-EU-151-1B";
 
     /**
@@ -343,5 +350,5 @@
      * Context of exemption: The supply of goods or services within a Member State which is a party to the North Atlantic Treaty, intended either for the armed forces of other States party to that Treaty for the use of those forces, or of the civilian staff accompanying them, or for supplying their messes or canteens when such forces take part in the common defence effort.
      */
-    const VATEX_EU_151_1C = "VATEX-EU-151-1C";
+    public const VATEX_EU_151_1C = "VATEX-EU-151-1C";
 
     /**
@@ -350,5 +357,5 @@
      * Context of exemption: The supply of goods or services to another Member State, intended for the armed forces of any State which is a party to the North Atlantic Treaty, other than the Member State of destination itself, for the use of those forces, or of the civilian staff accompanying them, or for supplying their messes or canteens when such forces take part in the common defence effort.
      */
-    const VATEX_EU_151_1D = "VATEX-EU-151-1D";
+    public const VATEX_EU_151_1D = "VATEX-EU-151-1D";
 
     /**
@@ -357,5 +364,5 @@
      * Context of exemption: The supply of goods or services to the armed forces of the United Kingdom stationed in the island of Cyprus pursuant to the Treaty of Establishment concerning the Republic of Cyprus, dated 16 August 1960, which are for the use of those forces, or of the civilian staff accompanying them, or for supplying their messes or canteens.
      */
-    const VATEX_EU_151_1E = "VATEX-EU-151-1E";
+    public const VATEX_EU_151_1E = "VATEX-EU-151-1E";
 
     /**
@@ -364,5 +371,5 @@
      * Context of exemption: Travel agents performed outside of EU.
      */
-    const VATEX_EU_309 = "VATEX-EU-309";
+    public const VATEX_EU_309 = "VATEX-EU-309";
 
     /**
@@ -372,5 +379,5 @@
      * Only use with VAT category code AE
      */
-    const VATEX_EU_AE = "VATEX-EU-AE";
+    public const VATEX_EU_AE = "VATEX-EU-AE";
 
     /**
@@ -380,5 +387,5 @@
      * Only use with VAT category code E
      */
-    const VATEX_EU_D = "VATEX-EU-D";
+    public const VATEX_EU_D = "VATEX-EU-D";
 
     /**
@@ -388,5 +395,5 @@
      * Only use with VAT category code E
      */
-    const VATEX_EU_F = "VATEX-EU-F";
+    public const VATEX_EU_F = "VATEX-EU-F";
 
     /**
@@ -396,5 +403,5 @@
      * Only use with VAT category code G
      */
-    const VATEX_EU_G = "VATEX-EU-G";
+    public const VATEX_EU_G = "VATEX-EU-G";
 
     /**
@@ -404,5 +411,5 @@
      * Only use with VAT category code E
      */
-    const VATEX_EU_I = "VATEX-EU-I";
+    public const VATEX_EU_I = "VATEX-EU-I";
 
     /**
@@ -412,5 +419,5 @@
      * Only use with VAT category code K
      */
-    const VATEX_EU_IC = "VATEX-EU-IC";
+    public const VATEX_EU_IC = "VATEX-EU-IC";
 
     /**
@@ -420,5 +427,5 @@
      * Only use with VAT category code E
      */
-    const VATEX_EU_J = "VATEX-EU-J";
+    public const VATEX_EU_J = "VATEX-EU-J";
 
     /**
@@ -428,4 +435,4 @@
      * Only use with VAT category code O
      */
-    const VATEX_EU_O = "VATEX-EU-O";
+    public const VATEX_EU_O = "VATEX-EU-O";
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/CreditorFinancialAccountType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/CreditorFinancialAccountType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/CreditorFinancialAccountType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setIBANID(\horstoeko\zugferd\entities\basic\udt\IDType $iBANID)
+    public function setIBANID(?\horstoeko\zugferd\entities\basic\udt\IDType $iBANID = null)
     {
         $this->iBANID = $iBANID;
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setProprietaryID(\horstoeko\zugferd\entities\basic\udt\IDType $proprietaryID)
+    public function setProprietaryID(?\horstoeko\zugferd\entities\basic\udt\IDType $proprietaryID = null)
     {
         $this->proprietaryID = $proprietaryID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/DocumentLineDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/DocumentLineDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/DocumentLineDocumentType.php	(revision 8504)
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setIncludedNote(\horstoeko\zugferd\entities\basic\ram\NoteType $includedNote)
+    public function setIncludedNote(?\horstoeko\zugferd\entities\basic\ram\NoteType $includedNote = null)
     {
         $this->includedNote = $includedNote;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/ExchangedDocumentContextType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/ExchangedDocumentContextType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/ExchangedDocumentContextType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setBusinessProcessSpecifiedDocumentContextParameter(\horstoeko\zugferd\entities\basic\ram\DocumentContextParameterType $businessProcessSpecifiedDocumentContextParameter)
+    public function setBusinessProcessSpecifiedDocumentContextParameter(?\horstoeko\zugferd\entities\basic\ram\DocumentContextParameterType $businessProcessSpecifiedDocumentContextParameter = null)
     {
         $this->businessProcessSpecifiedDocumentContextParameter = $businessProcessSpecifiedDocumentContextParameter;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/ExchangedDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/ExchangedDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/ExchangedDocumentType.php	(revision 8504)
@@ -149,5 +149,5 @@
      * @return self
      */
-    public function setIncludedNote(array $includedNote)
+    public function setIncludedNote(?array $includedNote = null)
     {
         $this->includedNote = $includedNote;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/HeaderTradeAgreementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/HeaderTradeAgreementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/HeaderTradeAgreementType.php	(revision 8504)
@@ -123,5 +123,5 @@
      * @return self
      */
-    public function setSellerTaxRepresentativeTradeParty(\horstoeko\zugferd\entities\basic\ram\TradePartyType $sellerTaxRepresentativeTradeParty)
+    public function setSellerTaxRepresentativeTradeParty(?\horstoeko\zugferd\entities\basic\ram\TradePartyType $sellerTaxRepresentativeTradeParty = null)
     {
         $this->sellerTaxRepresentativeTradeParty = $sellerTaxRepresentativeTradeParty;
@@ -145,5 +145,5 @@
      * @return self
      */
-    public function setBuyerOrderReferencedDocument(\horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $buyerOrderReferencedDocument)
+    public function setBuyerOrderReferencedDocument(?\horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $buyerOrderReferencedDocument = null)
     {
         $this->buyerOrderReferencedDocument = $buyerOrderReferencedDocument;
@@ -167,5 +167,5 @@
      * @return self
      */
-    public function setContractReferencedDocument(\horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $contractReferencedDocument)
+    public function setContractReferencedDocument(?\horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $contractReferencedDocument = null)
     {
         $this->contractReferencedDocument = $contractReferencedDocument;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/HeaderTradeDeliveryType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/HeaderTradeDeliveryType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/HeaderTradeDeliveryType.php	(revision 8504)
@@ -42,5 +42,5 @@
      * @return self
      */
-    public function setShipToTradeParty(\horstoeko\zugferd\entities\basic\ram\TradePartyType $shipToTradeParty)
+    public function setShipToTradeParty(?\horstoeko\zugferd\entities\basic\ram\TradePartyType $shipToTradeParty = null)
     {
         $this->shipToTradeParty = $shipToTradeParty;
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setActualDeliverySupplyChainEvent(\horstoeko\zugferd\entities\basic\ram\SupplyChainEventType $actualDeliverySupplyChainEvent)
+    public function setActualDeliverySupplyChainEvent(?\horstoeko\zugferd\entities\basic\ram\SupplyChainEventType $actualDeliverySupplyChainEvent = null)
     {
         $this->actualDeliverySupplyChainEvent = $actualDeliverySupplyChainEvent;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setDespatchAdviceReferencedDocument(\horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $despatchAdviceReferencedDocument)
+    public function setDespatchAdviceReferencedDocument(?\horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $despatchAdviceReferencedDocument = null)
     {
         $this->despatchAdviceReferencedDocument = $despatchAdviceReferencedDocument;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/HeaderTradeSettlementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/HeaderTradeSettlementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/HeaderTradeSettlementType.php	(revision 8504)
@@ -37,7 +37,9 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans
-     */
-    private $specifiedTradeSettlementPaymentMeans = null;
+     * @var \horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType[] $specifiedTradeSettlementPaymentMeans
+     */
+    private $specifiedTradeSettlementPaymentMeans = [
+        
+    ];
 
     /**
@@ -71,7 +73,9 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $invoiceReferencedDocument
-     */
-    private $invoiceReferencedDocument = null;
+     * @var \horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType[] $invoiceReferencedDocument
+     */
+    private $invoiceReferencedDocument = [
+        
+    ];
 
     /**
@@ -96,5 +100,5 @@
      * @return self
      */
-    public function setCreditorReferenceID(\horstoeko\zugferd\entities\basic\udt\IDType $creditorReferenceID)
+    public function setCreditorReferenceID(?\horstoeko\zugferd\entities\basic\udt\IDType $creditorReferenceID = null)
     {
         $this->creditorReferenceID = $creditorReferenceID;
@@ -184,5 +188,5 @@
      * @return self
      */
-    public function setPayeeTradeParty(\horstoeko\zugferd\entities\basic\ram\TradePartyType $payeeTradeParty)
+    public function setPayeeTradeParty(?\horstoeko\zugferd\entities\basic\ram\TradePartyType $payeeTradeParty = null)
     {
         $this->payeeTradeParty = $payeeTradeParty;
@@ -191,7 +195,41 @@
 
     /**
+     * Adds as specifiedTradeSettlementPaymentMeans
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans
+     */
+    public function addToSpecifiedTradeSettlementPaymentMeans(\horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans)
+    {
+        $this->specifiedTradeSettlementPaymentMeans[] = $specifiedTradeSettlementPaymentMeans;
+        return $this;
+    }
+
+    /**
+     * isset specifiedTradeSettlementPaymentMeans
+     *
+     * @param  int|string $index
+     * @return bool
+     */
+    public function issetSpecifiedTradeSettlementPaymentMeans($index)
+    {
+        return isset($this->specifiedTradeSettlementPaymentMeans[$index]);
+    }
+
+    /**
+     * unset specifiedTradeSettlementPaymentMeans
+     *
+     * @param  int|string $index
+     * @return void
+     */
+    public function unsetSpecifiedTradeSettlementPaymentMeans($index)
+    {
+        unset($this->specifiedTradeSettlementPaymentMeans[$index]);
+    }
+
+    /**
      * Gets as specifiedTradeSettlementPaymentMeans
      *
-     * @return \horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType
+     * @return \horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType[]
      */
     public function getSpecifiedTradeSettlementPaymentMeans()
@@ -203,8 +241,8 @@
      * Sets a new specifiedTradeSettlementPaymentMeans
      *
-     * @param  \horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans
-     * @return self
-     */
-    public function setSpecifiedTradeSettlementPaymentMeans(\horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans)
+     * @param  \horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType[] $specifiedTradeSettlementPaymentMeans
+     * @return self
+     */
+    public function setSpecifiedTradeSettlementPaymentMeans(?array $specifiedTradeSettlementPaymentMeans = null)
     {
         $this->specifiedTradeSettlementPaymentMeans = $specifiedTradeSettlementPaymentMeans;
@@ -284,5 +322,5 @@
      * @return self
      */
-    public function setBillingSpecifiedPeriod(\horstoeko\zugferd\entities\basic\ram\SpecifiedPeriodType $billingSpecifiedPeriod)
+    public function setBillingSpecifiedPeriod(?\horstoeko\zugferd\entities\basic\ram\SpecifiedPeriodType $billingSpecifiedPeriod = null)
     {
         $this->billingSpecifiedPeriod = $billingSpecifiedPeriod;
@@ -340,5 +378,5 @@
      * @return self
      */
-    public function setSpecifiedTradeAllowanceCharge(array $specifiedTradeAllowanceCharge)
+    public function setSpecifiedTradeAllowanceCharge(?array $specifiedTradeAllowanceCharge = null)
     {
         $this->specifiedTradeAllowanceCharge = $specifiedTradeAllowanceCharge;
@@ -362,5 +400,5 @@
      * @return self
      */
-    public function setSpecifiedTradePaymentTerms(\horstoeko\zugferd\entities\basic\ram\TradePaymentTermsType $specifiedTradePaymentTerms)
+    public function setSpecifiedTradePaymentTerms(?\horstoeko\zugferd\entities\basic\ram\TradePaymentTermsType $specifiedTradePaymentTerms = null)
     {
         $this->specifiedTradePaymentTerms = $specifiedTradePaymentTerms;
@@ -391,7 +429,41 @@
 
     /**
+     * Adds as invoiceReferencedDocument
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $invoiceReferencedDocument
+     */
+    public function addToInvoiceReferencedDocument(\horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $invoiceReferencedDocument)
+    {
+        $this->invoiceReferencedDocument[] = $invoiceReferencedDocument;
+        return $this;
+    }
+
+    /**
+     * isset invoiceReferencedDocument
+     *
+     * @param  int|string $index
+     * @return bool
+     */
+    public function issetInvoiceReferencedDocument($index)
+    {
+        return isset($this->invoiceReferencedDocument[$index]);
+    }
+
+    /**
+     * unset invoiceReferencedDocument
+     *
+     * @param  int|string $index
+     * @return void
+     */
+    public function unsetInvoiceReferencedDocument($index)
+    {
+        unset($this->invoiceReferencedDocument[$index]);
+    }
+
+    /**
      * Gets as invoiceReferencedDocument
      *
-     * @return \horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType
+     * @return \horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType[]
      */
     public function getInvoiceReferencedDocument()
@@ -403,8 +475,8 @@
      * Sets a new invoiceReferencedDocument
      *
-     * @param  \horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $invoiceReferencedDocument
-     * @return self
-     */
-    public function setInvoiceReferencedDocument(\horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType $invoiceReferencedDocument)
+     * @param  \horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType[] $invoiceReferencedDocument
+     * @return self
+     */
+    public function setInvoiceReferencedDocument(?array $invoiceReferencedDocument = null)
     {
         $this->invoiceReferencedDocument = $invoiceReferencedDocument;
@@ -428,5 +500,5 @@
      * @return self
      */
-    public function setReceivableSpecifiedTradeAccountingAccount(\horstoeko\zugferd\entities\basic\ram\TradeAccountingAccountType $receivableSpecifiedTradeAccountingAccount)
+    public function setReceivableSpecifiedTradeAccountingAccount(?\horstoeko\zugferd\entities\basic\ram\TradeAccountingAccountType $receivableSpecifiedTradeAccountingAccount = null)
     {
         $this->receivableSpecifiedTradeAccountingAccount = $receivableSpecifiedTradeAccountingAccount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/LegalOrganizationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/LegalOrganizationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/LegalOrganizationType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setID(\horstoeko\zugferd\entities\basic\udt\IDType $iD)
+    public function setID(?\horstoeko\zugferd\entities\basic\udt\IDType $iD = null)
     {
         $this->iD = $iD;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/LineTradeAgreementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/LineTradeAgreementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/LineTradeAgreementType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setGrossPriceProductTradePrice(\horstoeko\zugferd\entities\basic\ram\TradePriceType $grossPriceProductTradePrice)
+    public function setGrossPriceProductTradePrice(?\horstoeko\zugferd\entities\basic\ram\TradePriceType $grossPriceProductTradePrice = null)
     {
         $this->grossPriceProductTradePrice = $grossPriceProductTradePrice;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/LineTradeSettlementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/LineTradeSettlementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/LineTradeSettlementType.php	(revision 8504)
@@ -71,5 +71,5 @@
      * @return self
      */
-    public function setBillingSpecifiedPeriod(\horstoeko\zugferd\entities\basic\ram\SpecifiedPeriodType $billingSpecifiedPeriod)
+    public function setBillingSpecifiedPeriod(?\horstoeko\zugferd\entities\basic\ram\SpecifiedPeriodType $billingSpecifiedPeriod = null)
     {
         $this->billingSpecifiedPeriod = $billingSpecifiedPeriod;
@@ -127,5 +127,5 @@
      * @return self
      */
-    public function setSpecifiedTradeAllowanceCharge(array $specifiedTradeAllowanceCharge)
+    public function setSpecifiedTradeAllowanceCharge(?array $specifiedTradeAllowanceCharge = null)
     {
         $this->specifiedTradeAllowanceCharge = $specifiedTradeAllowanceCharge;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/ReferencedDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/ReferencedDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/ReferencedDocumentType.php	(revision 8504)
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setFormattedIssueDateTime(\horstoeko\zugferd\entities\basic\qdt\FormattedDateTimeType $formattedIssueDateTime)
+    public function setFormattedIssueDateTime(?\horstoeko\zugferd\entities\basic\qdt\FormattedDateTimeType $formattedIssueDateTime = null)
     {
         $this->formattedIssueDateTime = $formattedIssueDateTime;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/SpecifiedPeriodType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/SpecifiedPeriodType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/SpecifiedPeriodType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setStartDateTime(\horstoeko\zugferd\entities\basic\udt\DateTimeType $startDateTime)
+    public function setStartDateTime(?\horstoeko\zugferd\entities\basic\udt\DateTimeType $startDateTime = null)
     {
         $this->startDateTime = $startDateTime;
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setEndDateTime(\horstoeko\zugferd\entities\basic\udt\DateTimeType $endDateTime)
+    public function setEndDateTime(?\horstoeko\zugferd\entities\basic\udt\DateTimeType $endDateTime = null)
     {
         $this->endDateTime = $endDateTime;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeAllowanceChargeType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeAllowanceChargeType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeAllowanceChargeType.php	(revision 8504)
@@ -106,5 +106,5 @@
      * @return self
      */
-    public function setBasisAmount(\horstoeko\zugferd\entities\basic\udt\AmountType $basisAmount)
+    public function setBasisAmount(?\horstoeko\zugferd\entities\basic\udt\AmountType $basisAmount = null)
     {
         $this->basisAmount = $basisAmount;
@@ -194,5 +194,5 @@
      * @return self
      */
-    public function setCategoryTradeTax(\horstoeko\zugferd\entities\basic\ram\TradeTaxType $categoryTradeTax)
+    public function setCategoryTradeTax(?\horstoeko\zugferd\entities\basic\ram\TradeTaxType $categoryTradeTax = null)
     {
         $this->categoryTradeTax = $categoryTradeTax;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradePartyType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradePartyType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradePartyType.php	(revision 8504)
@@ -102,5 +102,5 @@
      * @return self
      */
-    public function setID(array $iD)
+    public function setID(?array $iD = null)
     {
         $this->iD = $iD;
@@ -158,5 +158,5 @@
      * @return self
      */
-    public function setGlobalID(array $globalID)
+    public function setGlobalID(?array $globalID = null)
     {
         $this->globalID = $globalID;
@@ -202,5 +202,5 @@
      * @return self
      */
-    public function setSpecifiedLegalOrganization(\horstoeko\zugferd\entities\basic\ram\LegalOrganizationType $specifiedLegalOrganization)
+    public function setSpecifiedLegalOrganization(?\horstoeko\zugferd\entities\basic\ram\LegalOrganizationType $specifiedLegalOrganization = null)
     {
         $this->specifiedLegalOrganization = $specifiedLegalOrganization;
@@ -224,5 +224,5 @@
      * @return self
      */
-    public function setPostalTradeAddress(\horstoeko\zugferd\entities\basic\ram\TradeAddressType $postalTradeAddress)
+    public function setPostalTradeAddress(?\horstoeko\zugferd\entities\basic\ram\TradeAddressType $postalTradeAddress = null)
     {
         $this->postalTradeAddress = $postalTradeAddress;
@@ -246,5 +246,5 @@
      * @return self
      */
-    public function setURIUniversalCommunication(\horstoeko\zugferd\entities\basic\ram\UniversalCommunicationType $uRIUniversalCommunication)
+    public function setURIUniversalCommunication(?\horstoeko\zugferd\entities\basic\ram\UniversalCommunicationType $uRIUniversalCommunication = null)
     {
         $this->uRIUniversalCommunication = $uRIUniversalCommunication;
@@ -302,5 +302,5 @@
      * @return self
      */
-    public function setSpecifiedTaxRegistration(array $specifiedTaxRegistration)
+    public function setSpecifiedTaxRegistration(?array $specifiedTaxRegistration = null)
     {
         $this->specifiedTaxRegistration = $specifiedTaxRegistration;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradePaymentTermsType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradePaymentTermsType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradePaymentTermsType.php	(revision 8504)
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setDueDateDateTime(\horstoeko\zugferd\entities\basic\udt\DateTimeType $dueDateDateTime)
+    public function setDueDateDateTime(?\horstoeko\zugferd\entities\basic\udt\DateTimeType $dueDateDateTime = null)
     {
         $this->dueDateDateTime = $dueDateDateTime;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setDirectDebitMandateID(\horstoeko\zugferd\entities\basic\udt\IDType $directDebitMandateID)
+    public function setDirectDebitMandateID(?\horstoeko\zugferd\entities\basic\udt\IDType $directDebitMandateID = null)
     {
         $this->directDebitMandateID = $directDebitMandateID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradePriceType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradePriceType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradePriceType.php	(revision 8504)
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setBasisQuantity(\horstoeko\zugferd\entities\basic\udt\QuantityType $basisQuantity)
+    public function setBasisQuantity(?\horstoeko\zugferd\entities\basic\udt\QuantityType $basisQuantity = null)
     {
         $this->basisQuantity = $basisQuantity;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setAppliedTradeAllowanceCharge(\horstoeko\zugferd\entities\basic\ram\TradeAllowanceChargeType $appliedTradeAllowanceCharge)
+    public function setAppliedTradeAllowanceCharge(?\horstoeko\zugferd\entities\basic\ram\TradeAllowanceChargeType $appliedTradeAllowanceCharge = null)
     {
         $this->appliedTradeAllowanceCharge = $appliedTradeAllowanceCharge;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeProductType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeProductType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeProductType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setGlobalID(\horstoeko\zugferd\entities\basic\udt\IDType $globalID)
+    public function setGlobalID(?\horstoeko\zugferd\entities\basic\udt\IDType $globalID = null)
     {
         $this->globalID = $globalID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeSettlementHeaderMonetarySummationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeSettlementHeaderMonetarySummationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeSettlementHeaderMonetarySummationType.php	(revision 8504)
@@ -91,5 +91,5 @@
      * @return self
      */
-    public function setChargeTotalAmount(\horstoeko\zugferd\entities\basic\udt\AmountType $chargeTotalAmount)
+    public function setChargeTotalAmount(?\horstoeko\zugferd\entities\basic\udt\AmountType $chargeTotalAmount = null)
     {
         $this->chargeTotalAmount = $chargeTotalAmount;
@@ -113,5 +113,5 @@
      * @return self
      */
-    public function setAllowanceTotalAmount(\horstoeko\zugferd\entities\basic\udt\AmountType $allowanceTotalAmount)
+    public function setAllowanceTotalAmount(?\horstoeko\zugferd\entities\basic\udt\AmountType $allowanceTotalAmount = null)
     {
         $this->allowanceTotalAmount = $allowanceTotalAmount;
@@ -191,5 +191,5 @@
      * @return self
      */
-    public function setTaxTotalAmount(array $taxTotalAmount)
+    public function setTaxTotalAmount(?array $taxTotalAmount = null)
     {
         $this->taxTotalAmount = $taxTotalAmount;
@@ -235,5 +235,5 @@
      * @return self
      */
-    public function setTotalPrepaidAmount(\horstoeko\zugferd\entities\basic\udt\AmountType $totalPrepaidAmount)
+    public function setTotalPrepaidAmount(?\horstoeko\zugferd\entities\basic\udt\AmountType $totalPrepaidAmount = null)
     {
         $this->totalPrepaidAmount = $totalPrepaidAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeSettlementPaymentMeansType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeSettlementPaymentMeansType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeSettlementPaymentMeansType.php	(revision 8504)
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setPayerPartyDebtorFinancialAccount(\horstoeko\zugferd\entities\basic\ram\DebtorFinancialAccountType $payerPartyDebtorFinancialAccount)
+    public function setPayerPartyDebtorFinancialAccount(?\horstoeko\zugferd\entities\basic\ram\DebtorFinancialAccountType $payerPartyDebtorFinancialAccount = null)
     {
         $this->payerPartyDebtorFinancialAccount = $payerPartyDebtorFinancialAccount;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setPayeePartyCreditorFinancialAccount(\horstoeko\zugferd\entities\basic\ram\CreditorFinancialAccountType $payeePartyCreditorFinancialAccount)
+    public function setPayeePartyCreditorFinancialAccount(?\horstoeko\zugferd\entities\basic\ram\CreditorFinancialAccountType $payeePartyCreditorFinancialAccount = null)
     {
         $this->payeePartyCreditorFinancialAccount = $payeePartyCreditorFinancialAccount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeTaxType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeTaxType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/ram/TradeTaxType.php	(revision 8504)
@@ -67,5 +67,5 @@
      * @return self
      */
-    public function setCalculatedAmount(\horstoeko\zugferd\entities\basic\udt\AmountType $calculatedAmount)
+    public function setCalculatedAmount(?\horstoeko\zugferd\entities\basic\udt\AmountType $calculatedAmount = null)
     {
         $this->calculatedAmount = $calculatedAmount;
@@ -133,5 +133,5 @@
      * @return self
      */
-    public function setBasisAmount(\horstoeko\zugferd\entities\basic\udt\AmountType $basisAmount)
+    public function setBasisAmount(?\horstoeko\zugferd\entities\basic\udt\AmountType $basisAmount = null)
     {
         $this->basisAmount = $basisAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/udt/DateTimeType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/udt/DateTimeType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basic/udt/DateTimeType.php	(revision 8504)
@@ -32,5 +32,5 @@
      * @return self
      */
-    public function setDateTimeString(\horstoeko\zugferd\entities\basic\udt\DateTimeType\DateTimeStringAType $dateTimeString)
+    public function setDateTimeString(?\horstoeko\zugferd\entities\basic\udt\DateTimeType\DateTimeStringAType $dateTimeString = null)
     {
         $this->dateTimeString = $dateTimeString;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/CreditorFinancialAccountType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/CreditorFinancialAccountType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/CreditorFinancialAccountType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setIBANID(\horstoeko\zugferd\entities\basicwl\udt\IDType $iBANID)
+    public function setIBANID(?\horstoeko\zugferd\entities\basicwl\udt\IDType $iBANID = null)
     {
         $this->iBANID = $iBANID;
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setProprietaryID(\horstoeko\zugferd\entities\basicwl\udt\IDType $proprietaryID)
+    public function setProprietaryID(?\horstoeko\zugferd\entities\basicwl\udt\IDType $proprietaryID = null)
     {
         $this->proprietaryID = $proprietaryID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/ExchangedDocumentContextType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/ExchangedDocumentContextType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/ExchangedDocumentContextType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setBusinessProcessSpecifiedDocumentContextParameter(\horstoeko\zugferd\entities\basicwl\ram\DocumentContextParameterType $businessProcessSpecifiedDocumentContextParameter)
+    public function setBusinessProcessSpecifiedDocumentContextParameter(?\horstoeko\zugferd\entities\basicwl\ram\DocumentContextParameterType $businessProcessSpecifiedDocumentContextParameter = null)
     {
         $this->businessProcessSpecifiedDocumentContextParameter = $businessProcessSpecifiedDocumentContextParameter;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/ExchangedDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/ExchangedDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/ExchangedDocumentType.php	(revision 8504)
@@ -149,5 +149,5 @@
      * @return self
      */
-    public function setIncludedNote(array $includedNote)
+    public function setIncludedNote(?array $includedNote = null)
     {
         $this->includedNote = $includedNote;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/HeaderTradeAgreementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/HeaderTradeAgreementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/HeaderTradeAgreementType.php	(revision 8504)
@@ -123,5 +123,5 @@
      * @return self
      */
-    public function setSellerTaxRepresentativeTradeParty(\horstoeko\zugferd\entities\basicwl\ram\TradePartyType $sellerTaxRepresentativeTradeParty)
+    public function setSellerTaxRepresentativeTradeParty(?\horstoeko\zugferd\entities\basicwl\ram\TradePartyType $sellerTaxRepresentativeTradeParty = null)
     {
         $this->sellerTaxRepresentativeTradeParty = $sellerTaxRepresentativeTradeParty;
@@ -145,5 +145,5 @@
      * @return self
      */
-    public function setBuyerOrderReferencedDocument(\horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $buyerOrderReferencedDocument)
+    public function setBuyerOrderReferencedDocument(?\horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $buyerOrderReferencedDocument = null)
     {
         $this->buyerOrderReferencedDocument = $buyerOrderReferencedDocument;
@@ -167,5 +167,5 @@
      * @return self
      */
-    public function setContractReferencedDocument(\horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $contractReferencedDocument)
+    public function setContractReferencedDocument(?\horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $contractReferencedDocument = null)
     {
         $this->contractReferencedDocument = $contractReferencedDocument;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/HeaderTradeDeliveryType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/HeaderTradeDeliveryType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/HeaderTradeDeliveryType.php	(revision 8504)
@@ -42,5 +42,5 @@
      * @return self
      */
-    public function setShipToTradeParty(\horstoeko\zugferd\entities\basicwl\ram\TradePartyType $shipToTradeParty)
+    public function setShipToTradeParty(?\horstoeko\zugferd\entities\basicwl\ram\TradePartyType $shipToTradeParty = null)
     {
         $this->shipToTradeParty = $shipToTradeParty;
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setActualDeliverySupplyChainEvent(\horstoeko\zugferd\entities\basicwl\ram\SupplyChainEventType $actualDeliverySupplyChainEvent)
+    public function setActualDeliverySupplyChainEvent(?\horstoeko\zugferd\entities\basicwl\ram\SupplyChainEventType $actualDeliverySupplyChainEvent = null)
     {
         $this->actualDeliverySupplyChainEvent = $actualDeliverySupplyChainEvent;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setDespatchAdviceReferencedDocument(\horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $despatchAdviceReferencedDocument)
+    public function setDespatchAdviceReferencedDocument(?\horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $despatchAdviceReferencedDocument = null)
     {
         $this->despatchAdviceReferencedDocument = $despatchAdviceReferencedDocument;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/HeaderTradeSettlementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/HeaderTradeSettlementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/HeaderTradeSettlementType.php	(revision 8504)
@@ -37,7 +37,9 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans
-     */
-    private $specifiedTradeSettlementPaymentMeans = null;
+     * @var \horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType[] $specifiedTradeSettlementPaymentMeans
+     */
+    private $specifiedTradeSettlementPaymentMeans = [
+        
+    ];
 
     /**
@@ -71,7 +73,9 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $invoiceReferencedDocument
-     */
-    private $invoiceReferencedDocument = null;
+     * @var \horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType[] $invoiceReferencedDocument
+     */
+    private $invoiceReferencedDocument = [
+        
+    ];
 
     /**
@@ -96,5 +100,5 @@
      * @return self
      */
-    public function setCreditorReferenceID(\horstoeko\zugferd\entities\basicwl\udt\IDType $creditorReferenceID)
+    public function setCreditorReferenceID(?\horstoeko\zugferd\entities\basicwl\udt\IDType $creditorReferenceID = null)
     {
         $this->creditorReferenceID = $creditorReferenceID;
@@ -184,5 +188,5 @@
      * @return self
      */
-    public function setPayeeTradeParty(\horstoeko\zugferd\entities\basicwl\ram\TradePartyType $payeeTradeParty)
+    public function setPayeeTradeParty(?\horstoeko\zugferd\entities\basicwl\ram\TradePartyType $payeeTradeParty = null)
     {
         $this->payeeTradeParty = $payeeTradeParty;
@@ -191,7 +195,41 @@
 
     /**
+     * Adds as specifiedTradeSettlementPaymentMeans
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans
+     */
+    public function addToSpecifiedTradeSettlementPaymentMeans(\horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans)
+    {
+        $this->specifiedTradeSettlementPaymentMeans[] = $specifiedTradeSettlementPaymentMeans;
+        return $this;
+    }
+
+    /**
+     * isset specifiedTradeSettlementPaymentMeans
+     *
+     * @param  int|string $index
+     * @return bool
+     */
+    public function issetSpecifiedTradeSettlementPaymentMeans($index)
+    {
+        return isset($this->specifiedTradeSettlementPaymentMeans[$index]);
+    }
+
+    /**
+     * unset specifiedTradeSettlementPaymentMeans
+     *
+     * @param  int|string $index
+     * @return void
+     */
+    public function unsetSpecifiedTradeSettlementPaymentMeans($index)
+    {
+        unset($this->specifiedTradeSettlementPaymentMeans[$index]);
+    }
+
+    /**
      * Gets as specifiedTradeSettlementPaymentMeans
      *
-     * @return \horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType
+     * @return \horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType[]
      */
     public function getSpecifiedTradeSettlementPaymentMeans()
@@ -203,8 +241,8 @@
      * Sets a new specifiedTradeSettlementPaymentMeans
      *
-     * @param  \horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans
-     * @return self
-     */
-    public function setSpecifiedTradeSettlementPaymentMeans(\horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans)
+     * @param  \horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType[] $specifiedTradeSettlementPaymentMeans
+     * @return self
+     */
+    public function setSpecifiedTradeSettlementPaymentMeans(?array $specifiedTradeSettlementPaymentMeans = null)
     {
         $this->specifiedTradeSettlementPaymentMeans = $specifiedTradeSettlementPaymentMeans;
@@ -284,5 +322,5 @@
      * @return self
      */
-    public function setBillingSpecifiedPeriod(\horstoeko\zugferd\entities\basicwl\ram\SpecifiedPeriodType $billingSpecifiedPeriod)
+    public function setBillingSpecifiedPeriod(?\horstoeko\zugferd\entities\basicwl\ram\SpecifiedPeriodType $billingSpecifiedPeriod = null)
     {
         $this->billingSpecifiedPeriod = $billingSpecifiedPeriod;
@@ -340,5 +378,5 @@
      * @return self
      */
-    public function setSpecifiedTradeAllowanceCharge(array $specifiedTradeAllowanceCharge)
+    public function setSpecifiedTradeAllowanceCharge(?array $specifiedTradeAllowanceCharge = null)
     {
         $this->specifiedTradeAllowanceCharge = $specifiedTradeAllowanceCharge;
@@ -362,5 +400,5 @@
      * @return self
      */
-    public function setSpecifiedTradePaymentTerms(\horstoeko\zugferd\entities\basicwl\ram\TradePaymentTermsType $specifiedTradePaymentTerms)
+    public function setSpecifiedTradePaymentTerms(?\horstoeko\zugferd\entities\basicwl\ram\TradePaymentTermsType $specifiedTradePaymentTerms = null)
     {
         $this->specifiedTradePaymentTerms = $specifiedTradePaymentTerms;
@@ -391,7 +429,41 @@
 
     /**
+     * Adds as invoiceReferencedDocument
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $invoiceReferencedDocument
+     */
+    public function addToInvoiceReferencedDocument(\horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $invoiceReferencedDocument)
+    {
+        $this->invoiceReferencedDocument[] = $invoiceReferencedDocument;
+        return $this;
+    }
+
+    /**
+     * isset invoiceReferencedDocument
+     *
+     * @param  int|string $index
+     * @return bool
+     */
+    public function issetInvoiceReferencedDocument($index)
+    {
+        return isset($this->invoiceReferencedDocument[$index]);
+    }
+
+    /**
+     * unset invoiceReferencedDocument
+     *
+     * @param  int|string $index
+     * @return void
+     */
+    public function unsetInvoiceReferencedDocument($index)
+    {
+        unset($this->invoiceReferencedDocument[$index]);
+    }
+
+    /**
      * Gets as invoiceReferencedDocument
      *
-     * @return \horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType
+     * @return \horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType[]
      */
     public function getInvoiceReferencedDocument()
@@ -403,8 +475,8 @@
      * Sets a new invoiceReferencedDocument
      *
-     * @param  \horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $invoiceReferencedDocument
-     * @return self
-     */
-    public function setInvoiceReferencedDocument(\horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType $invoiceReferencedDocument)
+     * @param  \horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType[] $invoiceReferencedDocument
+     * @return self
+     */
+    public function setInvoiceReferencedDocument(?array $invoiceReferencedDocument = null)
     {
         $this->invoiceReferencedDocument = $invoiceReferencedDocument;
@@ -428,5 +500,5 @@
      * @return self
      */
-    public function setReceivableSpecifiedTradeAccountingAccount(\horstoeko\zugferd\entities\basicwl\ram\TradeAccountingAccountType $receivableSpecifiedTradeAccountingAccount)
+    public function setReceivableSpecifiedTradeAccountingAccount(?\horstoeko\zugferd\entities\basicwl\ram\TradeAccountingAccountType $receivableSpecifiedTradeAccountingAccount = null)
     {
         $this->receivableSpecifiedTradeAccountingAccount = $receivableSpecifiedTradeAccountingAccount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/LegalOrganizationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/LegalOrganizationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/LegalOrganizationType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setID(\horstoeko\zugferd\entities\basicwl\udt\IDType $iD)
+    public function setID(?\horstoeko\zugferd\entities\basicwl\udt\IDType $iD = null)
     {
         $this->iD = $iD;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/ReferencedDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/ReferencedDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/ReferencedDocumentType.php	(revision 8504)
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setFormattedIssueDateTime(\horstoeko\zugferd\entities\basicwl\qdt\FormattedDateTimeType $formattedIssueDateTime)
+    public function setFormattedIssueDateTime(?\horstoeko\zugferd\entities\basicwl\qdt\FormattedDateTimeType $formattedIssueDateTime = null)
     {
         $this->formattedIssueDateTime = $formattedIssueDateTime;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/SpecifiedPeriodType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/SpecifiedPeriodType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/SpecifiedPeriodType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setStartDateTime(\horstoeko\zugferd\entities\basicwl\udt\DateTimeType $startDateTime)
+    public function setStartDateTime(?\horstoeko\zugferd\entities\basicwl\udt\DateTimeType $startDateTime = null)
     {
         $this->startDateTime = $startDateTime;
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setEndDateTime(\horstoeko\zugferd\entities\basicwl\udt\DateTimeType $endDateTime)
+    public function setEndDateTime(?\horstoeko\zugferd\entities\basicwl\udt\DateTimeType $endDateTime = null)
     {
         $this->endDateTime = $endDateTime;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeAllowanceChargeType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeAllowanceChargeType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeAllowanceChargeType.php	(revision 8504)
@@ -106,5 +106,5 @@
      * @return self
      */
-    public function setBasisAmount(\horstoeko\zugferd\entities\basicwl\udt\AmountType $basisAmount)
+    public function setBasisAmount(?\horstoeko\zugferd\entities\basicwl\udt\AmountType $basisAmount = null)
     {
         $this->basisAmount = $basisAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradePartyType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradePartyType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradePartyType.php	(revision 8504)
@@ -102,5 +102,5 @@
      * @return self
      */
-    public function setID(array $iD)
+    public function setID(?array $iD = null)
     {
         $this->iD = $iD;
@@ -158,5 +158,5 @@
      * @return self
      */
-    public function setGlobalID(array $globalID)
+    public function setGlobalID(?array $globalID = null)
     {
         $this->globalID = $globalID;
@@ -202,5 +202,5 @@
      * @return self
      */
-    public function setSpecifiedLegalOrganization(\horstoeko\zugferd\entities\basicwl\ram\LegalOrganizationType $specifiedLegalOrganization)
+    public function setSpecifiedLegalOrganization(?\horstoeko\zugferd\entities\basicwl\ram\LegalOrganizationType $specifiedLegalOrganization = null)
     {
         $this->specifiedLegalOrganization = $specifiedLegalOrganization;
@@ -224,5 +224,5 @@
      * @return self
      */
-    public function setPostalTradeAddress(\horstoeko\zugferd\entities\basicwl\ram\TradeAddressType $postalTradeAddress)
+    public function setPostalTradeAddress(?\horstoeko\zugferd\entities\basicwl\ram\TradeAddressType $postalTradeAddress = null)
     {
         $this->postalTradeAddress = $postalTradeAddress;
@@ -246,5 +246,5 @@
      * @return self
      */
-    public function setURIUniversalCommunication(\horstoeko\zugferd\entities\basicwl\ram\UniversalCommunicationType $uRIUniversalCommunication)
+    public function setURIUniversalCommunication(?\horstoeko\zugferd\entities\basicwl\ram\UniversalCommunicationType $uRIUniversalCommunication = null)
     {
         $this->uRIUniversalCommunication = $uRIUniversalCommunication;
@@ -302,5 +302,5 @@
      * @return self
      */
-    public function setSpecifiedTaxRegistration(array $specifiedTaxRegistration)
+    public function setSpecifiedTaxRegistration(?array $specifiedTaxRegistration = null)
     {
         $this->specifiedTaxRegistration = $specifiedTaxRegistration;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradePaymentTermsType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradePaymentTermsType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradePaymentTermsType.php	(revision 8504)
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setDueDateDateTime(\horstoeko\zugferd\entities\basicwl\udt\DateTimeType $dueDateDateTime)
+    public function setDueDateDateTime(?\horstoeko\zugferd\entities\basicwl\udt\DateTimeType $dueDateDateTime = null)
     {
         $this->dueDateDateTime = $dueDateDateTime;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setDirectDebitMandateID(\horstoeko\zugferd\entities\basicwl\udt\IDType $directDebitMandateID)
+    public function setDirectDebitMandateID(?\horstoeko\zugferd\entities\basicwl\udt\IDType $directDebitMandateID = null)
     {
         $this->directDebitMandateID = $directDebitMandateID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeSettlementHeaderMonetarySummationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeSettlementHeaderMonetarySummationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeSettlementHeaderMonetarySummationType.php	(revision 8504)
@@ -91,5 +91,5 @@
      * @return self
      */
-    public function setChargeTotalAmount(\horstoeko\zugferd\entities\basicwl\udt\AmountType $chargeTotalAmount)
+    public function setChargeTotalAmount(?\horstoeko\zugferd\entities\basicwl\udt\AmountType $chargeTotalAmount = null)
     {
         $this->chargeTotalAmount = $chargeTotalAmount;
@@ -113,5 +113,5 @@
      * @return self
      */
-    public function setAllowanceTotalAmount(\horstoeko\zugferd\entities\basicwl\udt\AmountType $allowanceTotalAmount)
+    public function setAllowanceTotalAmount(?\horstoeko\zugferd\entities\basicwl\udt\AmountType $allowanceTotalAmount = null)
     {
         $this->allowanceTotalAmount = $allowanceTotalAmount;
@@ -191,5 +191,5 @@
      * @return self
      */
-    public function setTaxTotalAmount(array $taxTotalAmount)
+    public function setTaxTotalAmount(?array $taxTotalAmount = null)
     {
         $this->taxTotalAmount = $taxTotalAmount;
@@ -235,5 +235,5 @@
      * @return self
      */
-    public function setTotalPrepaidAmount(\horstoeko\zugferd\entities\basicwl\udt\AmountType $totalPrepaidAmount)
+    public function setTotalPrepaidAmount(?\horstoeko\zugferd\entities\basicwl\udt\AmountType $totalPrepaidAmount = null)
     {
         $this->totalPrepaidAmount = $totalPrepaidAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeSettlementPaymentMeansType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeSettlementPaymentMeansType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeSettlementPaymentMeansType.php	(revision 8504)
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setPayerPartyDebtorFinancialAccount(\horstoeko\zugferd\entities\basicwl\ram\DebtorFinancialAccountType $payerPartyDebtorFinancialAccount)
+    public function setPayerPartyDebtorFinancialAccount(?\horstoeko\zugferd\entities\basicwl\ram\DebtorFinancialAccountType $payerPartyDebtorFinancialAccount = null)
     {
         $this->payerPartyDebtorFinancialAccount = $payerPartyDebtorFinancialAccount;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setPayeePartyCreditorFinancialAccount(\horstoeko\zugferd\entities\basicwl\ram\CreditorFinancialAccountType $payeePartyCreditorFinancialAccount)
+    public function setPayeePartyCreditorFinancialAccount(?\horstoeko\zugferd\entities\basicwl\ram\CreditorFinancialAccountType $payeePartyCreditorFinancialAccount = null)
     {
         $this->payeePartyCreditorFinancialAccount = $payeePartyCreditorFinancialAccount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeTaxType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeTaxType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/ram/TradeTaxType.php	(revision 8504)
@@ -67,5 +67,5 @@
      * @return self
      */
-    public function setCalculatedAmount(\horstoeko\zugferd\entities\basicwl\udt\AmountType $calculatedAmount)
+    public function setCalculatedAmount(?\horstoeko\zugferd\entities\basicwl\udt\AmountType $calculatedAmount = null)
     {
         $this->calculatedAmount = $calculatedAmount;
@@ -133,5 +133,5 @@
      * @return self
      */
-    public function setBasisAmount(\horstoeko\zugferd\entities\basicwl\udt\AmountType $basisAmount)
+    public function setBasisAmount(?\horstoeko\zugferd\entities\basicwl\udt\AmountType $basisAmount = null)
     {
         $this->basisAmount = $basisAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/udt/DateTimeType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/udt/DateTimeType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/basicwl/udt/DateTimeType.php	(revision 8504)
@@ -32,5 +32,5 @@
      * @return self
      */
-    public function setDateTimeString(\horstoeko\zugferd\entities\basicwl\udt\DateTimeType\DateTimeStringAType $dateTimeString)
+    public function setDateTimeString(?\horstoeko\zugferd\entities\basicwl\udt\DateTimeType\DateTimeStringAType $dateTimeString = null)
     {
         $this->dateTimeString = $dateTimeString;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/CreditorFinancialAccountType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/CreditorFinancialAccountType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/CreditorFinancialAccountType.php	(revision 8504)
@@ -42,5 +42,5 @@
      * @return self
      */
-    public function setIBANID(\horstoeko\zugferd\entities\en16931\udt\IDType $iBANID)
+    public function setIBANID(?\horstoeko\zugferd\entities\en16931\udt\IDType $iBANID = null)
     {
         $this->iBANID = $iBANID;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setProprietaryID(\horstoeko\zugferd\entities\en16931\udt\IDType $proprietaryID)
+    public function setProprietaryID(?\horstoeko\zugferd\entities\en16931\udt\IDType $proprietaryID = null)
     {
         $this->proprietaryID = $proprietaryID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/DocumentLineDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/DocumentLineDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/DocumentLineDocumentType.php	(revision 8504)
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setIncludedNote(\horstoeko\zugferd\entities\en16931\ram\NoteType $includedNote)
+    public function setIncludedNote(?\horstoeko\zugferd\entities\en16931\ram\NoteType $includedNote = null)
     {
         $this->includedNote = $includedNote;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ExchangedDocumentContextType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ExchangedDocumentContextType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ExchangedDocumentContextType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setBusinessProcessSpecifiedDocumentContextParameter(\horstoeko\zugferd\entities\en16931\ram\DocumentContextParameterType $businessProcessSpecifiedDocumentContextParameter)
+    public function setBusinessProcessSpecifiedDocumentContextParameter(?\horstoeko\zugferd\entities\en16931\ram\DocumentContextParameterType $businessProcessSpecifiedDocumentContextParameter = null)
     {
         $this->businessProcessSpecifiedDocumentContextParameter = $businessProcessSpecifiedDocumentContextParameter;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ExchangedDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ExchangedDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ExchangedDocumentType.php	(revision 8504)
@@ -149,5 +149,5 @@
      * @return self
      */
-    public function setIncludedNote(array $includedNote)
+    public function setIncludedNote(?array $includedNote = null)
     {
         $this->includedNote = $includedNote;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/HeaderTradeAgreementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/HeaderTradeAgreementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/HeaderTradeAgreementType.php	(revision 8504)
@@ -140,5 +140,5 @@
      * @return self
      */
-    public function setSellerTaxRepresentativeTradeParty(\horstoeko\zugferd\entities\en16931\ram\TradePartyType $sellerTaxRepresentativeTradeParty)
+    public function setSellerTaxRepresentativeTradeParty(?\horstoeko\zugferd\entities\en16931\ram\TradePartyType $sellerTaxRepresentativeTradeParty = null)
     {
         $this->sellerTaxRepresentativeTradeParty = $sellerTaxRepresentativeTradeParty;
@@ -162,5 +162,5 @@
      * @return self
      */
-    public function setSellerOrderReferencedDocument(\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $sellerOrderReferencedDocument)
+    public function setSellerOrderReferencedDocument(?\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $sellerOrderReferencedDocument = null)
     {
         $this->sellerOrderReferencedDocument = $sellerOrderReferencedDocument;
@@ -184,5 +184,5 @@
      * @return self
      */
-    public function setBuyerOrderReferencedDocument(\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $buyerOrderReferencedDocument)
+    public function setBuyerOrderReferencedDocument(?\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $buyerOrderReferencedDocument = null)
     {
         $this->buyerOrderReferencedDocument = $buyerOrderReferencedDocument;
@@ -206,5 +206,5 @@
      * @return self
      */
-    public function setContractReferencedDocument(\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $contractReferencedDocument)
+    public function setContractReferencedDocument(?\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $contractReferencedDocument = null)
     {
         $this->contractReferencedDocument = $contractReferencedDocument;
@@ -262,5 +262,5 @@
      * @return self
      */
-    public function setAdditionalReferencedDocument(array $additionalReferencedDocument)
+    public function setAdditionalReferencedDocument(?array $additionalReferencedDocument = null)
     {
         $this->additionalReferencedDocument = $additionalReferencedDocument;
@@ -284,5 +284,5 @@
      * @return self
      */
-    public function setSpecifiedProcuringProject(\horstoeko\zugferd\entities\en16931\ram\ProcuringProjectType $specifiedProcuringProject)
+    public function setSpecifiedProcuringProject(?\horstoeko\zugferd\entities\en16931\ram\ProcuringProjectType $specifiedProcuringProject = null)
     {
         $this->specifiedProcuringProject = $specifiedProcuringProject;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/HeaderTradeDeliveryType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/HeaderTradeDeliveryType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/HeaderTradeDeliveryType.php	(revision 8504)
@@ -47,5 +47,5 @@
      * @return self
      */
-    public function setShipToTradeParty(\horstoeko\zugferd\entities\en16931\ram\TradePartyType $shipToTradeParty)
+    public function setShipToTradeParty(?\horstoeko\zugferd\entities\en16931\ram\TradePartyType $shipToTradeParty = null)
     {
         $this->shipToTradeParty = $shipToTradeParty;
@@ -69,5 +69,5 @@
      * @return self
      */
-    public function setActualDeliverySupplyChainEvent(\horstoeko\zugferd\entities\en16931\ram\SupplyChainEventType $actualDeliverySupplyChainEvent)
+    public function setActualDeliverySupplyChainEvent(?\horstoeko\zugferd\entities\en16931\ram\SupplyChainEventType $actualDeliverySupplyChainEvent = null)
     {
         $this->actualDeliverySupplyChainEvent = $actualDeliverySupplyChainEvent;
@@ -91,5 +91,5 @@
      * @return self
      */
-    public function setDespatchAdviceReferencedDocument(\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $despatchAdviceReferencedDocument)
+    public function setDespatchAdviceReferencedDocument(?\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $despatchAdviceReferencedDocument = null)
     {
         $this->despatchAdviceReferencedDocument = $despatchAdviceReferencedDocument;
@@ -113,5 +113,5 @@
      * @return self
      */
-    public function setReceivingAdviceReferencedDocument(\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $receivingAdviceReferencedDocument)
+    public function setReceivingAdviceReferencedDocument(?\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $receivingAdviceReferencedDocument = null)
     {
         $this->receivingAdviceReferencedDocument = $receivingAdviceReferencedDocument;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/HeaderTradeSettlementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/HeaderTradeSettlementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/HeaderTradeSettlementType.php	(revision 8504)
@@ -37,7 +37,9 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans
-     */
-    private $specifiedTradeSettlementPaymentMeans = null;
+     * @var \horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType[] $specifiedTradeSettlementPaymentMeans
+     */
+    private $specifiedTradeSettlementPaymentMeans = [
+        
+    ];
 
     /**
@@ -71,7 +73,9 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $invoiceReferencedDocument
-     */
-    private $invoiceReferencedDocument = null;
+     * @var \horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType[] $invoiceReferencedDocument
+     */
+    private $invoiceReferencedDocument = [
+        
+    ];
 
     /**
@@ -96,5 +100,5 @@
      * @return self
      */
-    public function setCreditorReferenceID(\horstoeko\zugferd\entities\en16931\udt\IDType $creditorReferenceID)
+    public function setCreditorReferenceID(?\horstoeko\zugferd\entities\en16931\udt\IDType $creditorReferenceID = null)
     {
         $this->creditorReferenceID = $creditorReferenceID;
@@ -184,5 +188,5 @@
      * @return self
      */
-    public function setPayeeTradeParty(\horstoeko\zugferd\entities\en16931\ram\TradePartyType $payeeTradeParty)
+    public function setPayeeTradeParty(?\horstoeko\zugferd\entities\en16931\ram\TradePartyType $payeeTradeParty = null)
     {
         $this->payeeTradeParty = $payeeTradeParty;
@@ -191,7 +195,41 @@
 
     /**
+     * Adds as specifiedTradeSettlementPaymentMeans
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans
+     */
+    public function addToSpecifiedTradeSettlementPaymentMeans(\horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans)
+    {
+        $this->specifiedTradeSettlementPaymentMeans[] = $specifiedTradeSettlementPaymentMeans;
+        return $this;
+    }
+
+    /**
+     * isset specifiedTradeSettlementPaymentMeans
+     *
+     * @param  int|string $index
+     * @return bool
+     */
+    public function issetSpecifiedTradeSettlementPaymentMeans($index)
+    {
+        return isset($this->specifiedTradeSettlementPaymentMeans[$index]);
+    }
+
+    /**
+     * unset specifiedTradeSettlementPaymentMeans
+     *
+     * @param  int|string $index
+     * @return void
+     */
+    public function unsetSpecifiedTradeSettlementPaymentMeans($index)
+    {
+        unset($this->specifiedTradeSettlementPaymentMeans[$index]);
+    }
+
+    /**
      * Gets as specifiedTradeSettlementPaymentMeans
      *
-     * @return \horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType
+     * @return \horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType[]
      */
     public function getSpecifiedTradeSettlementPaymentMeans()
@@ -203,8 +241,8 @@
      * Sets a new specifiedTradeSettlementPaymentMeans
      *
-     * @param  \horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans
-     * @return self
-     */
-    public function setSpecifiedTradeSettlementPaymentMeans(\horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType $specifiedTradeSettlementPaymentMeans)
+     * @param  \horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType[] $specifiedTradeSettlementPaymentMeans
+     * @return self
+     */
+    public function setSpecifiedTradeSettlementPaymentMeans(?array $specifiedTradeSettlementPaymentMeans = null)
     {
         $this->specifiedTradeSettlementPaymentMeans = $specifiedTradeSettlementPaymentMeans;
@@ -284,5 +322,5 @@
      * @return self
      */
-    public function setBillingSpecifiedPeriod(\horstoeko\zugferd\entities\en16931\ram\SpecifiedPeriodType $billingSpecifiedPeriod)
+    public function setBillingSpecifiedPeriod(?\horstoeko\zugferd\entities\en16931\ram\SpecifiedPeriodType $billingSpecifiedPeriod = null)
     {
         $this->billingSpecifiedPeriod = $billingSpecifiedPeriod;
@@ -340,5 +378,5 @@
      * @return self
      */
-    public function setSpecifiedTradeAllowanceCharge(array $specifiedTradeAllowanceCharge)
+    public function setSpecifiedTradeAllowanceCharge(?array $specifiedTradeAllowanceCharge = null)
     {
         $this->specifiedTradeAllowanceCharge = $specifiedTradeAllowanceCharge;
@@ -362,5 +400,5 @@
      * @return self
      */
-    public function setSpecifiedTradePaymentTerms(\horstoeko\zugferd\entities\en16931\ram\TradePaymentTermsType $specifiedTradePaymentTerms)
+    public function setSpecifiedTradePaymentTerms(?\horstoeko\zugferd\entities\en16931\ram\TradePaymentTermsType $specifiedTradePaymentTerms = null)
     {
         $this->specifiedTradePaymentTerms = $specifiedTradePaymentTerms;
@@ -391,7 +429,41 @@
 
     /**
+     * Adds as invoiceReferencedDocument
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $invoiceReferencedDocument
+     */
+    public function addToInvoiceReferencedDocument(\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $invoiceReferencedDocument)
+    {
+        $this->invoiceReferencedDocument[] = $invoiceReferencedDocument;
+        return $this;
+    }
+
+    /**
+     * isset invoiceReferencedDocument
+     *
+     * @param  int|string $index
+     * @return bool
+     */
+    public function issetInvoiceReferencedDocument($index)
+    {
+        return isset($this->invoiceReferencedDocument[$index]);
+    }
+
+    /**
+     * unset invoiceReferencedDocument
+     *
+     * @param  int|string $index
+     * @return void
+     */
+    public function unsetInvoiceReferencedDocument($index)
+    {
+        unset($this->invoiceReferencedDocument[$index]);
+    }
+
+    /**
      * Gets as invoiceReferencedDocument
      *
-     * @return \horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType
+     * @return \horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType[]
      */
     public function getInvoiceReferencedDocument()
@@ -403,8 +475,8 @@
      * Sets a new invoiceReferencedDocument
      *
-     * @param  \horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $invoiceReferencedDocument
-     * @return self
-     */
-    public function setInvoiceReferencedDocument(\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $invoiceReferencedDocument)
+     * @param  \horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType[] $invoiceReferencedDocument
+     * @return self
+     */
+    public function setInvoiceReferencedDocument(?array $invoiceReferencedDocument = null)
     {
         $this->invoiceReferencedDocument = $invoiceReferencedDocument;
@@ -428,5 +500,5 @@
      * @return self
      */
-    public function setReceivableSpecifiedTradeAccountingAccount(\horstoeko\zugferd\entities\en16931\ram\TradeAccountingAccountType $receivableSpecifiedTradeAccountingAccount)
+    public function setReceivableSpecifiedTradeAccountingAccount(?\horstoeko\zugferd\entities\en16931\ram\TradeAccountingAccountType $receivableSpecifiedTradeAccountingAccount = null)
     {
         $this->receivableSpecifiedTradeAccountingAccount = $receivableSpecifiedTradeAccountingAccount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/LegalOrganizationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/LegalOrganizationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/LegalOrganizationType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setID(\horstoeko\zugferd\entities\en16931\udt\IDType $iD)
+    public function setID(?\horstoeko\zugferd\entities\en16931\udt\IDType $iD = null)
     {
         $this->iD = $iD;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/LineTradeAgreementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/LineTradeAgreementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/LineTradeAgreementType.php	(revision 8504)
@@ -42,5 +42,5 @@
      * @return self
      */
-    public function setBuyerOrderReferencedDocument(\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $buyerOrderReferencedDocument)
+    public function setBuyerOrderReferencedDocument(?\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $buyerOrderReferencedDocument = null)
     {
         $this->buyerOrderReferencedDocument = $buyerOrderReferencedDocument;
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setGrossPriceProductTradePrice(\horstoeko\zugferd\entities\en16931\ram\TradePriceType $grossPriceProductTradePrice)
+    public function setGrossPriceProductTradePrice(?\horstoeko\zugferd\entities\en16931\ram\TradePriceType $grossPriceProductTradePrice = null)
     {
         $this->grossPriceProductTradePrice = $grossPriceProductTradePrice;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/LineTradeSettlementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/LineTradeSettlementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/LineTradeSettlementType.php	(revision 8504)
@@ -81,5 +81,5 @@
      * @return self
      */
-    public function setBillingSpecifiedPeriod(\horstoeko\zugferd\entities\en16931\ram\SpecifiedPeriodType $billingSpecifiedPeriod)
+    public function setBillingSpecifiedPeriod(?\horstoeko\zugferd\entities\en16931\ram\SpecifiedPeriodType $billingSpecifiedPeriod = null)
     {
         $this->billingSpecifiedPeriod = $billingSpecifiedPeriod;
@@ -137,5 +137,5 @@
      * @return self
      */
-    public function setSpecifiedTradeAllowanceCharge(array $specifiedTradeAllowanceCharge)
+    public function setSpecifiedTradeAllowanceCharge(?array $specifiedTradeAllowanceCharge = null)
     {
         $this->specifiedTradeAllowanceCharge = $specifiedTradeAllowanceCharge;
@@ -181,5 +181,5 @@
      * @return self
      */
-    public function setAdditionalReferencedDocument(\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $additionalReferencedDocument)
+    public function setAdditionalReferencedDocument(?\horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType $additionalReferencedDocument = null)
     {
         $this->additionalReferencedDocument = $additionalReferencedDocument;
@@ -203,5 +203,5 @@
      * @return self
      */
-    public function setReceivableSpecifiedTradeAccountingAccount(\horstoeko\zugferd\entities\en16931\ram\TradeAccountingAccountType $receivableSpecifiedTradeAccountingAccount)
+    public function setReceivableSpecifiedTradeAccountingAccount(?\horstoeko\zugferd\entities\en16931\ram\TradeAccountingAccountType $receivableSpecifiedTradeAccountingAccount = null)
     {
         $this->receivableSpecifiedTradeAccountingAccount = $receivableSpecifiedTradeAccountingAccount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/NoteType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/NoteType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/NoteType.php	(revision 8504)
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setSubjectCode(\horstoeko\zugferd\entities\en16931\udt\CodeType $subjectCode)
+    public function setSubjectCode(?\horstoeko\zugferd\entities\en16931\udt\CodeType $subjectCode = null)
     {
         $this->subjectCode = $subjectCode;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ProductClassificationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ProductClassificationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ProductClassificationType.php	(revision 8504)
@@ -32,5 +32,5 @@
      * @return self
      */
-    public function setClassCode(\horstoeko\zugferd\entities\en16931\udt\CodeType $classCode)
+    public function setClassCode(?\horstoeko\zugferd\entities\en16931\udt\CodeType $classCode = null)
     {
         $this->classCode = $classCode;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ReferencedDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ReferencedDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/ReferencedDocumentType.php	(revision 8504)
@@ -67,5 +67,5 @@
      * @return self
      */
-    public function setIssuerAssignedID(\horstoeko\zugferd\entities\en16931\udt\IDType $issuerAssignedID)
+    public function setIssuerAssignedID(?\horstoeko\zugferd\entities\en16931\udt\IDType $issuerAssignedID = null)
     {
         $this->issuerAssignedID = $issuerAssignedID;
@@ -89,5 +89,5 @@
      * @return self
      */
-    public function setURIID(\horstoeko\zugferd\entities\en16931\udt\IDType $uRIID)
+    public function setURIID(?\horstoeko\zugferd\entities\en16931\udt\IDType $uRIID = null)
     {
         $this->uRIID = $uRIID;
@@ -111,5 +111,5 @@
      * @return self
      */
-    public function setLineID(\horstoeko\zugferd\entities\en16931\udt\IDType $lineID)
+    public function setLineID(?\horstoeko\zugferd\entities\en16931\udt\IDType $lineID = null)
     {
         $this->lineID = $lineID;
@@ -177,5 +177,5 @@
      * @return self
      */
-    public function setAttachmentBinaryObject(\horstoeko\zugferd\entities\en16931\udt\BinaryObjectType $attachmentBinaryObject)
+    public function setAttachmentBinaryObject(?\horstoeko\zugferd\entities\en16931\udt\BinaryObjectType $attachmentBinaryObject = null)
     {
         $this->attachmentBinaryObject = $attachmentBinaryObject;
@@ -221,5 +221,5 @@
      * @return self
      */
-    public function setFormattedIssueDateTime(\horstoeko\zugferd\entities\en16931\qdt\FormattedDateTimeType $formattedIssueDateTime)
+    public function setFormattedIssueDateTime(?\horstoeko\zugferd\entities\en16931\qdt\FormattedDateTimeType $formattedIssueDateTime = null)
     {
         $this->formattedIssueDateTime = $formattedIssueDateTime;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/SpecifiedPeriodType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/SpecifiedPeriodType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/SpecifiedPeriodType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setStartDateTime(\horstoeko\zugferd\entities\en16931\udt\DateTimeType $startDateTime)
+    public function setStartDateTime(?\horstoeko\zugferd\entities\en16931\udt\DateTimeType $startDateTime = null)
     {
         $this->startDateTime = $startDateTime;
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setEndDateTime(\horstoeko\zugferd\entities\en16931\udt\DateTimeType $endDateTime)
+    public function setEndDateTime(?\horstoeko\zugferd\entities\en16931\udt\DateTimeType $endDateTime = null)
     {
         $this->endDateTime = $endDateTime;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeAddressType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeAddressType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeAddressType.php	(revision 8504)
@@ -62,5 +62,5 @@
      * @return self
      */
-    public function setPostcodeCode(\horstoeko\zugferd\entities\en16931\udt\CodeType $postcodeCode)
+    public function setPostcodeCode(?\horstoeko\zugferd\entities\en16931\udt\CodeType $postcodeCode = null)
     {
         $this->postcodeCode = $postcodeCode;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeAllowanceChargeType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeAllowanceChargeType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeAllowanceChargeType.php	(revision 8504)
@@ -106,5 +106,5 @@
      * @return self
      */
-    public function setBasisAmount(\horstoeko\zugferd\entities\en16931\udt\AmountType $basisAmount)
+    public function setBasisAmount(?\horstoeko\zugferd\entities\en16931\udt\AmountType $basisAmount = null)
     {
         $this->basisAmount = $basisAmount;
@@ -194,5 +194,5 @@
      * @return self
      */
-    public function setCategoryTradeTax(\horstoeko\zugferd\entities\en16931\ram\TradeTaxType $categoryTradeTax)
+    public function setCategoryTradeTax(?\horstoeko\zugferd\entities\en16931\ram\TradeTaxType $categoryTradeTax = null)
     {
         $this->categoryTradeTax = $categoryTradeTax;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeContactType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeContactType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeContactType.php	(revision 8504)
@@ -91,5 +91,5 @@
      * @return self
      */
-    public function setTelephoneUniversalCommunication(\horstoeko\zugferd\entities\en16931\ram\UniversalCommunicationType $telephoneUniversalCommunication)
+    public function setTelephoneUniversalCommunication(?\horstoeko\zugferd\entities\en16931\ram\UniversalCommunicationType $telephoneUniversalCommunication = null)
     {
         $this->telephoneUniversalCommunication = $telephoneUniversalCommunication;
@@ -113,5 +113,5 @@
      * @return self
      */
-    public function setEmailURIUniversalCommunication(\horstoeko\zugferd\entities\en16931\ram\UniversalCommunicationType $emailURIUniversalCommunication)
+    public function setEmailURIUniversalCommunication(?\horstoeko\zugferd\entities\en16931\ram\UniversalCommunicationType $emailURIUniversalCommunication = null)
     {
         $this->emailURIUniversalCommunication = $emailURIUniversalCommunication;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradePartyType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradePartyType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradePartyType.php	(revision 8504)
@@ -112,5 +112,5 @@
      * @return self
      */
-    public function setID(array $iD)
+    public function setID(?array $iD = null)
     {
         $this->iD = $iD;
@@ -168,5 +168,5 @@
      * @return self
      */
-    public function setGlobalID(array $globalID)
+    public function setGlobalID(?array $globalID = null)
     {
         $this->globalID = $globalID;
@@ -234,5 +234,5 @@
      * @return self
      */
-    public function setSpecifiedLegalOrganization(\horstoeko\zugferd\entities\en16931\ram\LegalOrganizationType $specifiedLegalOrganization)
+    public function setSpecifiedLegalOrganization(?\horstoeko\zugferd\entities\en16931\ram\LegalOrganizationType $specifiedLegalOrganization = null)
     {
         $this->specifiedLegalOrganization = $specifiedLegalOrganization;
@@ -256,5 +256,5 @@
      * @return self
      */
-    public function setDefinedTradeContact(\horstoeko\zugferd\entities\en16931\ram\TradeContactType $definedTradeContact)
+    public function setDefinedTradeContact(?\horstoeko\zugferd\entities\en16931\ram\TradeContactType $definedTradeContact = null)
     {
         $this->definedTradeContact = $definedTradeContact;
@@ -278,5 +278,5 @@
      * @return self
      */
-    public function setPostalTradeAddress(\horstoeko\zugferd\entities\en16931\ram\TradeAddressType $postalTradeAddress)
+    public function setPostalTradeAddress(?\horstoeko\zugferd\entities\en16931\ram\TradeAddressType $postalTradeAddress = null)
     {
         $this->postalTradeAddress = $postalTradeAddress;
@@ -300,5 +300,5 @@
      * @return self
      */
-    public function setURIUniversalCommunication(\horstoeko\zugferd\entities\en16931\ram\UniversalCommunicationType $uRIUniversalCommunication)
+    public function setURIUniversalCommunication(?\horstoeko\zugferd\entities\en16931\ram\UniversalCommunicationType $uRIUniversalCommunication = null)
     {
         $this->uRIUniversalCommunication = $uRIUniversalCommunication;
@@ -356,5 +356,5 @@
      * @return self
      */
-    public function setSpecifiedTaxRegistration(array $specifiedTaxRegistration)
+    public function setSpecifiedTaxRegistration(?array $specifiedTaxRegistration = null)
     {
         $this->specifiedTaxRegistration = $specifiedTaxRegistration;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradePaymentTermsType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradePaymentTermsType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradePaymentTermsType.php	(revision 8504)
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setDueDateDateTime(\horstoeko\zugferd\entities\en16931\udt\DateTimeType $dueDateDateTime)
+    public function setDueDateDateTime(?\horstoeko\zugferd\entities\en16931\udt\DateTimeType $dueDateDateTime = null)
     {
         $this->dueDateDateTime = $dueDateDateTime;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setDirectDebitMandateID(\horstoeko\zugferd\entities\en16931\udt\IDType $directDebitMandateID)
+    public function setDirectDebitMandateID(?\horstoeko\zugferd\entities\en16931\udt\IDType $directDebitMandateID = null)
     {
         $this->directDebitMandateID = $directDebitMandateID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradePriceType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradePriceType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradePriceType.php	(revision 8504)
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setBasisQuantity(\horstoeko\zugferd\entities\en16931\udt\QuantityType $basisQuantity)
+    public function setBasisQuantity(?\horstoeko\zugferd\entities\en16931\udt\QuantityType $basisQuantity = null)
     {
         $this->basisQuantity = $basisQuantity;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setAppliedTradeAllowanceCharge(\horstoeko\zugferd\entities\en16931\ram\TradeAllowanceChargeType $appliedTradeAllowanceCharge)
+    public function setAppliedTradeAllowanceCharge(?\horstoeko\zugferd\entities\en16931\ram\TradeAllowanceChargeType $appliedTradeAllowanceCharge = null)
     {
         $this->appliedTradeAllowanceCharge = $appliedTradeAllowanceCharge;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeProductType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeProductType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeProductType.php	(revision 8504)
@@ -71,5 +71,5 @@
      * @return self
      */
-    public function setGlobalID(\horstoeko\zugferd\entities\en16931\udt\IDType $globalID)
+    public function setGlobalID(?\horstoeko\zugferd\entities\en16931\udt\IDType $globalID = null)
     {
         $this->globalID = $globalID;
@@ -93,5 +93,5 @@
      * @return self
      */
-    public function setSellerAssignedID(\horstoeko\zugferd\entities\en16931\udt\IDType $sellerAssignedID)
+    public function setSellerAssignedID(?\horstoeko\zugferd\entities\en16931\udt\IDType $sellerAssignedID = null)
     {
         $this->sellerAssignedID = $sellerAssignedID;
@@ -115,5 +115,5 @@
      * @return self
      */
-    public function setBuyerAssignedID(\horstoeko\zugferd\entities\en16931\udt\IDType $buyerAssignedID)
+    public function setBuyerAssignedID(?\horstoeko\zugferd\entities\en16931\udt\IDType $buyerAssignedID = null)
     {
         $this->buyerAssignedID = $buyerAssignedID;
@@ -215,5 +215,5 @@
      * @return self
      */
-    public function setApplicableProductCharacteristic(array $applicableProductCharacteristic)
+    public function setApplicableProductCharacteristic(?array $applicableProductCharacteristic = null)
     {
         $this->applicableProductCharacteristic = $applicableProductCharacteristic;
@@ -271,5 +271,5 @@
      * @return self
      */
-    public function setDesignatedProductClassification(array $designatedProductClassification)
+    public function setDesignatedProductClassification(?array $designatedProductClassification = null)
     {
         $this->designatedProductClassification = $designatedProductClassification;
@@ -293,5 +293,5 @@
      * @return self
      */
-    public function setOriginTradeCountry(\horstoeko\zugferd\entities\en16931\ram\TradeCountryType $originTradeCountry)
+    public function setOriginTradeCountry(?\horstoeko\zugferd\entities\en16931\ram\TradeCountryType $originTradeCountry = null)
     {
         $this->originTradeCountry = $originTradeCountry;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeSettlementHeaderMonetarySummationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeSettlementHeaderMonetarySummationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeSettlementHeaderMonetarySummationType.php	(revision 8504)
@@ -96,5 +96,5 @@
      * @return self
      */
-    public function setChargeTotalAmount(\horstoeko\zugferd\entities\en16931\udt\AmountType $chargeTotalAmount)
+    public function setChargeTotalAmount(?\horstoeko\zugferd\entities\en16931\udt\AmountType $chargeTotalAmount = null)
     {
         $this->chargeTotalAmount = $chargeTotalAmount;
@@ -118,5 +118,5 @@
      * @return self
      */
-    public function setAllowanceTotalAmount(\horstoeko\zugferd\entities\en16931\udt\AmountType $allowanceTotalAmount)
+    public function setAllowanceTotalAmount(?\horstoeko\zugferd\entities\en16931\udt\AmountType $allowanceTotalAmount = null)
     {
         $this->allowanceTotalAmount = $allowanceTotalAmount;
@@ -196,5 +196,5 @@
      * @return self
      */
-    public function setTaxTotalAmount(array $taxTotalAmount)
+    public function setTaxTotalAmount(?array $taxTotalAmount = null)
     {
         $this->taxTotalAmount = $taxTotalAmount;
@@ -218,5 +218,5 @@
      * @return self
      */
-    public function setRoundingAmount(\horstoeko\zugferd\entities\en16931\udt\AmountType $roundingAmount)
+    public function setRoundingAmount(?\horstoeko\zugferd\entities\en16931\udt\AmountType $roundingAmount = null)
     {
         $this->roundingAmount = $roundingAmount;
@@ -262,5 +262,5 @@
      * @return self
      */
-    public function setTotalPrepaidAmount(\horstoeko\zugferd\entities\en16931\udt\AmountType $totalPrepaidAmount)
+    public function setTotalPrepaidAmount(?\horstoeko\zugferd\entities\en16931\udt\AmountType $totalPrepaidAmount = null)
     {
         $this->totalPrepaidAmount = $totalPrepaidAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeSettlementPaymentMeansType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeSettlementPaymentMeansType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeSettlementPaymentMeansType.php	(revision 8504)
@@ -101,5 +101,5 @@
      * @return self
      */
-    public function setApplicableTradeSettlementFinancialCard(\horstoeko\zugferd\entities\en16931\ram\TradeSettlementFinancialCardType $applicableTradeSettlementFinancialCard)
+    public function setApplicableTradeSettlementFinancialCard(?\horstoeko\zugferd\entities\en16931\ram\TradeSettlementFinancialCardType $applicableTradeSettlementFinancialCard = null)
     {
         $this->applicableTradeSettlementFinancialCard = $applicableTradeSettlementFinancialCard;
@@ -123,5 +123,5 @@
      * @return self
      */
-    public function setPayerPartyDebtorFinancialAccount(\horstoeko\zugferd\entities\en16931\ram\DebtorFinancialAccountType $payerPartyDebtorFinancialAccount)
+    public function setPayerPartyDebtorFinancialAccount(?\horstoeko\zugferd\entities\en16931\ram\DebtorFinancialAccountType $payerPartyDebtorFinancialAccount = null)
     {
         $this->payerPartyDebtorFinancialAccount = $payerPartyDebtorFinancialAccount;
@@ -145,5 +145,5 @@
      * @return self
      */
-    public function setPayeePartyCreditorFinancialAccount(\horstoeko\zugferd\entities\en16931\ram\CreditorFinancialAccountType $payeePartyCreditorFinancialAccount)
+    public function setPayeePartyCreditorFinancialAccount(?\horstoeko\zugferd\entities\en16931\ram\CreditorFinancialAccountType $payeePartyCreditorFinancialAccount = null)
     {
         $this->payeePartyCreditorFinancialAccount = $payeePartyCreditorFinancialAccount;
@@ -167,5 +167,5 @@
      * @return self
      */
-    public function setPayeeSpecifiedCreditorFinancialInstitution(\horstoeko\zugferd\entities\en16931\ram\CreditorFinancialInstitutionType $payeeSpecifiedCreditorFinancialInstitution)
+    public function setPayeeSpecifiedCreditorFinancialInstitution(?\horstoeko\zugferd\entities\en16931\ram\CreditorFinancialInstitutionType $payeeSpecifiedCreditorFinancialInstitution = null)
     {
         $this->payeeSpecifiedCreditorFinancialInstitution = $payeeSpecifiedCreditorFinancialInstitution;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeTaxType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeTaxType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/TradeTaxType.php	(revision 8504)
@@ -72,5 +72,5 @@
      * @return self
      */
-    public function setCalculatedAmount(\horstoeko\zugferd\entities\en16931\udt\AmountType $calculatedAmount)
+    public function setCalculatedAmount(?\horstoeko\zugferd\entities\en16931\udt\AmountType $calculatedAmount = null)
     {
         $this->calculatedAmount = $calculatedAmount;
@@ -138,5 +138,5 @@
      * @return self
      */
-    public function setBasisAmount(\horstoeko\zugferd\entities\en16931\udt\AmountType $basisAmount)
+    public function setBasisAmount(?\horstoeko\zugferd\entities\en16931\udt\AmountType $basisAmount = null)
     {
         $this->basisAmount = $basisAmount;
@@ -182,5 +182,5 @@
      * @return self
      */
-    public function setExemptionReasonCode(\horstoeko\zugferd\entities\en16931\udt\CodeType $exemptionReasonCode)
+    public function setExemptionReasonCode(?\horstoeko\zugferd\entities\en16931\udt\CodeType $exemptionReasonCode = null)
     {
         $this->exemptionReasonCode = $exemptionReasonCode;
@@ -204,5 +204,5 @@
      * @return self
      */
-    public function setTaxPointDate(\horstoeko\zugferd\entities\en16931\udt\DateType $taxPointDate)
+    public function setTaxPointDate(?\horstoeko\zugferd\entities\en16931\udt\DateType $taxPointDate = null)
     {
         $this->taxPointDate = $taxPointDate;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/UniversalCommunicationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/UniversalCommunicationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/ram/UniversalCommunicationType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setURIID(\horstoeko\zugferd\entities\en16931\udt\IDType $uRIID)
+    public function setURIID(?\horstoeko\zugferd\entities\en16931\udt\IDType $uRIID = null)
     {
         $this->uRIID = $uRIID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/udt/DateTimeType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/udt/DateTimeType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/udt/DateTimeType.php	(revision 8504)
@@ -32,5 +32,5 @@
      * @return self
      */
-    public function setDateTimeString(\horstoeko\zugferd\entities\en16931\udt\DateTimeType\DateTimeStringAType $dateTimeString)
+    public function setDateTimeString(?\horstoeko\zugferd\entities\en16931\udt\DateTimeType\DateTimeStringAType $dateTimeString = null)
     {
         $this->dateTimeString = $dateTimeString;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/udt/DateType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/udt/DateType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/en16931/udt/DateType.php	(revision 8504)
@@ -32,5 +32,5 @@
      * @return self
      */
-    public function setDateString(\horstoeko\zugferd\entities\en16931\udt\DateType\DateStringAType $dateString)
+    public function setDateString(?\horstoeko\zugferd\entities\en16931\udt\DateType\DateStringAType $dateString = null)
     {
         $this->dateString = $dateString;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/AdvancePaymentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/AdvancePaymentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/AdvancePaymentType.php	(revision 8504)
@@ -27,4 +27,9 @@
         
     ];
+
+    /**
+     * @var \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $invoiceSpecifiedReferencedDocument
+     */
+    private $invoiceSpecifiedReferencedDocument = null;
 
     /**
@@ -66,5 +71,5 @@
      * @return self
      */
-    public function setFormattedReceivedDateTime(\horstoeko\zugferd\entities\extended\qdt\FormattedDateTimeType $formattedReceivedDateTime)
+    public function setFormattedReceivedDateTime(?\horstoeko\zugferd\entities\extended\qdt\FormattedDateTimeType $formattedReceivedDateTime = null)
     {
         $this->formattedReceivedDateTime = $formattedReceivedDateTime;
@@ -127,3 +132,25 @@
         return $this;
     }
+
+    /**
+     * Gets as invoiceSpecifiedReferencedDocument
+     *
+     * @return \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType
+     */
+    public function getInvoiceSpecifiedReferencedDocument()
+    {
+        return $this->invoiceSpecifiedReferencedDocument;
+    }
+
+    /**
+     * Sets a new invoiceSpecifiedReferencedDocument
+     *
+     * @param  \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $invoiceSpecifiedReferencedDocument
+     * @return self
+     */
+    public function setInvoiceSpecifiedReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $invoiceSpecifiedReferencedDocument = null)
+    {
+        $this->invoiceSpecifiedReferencedDocument = $invoiceSpecifiedReferencedDocument;
+        return $this;
+    }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/CreditorFinancialAccountType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/CreditorFinancialAccountType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/CreditorFinancialAccountType.php	(revision 8504)
@@ -42,5 +42,5 @@
      * @return self
      */
-    public function setIBANID(\horstoeko\zugferd\entities\extended\udt\IDType $iBANID)
+    public function setIBANID(?\horstoeko\zugferd\entities\extended\udt\IDType $iBANID = null)
     {
         $this->iBANID = $iBANID;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setProprietaryID(\horstoeko\zugferd\entities\extended\udt\IDType $proprietaryID)
+    public function setProprietaryID(?\horstoeko\zugferd\entities\extended\udt\IDType $proprietaryID = null)
     {
         $this->proprietaryID = $proprietaryID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/DocumentLineDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/DocumentLineDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/DocumentLineDocumentType.php	(revision 8504)
@@ -76,5 +76,5 @@
      * @return self
      */
-    public function setParentLineID(\horstoeko\zugferd\entities\extended\udt\IDType $parentLineID)
+    public function setParentLineID(?\horstoeko\zugferd\entities\extended\udt\IDType $parentLineID = null)
     {
         $this->parentLineID = $parentLineID;
@@ -120,5 +120,5 @@
      * @return self
      */
-    public function setLineStatusReasonCode(\horstoeko\zugferd\entities\extended\udt\CodeType $lineStatusReasonCode)
+    public function setLineStatusReasonCode(?\horstoeko\zugferd\entities\extended\udt\CodeType $lineStatusReasonCode = null)
     {
         $this->lineStatusReasonCode = $lineStatusReasonCode;
@@ -176,5 +176,5 @@
      * @return self
      */
-    public function setIncludedNote(array $includedNote)
+    public function setIncludedNote(?array $includedNote = null)
     {
         $this->includedNote = $includedNote;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ExchangedDocumentContextType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ExchangedDocumentContextType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ExchangedDocumentContextType.php	(revision 8504)
@@ -42,5 +42,5 @@
      * @return self
      */
-    public function setTestIndicator(\horstoeko\zugferd\entities\extended\udt\IndicatorType $testIndicator)
+    public function setTestIndicator(?\horstoeko\zugferd\entities\extended\udt\IndicatorType $testIndicator = null)
     {
         $this->testIndicator = $testIndicator;
@@ -64,5 +64,5 @@
      * @return self
      */
-    public function setBusinessProcessSpecifiedDocumentContextParameter(\horstoeko\zugferd\entities\extended\ram\DocumentContextParameterType $businessProcessSpecifiedDocumentContextParameter)
+    public function setBusinessProcessSpecifiedDocumentContextParameter(?\horstoeko\zugferd\entities\extended\ram\DocumentContextParameterType $businessProcessSpecifiedDocumentContextParameter = null)
     {
         $this->businessProcessSpecifiedDocumentContextParameter = $businessProcessSpecifiedDocumentContextParameter;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ExchangedDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ExchangedDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ExchangedDocumentType.php	(revision 8504)
@@ -37,9 +37,7 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\extended\udt\IDType[] $languageID
-     */
-    private $languageID = [
-        
-    ];
+     * @var \horstoeko\zugferd\entities\extended\udt\IDType $languageID
+     */
+    private $languageID = null;
 
     /**
@@ -159,5 +157,5 @@
      * @return self
      */
-    public function setCopyIndicator(\horstoeko\zugferd\entities\extended\udt\IndicatorType $copyIndicator)
+    public function setCopyIndicator(?\horstoeko\zugferd\entities\extended\udt\IndicatorType $copyIndicator = null)
     {
         $this->copyIndicator = $copyIndicator;
@@ -166,88 +164,54 @@
 
     /**
-     * Adds as languageID
-     *
-     * @return self
+     * Gets as languageID
+     *
+     * @return \horstoeko\zugferd\entities\extended\udt\IDType
+     */
+    public function getLanguageID()
+    {
+        return $this->languageID;
+    }
+
+    /**
+     * Sets a new languageID
+     *
      * @param  \horstoeko\zugferd\entities\extended\udt\IDType $languageID
-     */
-    public function addToLanguageID(\horstoeko\zugferd\entities\extended\udt\IDType $languageID)
-    {
-        $this->languageID[] = $languageID;
-        return $this;
-    }
-
-    /**
-     * isset languageID
+     * @return self
+     */
+    public function setLanguageID(?\horstoeko\zugferd\entities\extended\udt\IDType $languageID = null)
+    {
+        $this->languageID = $languageID;
+        return $this;
+    }
+
+    /**
+     * Adds as includedNote
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\extended\ram\NoteType $includedNote
+     */
+    public function addToIncludedNote(\horstoeko\zugferd\entities\extended\ram\NoteType $includedNote)
+    {
+        $this->includedNote[] = $includedNote;
+        return $this;
+    }
+
+    /**
+     * isset includedNote
      *
      * @param  int|string $index
      * @return bool
      */
-    public function issetLanguageID($index)
-    {
-        return isset($this->languageID[$index]);
-    }
-
-    /**
-     * unset languageID
+    public function issetIncludedNote($index)
+    {
+        return isset($this->includedNote[$index]);
+    }
+
+    /**
+     * unset includedNote
      *
      * @param  int|string $index
      * @return void
      */
-    public function unsetLanguageID($index)
-    {
-        unset($this->languageID[$index]);
-    }
-
-    /**
-     * Gets as languageID
-     *
-     * @return \horstoeko\zugferd\entities\extended\udt\IDType[]
-     */
-    public function getLanguageID()
-    {
-        return $this->languageID;
-    }
-
-    /**
-     * Sets a new languageID
-     *
-     * @param  \horstoeko\zugferd\entities\extended\udt\IDType[] $languageID
-     * @return self
-     */
-    public function setLanguageID(array $languageID)
-    {
-        $this->languageID = $languageID;
-        return $this;
-    }
-
-    /**
-     * Adds as includedNote
-     *
-     * @return self
-     * @param  \horstoeko\zugferd\entities\extended\ram\NoteType $includedNote
-     */
-    public function addToIncludedNote(\horstoeko\zugferd\entities\extended\ram\NoteType $includedNote)
-    {
-        $this->includedNote[] = $includedNote;
-        return $this;
-    }
-
-    /**
-     * isset includedNote
-     *
-     * @param  int|string $index
-     * @return bool
-     */
-    public function issetIncludedNote($index)
-    {
-        return isset($this->includedNote[$index]);
-    }
-
-    /**
-     * unset includedNote
-     *
-     * @param  int|string $index
-     * @return void
-     */
     public function unsetIncludedNote($index)
     {
@@ -271,5 +235,5 @@
      * @return self
      */
-    public function setIncludedNote(array $includedNote)
+    public function setIncludedNote(?array $includedNote = null)
     {
         $this->includedNote = $includedNote;
@@ -293,5 +257,5 @@
      * @return self
      */
-    public function setEffectiveSpecifiedPeriod(\horstoeko\zugferd\entities\extended\ram\SpecifiedPeriodType $effectiveSpecifiedPeriod)
+    public function setEffectiveSpecifiedPeriod(?\horstoeko\zugferd\entities\extended\ram\SpecifiedPeriodType $effectiveSpecifiedPeriod = null)
     {
         $this->effectiveSpecifiedPeriod = $effectiveSpecifiedPeriod;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/HeaderTradeAgreementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/HeaderTradeAgreementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/HeaderTradeAgreementType.php	(revision 8504)
@@ -177,5 +177,5 @@
      * @return self
      */
-    public function setSalesAgentTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $salesAgentTradeParty)
+    public function setSalesAgentTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $salesAgentTradeParty = null)
     {
         $this->salesAgentTradeParty = $salesAgentTradeParty;
@@ -199,5 +199,5 @@
      * @return self
      */
-    public function setBuyerTaxRepresentativeTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $buyerTaxRepresentativeTradeParty)
+    public function setBuyerTaxRepresentativeTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $buyerTaxRepresentativeTradeParty = null)
     {
         $this->buyerTaxRepresentativeTradeParty = $buyerTaxRepresentativeTradeParty;
@@ -221,5 +221,5 @@
      * @return self
      */
-    public function setSellerTaxRepresentativeTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $sellerTaxRepresentativeTradeParty)
+    public function setSellerTaxRepresentativeTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $sellerTaxRepresentativeTradeParty = null)
     {
         $this->sellerTaxRepresentativeTradeParty = $sellerTaxRepresentativeTradeParty;
@@ -243,5 +243,5 @@
      * @return self
      */
-    public function setProductEndUserTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $productEndUserTradeParty)
+    public function setProductEndUserTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $productEndUserTradeParty = null)
     {
         $this->productEndUserTradeParty = $productEndUserTradeParty;
@@ -265,5 +265,5 @@
      * @return self
      */
-    public function setApplicableTradeDeliveryTerms(\horstoeko\zugferd\entities\extended\ram\TradeDeliveryTermsType $applicableTradeDeliveryTerms)
+    public function setApplicableTradeDeliveryTerms(?\horstoeko\zugferd\entities\extended\ram\TradeDeliveryTermsType $applicableTradeDeliveryTerms = null)
     {
         $this->applicableTradeDeliveryTerms = $applicableTradeDeliveryTerms;
@@ -287,5 +287,5 @@
      * @return self
      */
-    public function setSellerOrderReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $sellerOrderReferencedDocument)
+    public function setSellerOrderReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $sellerOrderReferencedDocument = null)
     {
         $this->sellerOrderReferencedDocument = $sellerOrderReferencedDocument;
@@ -309,5 +309,5 @@
      * @return self
      */
-    public function setBuyerOrderReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $buyerOrderReferencedDocument)
+    public function setBuyerOrderReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $buyerOrderReferencedDocument = null)
     {
         $this->buyerOrderReferencedDocument = $buyerOrderReferencedDocument;
@@ -331,5 +331,5 @@
      * @return self
      */
-    public function setQuotationReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $quotationReferencedDocument)
+    public function setQuotationReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $quotationReferencedDocument = null)
     {
         $this->quotationReferencedDocument = $quotationReferencedDocument;
@@ -353,5 +353,5 @@
      * @return self
      */
-    public function setContractReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $contractReferencedDocument)
+    public function setContractReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $contractReferencedDocument = null)
     {
         $this->contractReferencedDocument = $contractReferencedDocument;
@@ -409,5 +409,5 @@
      * @return self
      */
-    public function setAdditionalReferencedDocument(array $additionalReferencedDocument)
+    public function setAdditionalReferencedDocument(?array $additionalReferencedDocument = null)
     {
         $this->additionalReferencedDocument = $additionalReferencedDocument;
@@ -431,5 +431,5 @@
      * @return self
      */
-    public function setBuyerAgentTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $buyerAgentTradeParty)
+    public function setBuyerAgentTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $buyerAgentTradeParty = null)
     {
         $this->buyerAgentTradeParty = $buyerAgentTradeParty;
@@ -453,5 +453,5 @@
      * @return self
      */
-    public function setSpecifiedProcuringProject(\horstoeko\zugferd\entities\extended\ram\ProcuringProjectType $specifiedProcuringProject)
+    public function setSpecifiedProcuringProject(?\horstoeko\zugferd\entities\extended\ram\ProcuringProjectType $specifiedProcuringProject = null)
     {
         $this->specifiedProcuringProject = $specifiedProcuringProject;
@@ -509,5 +509,5 @@
      * @return self
      */
-    public function setUltimateCustomerOrderReferencedDocument(array $ultimateCustomerOrderReferencedDocument)
+    public function setUltimateCustomerOrderReferencedDocument(?array $ultimateCustomerOrderReferencedDocument = null)
     {
         $this->ultimateCustomerOrderReferencedDocument = $ultimateCustomerOrderReferencedDocument;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/HeaderTradeDeliveryType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/HeaderTradeDeliveryType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/HeaderTradeDeliveryType.php	(revision 8504)
@@ -101,5 +101,5 @@
      * @return self
      */
-    public function setRelatedSupplyChainConsignment(array $relatedSupplyChainConsignment)
+    public function setRelatedSupplyChainConsignment(?array $relatedSupplyChainConsignment = null)
     {
         $this->relatedSupplyChainConsignment = $relatedSupplyChainConsignment;
@@ -123,5 +123,5 @@
      * @return self
      */
-    public function setShipToTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $shipToTradeParty)
+    public function setShipToTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $shipToTradeParty = null)
     {
         $this->shipToTradeParty = $shipToTradeParty;
@@ -145,5 +145,5 @@
      * @return self
      */
-    public function setUltimateShipToTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $ultimateShipToTradeParty)
+    public function setUltimateShipToTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $ultimateShipToTradeParty = null)
     {
         $this->ultimateShipToTradeParty = $ultimateShipToTradeParty;
@@ -167,5 +167,5 @@
      * @return self
      */
-    public function setShipFromTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $shipFromTradeParty)
+    public function setShipFromTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $shipFromTradeParty = null)
     {
         $this->shipFromTradeParty = $shipFromTradeParty;
@@ -189,5 +189,5 @@
      * @return self
      */
-    public function setActualDeliverySupplyChainEvent(\horstoeko\zugferd\entities\extended\ram\SupplyChainEventType $actualDeliverySupplyChainEvent)
+    public function setActualDeliverySupplyChainEvent(?\horstoeko\zugferd\entities\extended\ram\SupplyChainEventType $actualDeliverySupplyChainEvent = null)
     {
         $this->actualDeliverySupplyChainEvent = $actualDeliverySupplyChainEvent;
@@ -211,5 +211,5 @@
      * @return self
      */
-    public function setDespatchAdviceReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $despatchAdviceReferencedDocument)
+    public function setDespatchAdviceReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $despatchAdviceReferencedDocument = null)
     {
         $this->despatchAdviceReferencedDocument = $despatchAdviceReferencedDocument;
@@ -233,5 +233,5 @@
      * @return self
      */
-    public function setReceivingAdviceReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $receivingAdviceReferencedDocument)
+    public function setReceivingAdviceReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $receivingAdviceReferencedDocument = null)
     {
         $this->receivingAdviceReferencedDocument = $receivingAdviceReferencedDocument;
@@ -255,5 +255,5 @@
      * @return self
      */
-    public function setDeliveryNoteReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $deliveryNoteReferencedDocument)
+    public function setDeliveryNoteReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $deliveryNoteReferencedDocument = null)
     {
         $this->deliveryNoteReferencedDocument = $deliveryNoteReferencedDocument;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/HeaderTradeSettlementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/HeaderTradeSettlementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/HeaderTradeSettlementType.php	(revision 8504)
@@ -107,7 +107,9 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $invoiceReferencedDocument
-     */
-    private $invoiceReferencedDocument = null;
+     * @var \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType[] $invoiceReferencedDocument
+     */
+    private $invoiceReferencedDocument = [
+        
+    ];
 
     /**
@@ -141,5 +143,5 @@
      * @return self
      */
-    public function setCreditorReferenceID(\horstoeko\zugferd\entities\extended\udt\IDType $creditorReferenceID)
+    public function setCreditorReferenceID(?\horstoeko\zugferd\entities\extended\udt\IDType $creditorReferenceID = null)
     {
         $this->creditorReferenceID = $creditorReferenceID;
@@ -251,5 +253,5 @@
      * @return self
      */
-    public function setInvoicerTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $invoicerTradeParty)
+    public function setInvoicerTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $invoicerTradeParty = null)
     {
         $this->invoicerTradeParty = $invoicerTradeParty;
@@ -273,5 +275,5 @@
      * @return self
      */
-    public function setInvoiceeTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $invoiceeTradeParty)
+    public function setInvoiceeTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $invoiceeTradeParty = null)
     {
         $this->invoiceeTradeParty = $invoiceeTradeParty;
@@ -295,5 +297,5 @@
      * @return self
      */
-    public function setPayeeTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $payeeTradeParty)
+    public function setPayeeTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $payeeTradeParty = null)
     {
         $this->payeeTradeParty = $payeeTradeParty;
@@ -317,5 +319,5 @@
      * @return self
      */
-    public function setPayerTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $payerTradeParty)
+    public function setPayerTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $payerTradeParty = null)
     {
         $this->payerTradeParty = $payerTradeParty;
@@ -339,5 +341,5 @@
      * @return self
      */
-    public function setTaxApplicableTradeCurrencyExchange(\horstoeko\zugferd\entities\extended\ram\TradeCurrencyExchangeType $taxApplicableTradeCurrencyExchange)
+    public function setTaxApplicableTradeCurrencyExchange(?\horstoeko\zugferd\entities\extended\ram\TradeCurrencyExchangeType $taxApplicableTradeCurrencyExchange = null)
     {
         $this->taxApplicableTradeCurrencyExchange = $taxApplicableTradeCurrencyExchange;
@@ -395,5 +397,5 @@
      * @return self
      */
-    public function setSpecifiedTradeSettlementPaymentMeans(array $specifiedTradeSettlementPaymentMeans)
+    public function setSpecifiedTradeSettlementPaymentMeans(?array $specifiedTradeSettlementPaymentMeans = null)
     {
         $this->specifiedTradeSettlementPaymentMeans = $specifiedTradeSettlementPaymentMeans;
@@ -473,5 +475,5 @@
      * @return self
      */
-    public function setBillingSpecifiedPeriod(\horstoeko\zugferd\entities\extended\ram\SpecifiedPeriodType $billingSpecifiedPeriod)
+    public function setBillingSpecifiedPeriod(?\horstoeko\zugferd\entities\extended\ram\SpecifiedPeriodType $billingSpecifiedPeriod = null)
     {
         $this->billingSpecifiedPeriod = $billingSpecifiedPeriod;
@@ -529,5 +531,5 @@
      * @return self
      */
-    public function setSpecifiedTradeAllowanceCharge(array $specifiedTradeAllowanceCharge)
+    public function setSpecifiedTradeAllowanceCharge(?array $specifiedTradeAllowanceCharge = null)
     {
         $this->specifiedTradeAllowanceCharge = $specifiedTradeAllowanceCharge;
@@ -585,5 +587,5 @@
      * @return self
      */
-    public function setSpecifiedLogisticsServiceCharge(array $specifiedLogisticsServiceCharge)
+    public function setSpecifiedLogisticsServiceCharge(?array $specifiedLogisticsServiceCharge = null)
     {
         $this->specifiedLogisticsServiceCharge = $specifiedLogisticsServiceCharge;
@@ -641,5 +643,5 @@
      * @return self
      */
-    public function setSpecifiedTradePaymentTerms(array $specifiedTradePaymentTerms)
+    public function setSpecifiedTradePaymentTerms(?array $specifiedTradePaymentTerms = null)
     {
         $this->specifiedTradePaymentTerms = $specifiedTradePaymentTerms;
@@ -670,7 +672,41 @@
 
     /**
+     * Adds as invoiceReferencedDocument
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $invoiceReferencedDocument
+     */
+    public function addToInvoiceReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $invoiceReferencedDocument)
+    {
+        $this->invoiceReferencedDocument[] = $invoiceReferencedDocument;
+        return $this;
+    }
+
+    /**
+     * isset invoiceReferencedDocument
+     *
+     * @param  int|string $index
+     * @return bool
+     */
+    public function issetInvoiceReferencedDocument($index)
+    {
+        return isset($this->invoiceReferencedDocument[$index]);
+    }
+
+    /**
+     * unset invoiceReferencedDocument
+     *
+     * @param  int|string $index
+     * @return void
+     */
+    public function unsetInvoiceReferencedDocument($index)
+    {
+        unset($this->invoiceReferencedDocument[$index]);
+    }
+
+    /**
      * Gets as invoiceReferencedDocument
      *
-     * @return \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType
+     * @return \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType[]
      */
     public function getInvoiceReferencedDocument()
@@ -682,8 +718,8 @@
      * Sets a new invoiceReferencedDocument
      *
-     * @param  \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $invoiceReferencedDocument
-     * @return self
-     */
-    public function setInvoiceReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $invoiceReferencedDocument)
+     * @param  \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType[] $invoiceReferencedDocument
+     * @return self
+     */
+    public function setInvoiceReferencedDocument(?array $invoiceReferencedDocument = null)
     {
         $this->invoiceReferencedDocument = $invoiceReferencedDocument;
@@ -741,5 +777,5 @@
      * @return self
      */
-    public function setReceivableSpecifiedTradeAccountingAccount(array $receivableSpecifiedTradeAccountingAccount)
+    public function setReceivableSpecifiedTradeAccountingAccount(?array $receivableSpecifiedTradeAccountingAccount = null)
     {
         $this->receivableSpecifiedTradeAccountingAccount = $receivableSpecifiedTradeAccountingAccount;
@@ -797,5 +833,5 @@
      * @return self
      */
-    public function setSpecifiedAdvancePayment(array $specifiedAdvancePayment)
+    public function setSpecifiedAdvancePayment(?array $specifiedAdvancePayment = null)
     {
         $this->specifiedAdvancePayment = $specifiedAdvancePayment;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LegalOrganizationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LegalOrganizationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LegalOrganizationType.php	(revision 8504)
@@ -42,5 +42,5 @@
      * @return self
      */
-    public function setID(\horstoeko\zugferd\entities\extended\udt\IDType $iD)
+    public function setID(?\horstoeko\zugferd\entities\extended\udt\IDType $iD = null)
     {
         $this->iD = $iD;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setPostalTradeAddress(\horstoeko\zugferd\entities\extended\ram\TradeAddressType $postalTradeAddress)
+    public function setPostalTradeAddress(?\horstoeko\zugferd\entities\extended\ram\TradeAddressType $postalTradeAddress = null)
     {
         $this->postalTradeAddress = $postalTradeAddress;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LineTradeAgreementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LineTradeAgreementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LineTradeAgreementType.php	(revision 8504)
@@ -12,4 +12,9 @@
 
     /**
+     * @var \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $sellerOrderReferencedDocument
+     */
+    private $sellerOrderReferencedDocument = null;
+
+    /**
      * @var \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $buyerOrderReferencedDocument
      */
@@ -51,4 +56,26 @@
 
     /**
+     * Gets as sellerOrderReferencedDocument
+     *
+     * @return \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType
+     */
+    public function getSellerOrderReferencedDocument()
+    {
+        return $this->sellerOrderReferencedDocument;
+    }
+
+    /**
+     * Sets a new sellerOrderReferencedDocument
+     *
+     * @param  \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $sellerOrderReferencedDocument
+     * @return self
+     */
+    public function setSellerOrderReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $sellerOrderReferencedDocument = null)
+    {
+        $this->sellerOrderReferencedDocument = $sellerOrderReferencedDocument;
+        return $this;
+    }
+
+    /**
      * Gets as buyerOrderReferencedDocument
      *
@@ -66,5 +93,5 @@
      * @return self
      */
-    public function setBuyerOrderReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $buyerOrderReferencedDocument)
+    public function setBuyerOrderReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $buyerOrderReferencedDocument = null)
     {
         $this->buyerOrderReferencedDocument = $buyerOrderReferencedDocument;
@@ -88,5 +115,5 @@
      * @return self
      */
-    public function setQuotationReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $quotationReferencedDocument)
+    public function setQuotationReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $quotationReferencedDocument = null)
     {
         $this->quotationReferencedDocument = $quotationReferencedDocument;
@@ -110,5 +137,5 @@
      * @return self
      */
-    public function setContractReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $contractReferencedDocument)
+    public function setContractReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $contractReferencedDocument = null)
     {
         $this->contractReferencedDocument = $contractReferencedDocument;
@@ -166,5 +193,5 @@
      * @return self
      */
-    public function setAdditionalReferencedDocument(array $additionalReferencedDocument)
+    public function setAdditionalReferencedDocument(?array $additionalReferencedDocument = null)
     {
         $this->additionalReferencedDocument = $additionalReferencedDocument;
@@ -188,5 +215,5 @@
      * @return self
      */
-    public function setGrossPriceProductTradePrice(\horstoeko\zugferd\entities\extended\ram\TradePriceType $grossPriceProductTradePrice)
+    public function setGrossPriceProductTradePrice(?\horstoeko\zugferd\entities\extended\ram\TradePriceType $grossPriceProductTradePrice = null)
     {
         $this->grossPriceProductTradePrice = $grossPriceProductTradePrice;
@@ -266,5 +293,5 @@
      * @return self
      */
-    public function setUltimateCustomerOrderReferencedDocument(array $ultimateCustomerOrderReferencedDocument)
+    public function setUltimateCustomerOrderReferencedDocument(?array $ultimateCustomerOrderReferencedDocument = null)
     {
         $this->ultimateCustomerOrderReferencedDocument = $ultimateCustomerOrderReferencedDocument;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LineTradeDeliveryType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LineTradeDeliveryType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LineTradeDeliveryType.php	(revision 8504)
@@ -94,5 +94,5 @@
      * @return self
      */
-    public function setChargeFreeQuantity(\horstoeko\zugferd\entities\extended\udt\QuantityType $chargeFreeQuantity)
+    public function setChargeFreeQuantity(?\horstoeko\zugferd\entities\extended\udt\QuantityType $chargeFreeQuantity = null)
     {
         $this->chargeFreeQuantity = $chargeFreeQuantity;
@@ -116,5 +116,5 @@
      * @return self
      */
-    public function setPackageQuantity(\horstoeko\zugferd\entities\extended\udt\QuantityType $packageQuantity)
+    public function setPackageQuantity(?\horstoeko\zugferd\entities\extended\udt\QuantityType $packageQuantity = null)
     {
         $this->packageQuantity = $packageQuantity;
@@ -138,5 +138,5 @@
      * @return self
      */
-    public function setShipToTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $shipToTradeParty)
+    public function setShipToTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $shipToTradeParty = null)
     {
         $this->shipToTradeParty = $shipToTradeParty;
@@ -160,5 +160,5 @@
      * @return self
      */
-    public function setUltimateShipToTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $ultimateShipToTradeParty)
+    public function setUltimateShipToTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $ultimateShipToTradeParty = null)
     {
         $this->ultimateShipToTradeParty = $ultimateShipToTradeParty;
@@ -182,5 +182,5 @@
      * @return self
      */
-    public function setActualDeliverySupplyChainEvent(\horstoeko\zugferd\entities\extended\ram\SupplyChainEventType $actualDeliverySupplyChainEvent)
+    public function setActualDeliverySupplyChainEvent(?\horstoeko\zugferd\entities\extended\ram\SupplyChainEventType $actualDeliverySupplyChainEvent = null)
     {
         $this->actualDeliverySupplyChainEvent = $actualDeliverySupplyChainEvent;
@@ -204,5 +204,5 @@
      * @return self
      */
-    public function setDespatchAdviceReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $despatchAdviceReferencedDocument)
+    public function setDespatchAdviceReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $despatchAdviceReferencedDocument = null)
     {
         $this->despatchAdviceReferencedDocument = $despatchAdviceReferencedDocument;
@@ -226,5 +226,5 @@
      * @return self
      */
-    public function setReceivingAdviceReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $receivingAdviceReferencedDocument)
+    public function setReceivingAdviceReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $receivingAdviceReferencedDocument = null)
     {
         $this->receivingAdviceReferencedDocument = $receivingAdviceReferencedDocument;
@@ -248,5 +248,5 @@
      * @return self
      */
-    public function setDeliveryNoteReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $deliveryNoteReferencedDocument)
+    public function setDeliveryNoteReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $deliveryNoteReferencedDocument = null)
     {
         $this->deliveryNoteReferencedDocument = $deliveryNoteReferencedDocument;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LineTradeSettlementType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LineTradeSettlementType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/LineTradeSettlementType.php	(revision 8504)
@@ -124,5 +124,5 @@
      * @return self
      */
-    public function setBillingSpecifiedPeriod(\horstoeko\zugferd\entities\extended\ram\SpecifiedPeriodType $billingSpecifiedPeriod)
+    public function setBillingSpecifiedPeriod(?\horstoeko\zugferd\entities\extended\ram\SpecifiedPeriodType $billingSpecifiedPeriod = null)
     {
         $this->billingSpecifiedPeriod = $billingSpecifiedPeriod;
@@ -180,5 +180,5 @@
      * @return self
      */
-    public function setSpecifiedTradeAllowanceCharge(array $specifiedTradeAllowanceCharge)
+    public function setSpecifiedTradeAllowanceCharge(?array $specifiedTradeAllowanceCharge = null)
     {
         $this->specifiedTradeAllowanceCharge = $specifiedTradeAllowanceCharge;
@@ -224,5 +224,5 @@
      * @return self
      */
-    public function setInvoiceReferencedDocument(\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $invoiceReferencedDocument)
+    public function setInvoiceReferencedDocument(?\horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType $invoiceReferencedDocument = null)
     {
         $this->invoiceReferencedDocument = $invoiceReferencedDocument;
@@ -280,5 +280,5 @@
      * @return self
      */
-    public function setAdditionalReferencedDocument(array $additionalReferencedDocument)
+    public function setAdditionalReferencedDocument(?array $additionalReferencedDocument = null)
     {
         $this->additionalReferencedDocument = $additionalReferencedDocument;
@@ -302,5 +302,5 @@
      * @return self
      */
-    public function setReceivableSpecifiedTradeAccountingAccount(\horstoeko\zugferd\entities\extended\ram\TradeAccountingAccountType $receivableSpecifiedTradeAccountingAccount)
+    public function setReceivableSpecifiedTradeAccountingAccount(?\horstoeko\zugferd\entities\extended\ram\TradeAccountingAccountType $receivableSpecifiedTradeAccountingAccount = null)
     {
         $this->receivableSpecifiedTradeAccountingAccount = $receivableSpecifiedTradeAccountingAccount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/NoteType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/NoteType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/NoteType.php	(revision 8504)
@@ -42,5 +42,5 @@
      * @return self
      */
-    public function setContentCode(\horstoeko\zugferd\entities\extended\udt\CodeType $contentCode)
+    public function setContentCode(?\horstoeko\zugferd\entities\extended\udt\CodeType $contentCode = null)
     {
         $this->contentCode = $contentCode;
@@ -86,5 +86,5 @@
      * @return self
      */
-    public function setSubjectCode(\horstoeko\zugferd\entities\extended\udt\CodeType $subjectCode)
+    public function setSubjectCode(?\horstoeko\zugferd\entities\extended\udt\CodeType $subjectCode = null)
     {
         $this->subjectCode = $subjectCode;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ProductCharacteristicType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ProductCharacteristicType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ProductCharacteristicType.php	(revision 8504)
@@ -47,5 +47,5 @@
      * @return self
      */
-    public function setTypeCode(\horstoeko\zugferd\entities\extended\udt\CodeType $typeCode)
+    public function setTypeCode(?\horstoeko\zugferd\entities\extended\udt\CodeType $typeCode = null)
     {
         $this->typeCode = $typeCode;
@@ -91,5 +91,5 @@
      * @return self
      */
-    public function setValueMeasure(\horstoeko\zugferd\entities\extended\udt\MeasureType $valueMeasure)
+    public function setValueMeasure(?\horstoeko\zugferd\entities\extended\udt\MeasureType $valueMeasure = null)
     {
         $this->valueMeasure = $valueMeasure;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ProductClassificationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ProductClassificationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ProductClassificationType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setClassCode(\horstoeko\zugferd\entities\extended\udt\CodeType $classCode)
+    public function setClassCode(?\horstoeko\zugferd\entities\extended\udt\CodeType $classCode = null)
     {
         $this->classCode = $classCode;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ReferencedDocumentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ReferencedDocumentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ReferencedDocumentType.php	(revision 8504)
@@ -32,9 +32,7 @@
 
     /**
-     * @var string[] $name
-     */
-    private $name = [
-        
-    ];
+     * @var string $name
+     */
+    private $name = null;
 
     /**
@@ -69,5 +67,5 @@
      * @return self
      */
-    public function setIssuerAssignedID(\horstoeko\zugferd\entities\extended\udt\IDType $issuerAssignedID)
+    public function setIssuerAssignedID(?\horstoeko\zugferd\entities\extended\udt\IDType $issuerAssignedID = null)
     {
         $this->issuerAssignedID = $issuerAssignedID;
@@ -91,5 +89,5 @@
      * @return self
      */
-    public function setURIID(\horstoeko\zugferd\entities\extended\udt\IDType $uRIID)
+    public function setURIID(?\horstoeko\zugferd\entities\extended\udt\IDType $uRIID = null)
     {
         $this->uRIID = $uRIID;
@@ -113,5 +111,5 @@
      * @return self
      */
-    public function setLineID(\horstoeko\zugferd\entities\extended\udt\IDType $lineID)
+    public function setLineID(?\horstoeko\zugferd\entities\extended\udt\IDType $lineID = null)
     {
         $this->lineID = $lineID;
@@ -142,54 +140,20 @@
 
     /**
-     * Adds as name
-     *
-     * @return self
+     * Gets as name
+     *
+     * @return string
+     */
+    public function getName()
+    {
+        return $this->name;
+    }
+
+    /**
+     * Sets a new name
+     *
      * @param  string $name
-     */
-    public function addToName($name)
-    {
-        $this->name[] = $name;
-        return $this;
-    }
-
-    /**
-     * isset name
-     *
-     * @param  int|string $index
-     * @return bool
-     */
-    public function issetName($index)
-    {
-        return isset($this->name[$index]);
-    }
-
-    /**
-     * unset name
-     *
-     * @param  int|string $index
-     * @return void
-     */
-    public function unsetName($index)
-    {
-        unset($this->name[$index]);
-    }
-
-    /**
-     * Gets as name
-     *
-     * @return string[]
-     */
-    public function getName()
-    {
-        return $this->name;
-    }
-
-    /**
-     * Sets a new name
-     *
-     * @param  string $name
-     * @return self
-     */
-    public function setName(array $name)
+     * @return self
+     */
+    public function setName($name)
     {
         $this->name = $name;
@@ -213,5 +177,5 @@
      * @return self
      */
-    public function setAttachmentBinaryObject(\horstoeko\zugferd\entities\extended\udt\BinaryObjectType $attachmentBinaryObject)
+    public function setAttachmentBinaryObject(?\horstoeko\zugferd\entities\extended\udt\BinaryObjectType $attachmentBinaryObject = null)
     {
         $this->attachmentBinaryObject = $attachmentBinaryObject;
@@ -257,5 +221,5 @@
      * @return self
      */
-    public function setFormattedIssueDateTime(\horstoeko\zugferd\entities\extended\qdt\FormattedDateTimeType $formattedIssueDateTime)
+    public function setFormattedIssueDateTime(?\horstoeko\zugferd\entities\extended\qdt\FormattedDateTimeType $formattedIssueDateTime = null)
     {
         $this->formattedIssueDateTime = $formattedIssueDateTime;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ReferencedProductType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ReferencedProductType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/ReferencedProductType.php	(revision 8504)
@@ -69,5 +69,5 @@
      * @return self
      */
-    public function setID(\horstoeko\zugferd\entities\extended\udt\IDType $iD)
+    public function setID(?\horstoeko\zugferd\entities\extended\udt\IDType $iD = null)
     {
         $this->iD = $iD;
@@ -125,5 +125,5 @@
      * @return self
      */
-    public function setGlobalID(array $globalID)
+    public function setGlobalID(?array $globalID = null)
     {
         $this->globalID = $globalID;
@@ -147,5 +147,5 @@
      * @return self
      */
-    public function setSellerAssignedID(\horstoeko\zugferd\entities\extended\udt\IDType $sellerAssignedID)
+    public function setSellerAssignedID(?\horstoeko\zugferd\entities\extended\udt\IDType $sellerAssignedID = null)
     {
         $this->sellerAssignedID = $sellerAssignedID;
@@ -169,5 +169,5 @@
      * @return self
      */
-    public function setBuyerAssignedID(\horstoeko\zugferd\entities\extended\udt\IDType $buyerAssignedID)
+    public function setBuyerAssignedID(?\horstoeko\zugferd\entities\extended\udt\IDType $buyerAssignedID = null)
     {
         $this->buyerAssignedID = $buyerAssignedID;
@@ -191,5 +191,5 @@
      * @return self
      */
-    public function setIndustryAssignedID(\horstoeko\zugferd\entities\extended\udt\IDType $industryAssignedID)
+    public function setIndustryAssignedID(?\horstoeko\zugferd\entities\extended\udt\IDType $industryAssignedID = null)
     {
         $this->industryAssignedID = $industryAssignedID;
@@ -257,5 +257,5 @@
      * @return self
      */
-    public function setUnitQuantity(\horstoeko\zugferd\entities\extended\udt\QuantityType $unitQuantity)
+    public function setUnitQuantity(?\horstoeko\zugferd\entities\extended\udt\QuantityType $unitQuantity = null)
     {
         $this->unitQuantity = $unitQuantity;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/SpecifiedPeriodType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/SpecifiedPeriodType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/SpecifiedPeriodType.php	(revision 8504)
@@ -69,5 +69,5 @@
      * @return self
      */
-    public function setStartDateTime(\horstoeko\zugferd\entities\extended\udt\DateTimeType $startDateTime)
+    public function setStartDateTime(?\horstoeko\zugferd\entities\extended\udt\DateTimeType $startDateTime = null)
     {
         $this->startDateTime = $startDateTime;
@@ -91,5 +91,5 @@
      * @return self
      */
-    public function setEndDateTime(\horstoeko\zugferd\entities\extended\udt\DateTimeType $endDateTime)
+    public function setEndDateTime(?\horstoeko\zugferd\entities\extended\udt\DateTimeType $endDateTime = null)
     {
         $this->endDateTime = $endDateTime;
@@ -113,5 +113,5 @@
      * @return self
      */
-    public function setCompleteDateTime(\horstoeko\zugferd\entities\extended\udt\DateTimeType $completeDateTime)
+    public function setCompleteDateTime(?\horstoeko\zugferd\entities\extended\udt\DateTimeType $completeDateTime = null)
     {
         $this->completeDateTime = $completeDateTime;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/SupplyChainConsignmentType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/SupplyChainConsignmentType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/SupplyChainConsignmentType.php	(revision 8504)
@@ -68,5 +68,5 @@
      * @return self
      */
-    public function setSpecifiedLogisticsTransportMovement(array $specifiedLogisticsTransportMovement)
+    public function setSpecifiedLogisticsTransportMovement(?array $specifiedLogisticsTransportMovement = null)
     {
         $this->specifiedLogisticsTransportMovement = $specifiedLogisticsTransportMovement;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeAddressType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeAddressType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeAddressType.php	(revision 8504)
@@ -42,9 +42,7 @@
 
     /**
-     * @var string[] $countrySubDivisionName
-     */
-    private $countrySubDivisionName = [
-        
-    ];
+     * @var string $countrySubDivisionName
+     */
+    private $countrySubDivisionName = null;
 
     /**
@@ -64,5 +62,5 @@
      * @return self
      */
-    public function setPostcodeCode(\horstoeko\zugferd\entities\extended\udt\CodeType $postcodeCode)
+    public function setPostcodeCode(?\horstoeko\zugferd\entities\extended\udt\CodeType $postcodeCode = null)
     {
         $this->postcodeCode = $postcodeCode;
@@ -181,54 +179,20 @@
 
     /**
-     * Adds as countrySubDivisionName
-     *
-     * @return self
+     * Gets as countrySubDivisionName
+     *
+     * @return string
+     */
+    public function getCountrySubDivisionName()
+    {
+        return $this->countrySubDivisionName;
+    }
+
+    /**
+     * Sets a new countrySubDivisionName
+     *
      * @param  string $countrySubDivisionName
-     */
-    public function addToCountrySubDivisionName($countrySubDivisionName)
-    {
-        $this->countrySubDivisionName[] = $countrySubDivisionName;
-        return $this;
-    }
-
-    /**
-     * isset countrySubDivisionName
-     *
-     * @param  int|string $index
-     * @return bool
-     */
-    public function issetCountrySubDivisionName($index)
-    {
-        return isset($this->countrySubDivisionName[$index]);
-    }
-
-    /**
-     * unset countrySubDivisionName
-     *
-     * @param  int|string $index
-     * @return void
-     */
-    public function unsetCountrySubDivisionName($index)
-    {
-        unset($this->countrySubDivisionName[$index]);
-    }
-
-    /**
-     * Gets as countrySubDivisionName
-     *
-     * @return string[]
-     */
-    public function getCountrySubDivisionName()
-    {
-        return $this->countrySubDivisionName;
-    }
-
-    /**
-     * Sets a new countrySubDivisionName
-     *
-     * @param  string $countrySubDivisionName
-     * @return self
-     */
-    public function setCountrySubDivisionName(array $countrySubDivisionName)
+     * @return self
+     */
+    public function setCountrySubDivisionName($countrySubDivisionName)
     {
         $this->countrySubDivisionName = $countrySubDivisionName;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeAllowanceChargeType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeAllowanceChargeType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeAllowanceChargeType.php	(revision 8504)
@@ -138,5 +138,5 @@
      * @return self
      */
-    public function setBasisAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $basisAmount)
+    public function setBasisAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $basisAmount = null)
     {
         $this->basisAmount = $basisAmount;
@@ -160,5 +160,5 @@
      * @return self
      */
-    public function setBasisQuantity(\horstoeko\zugferd\entities\extended\udt\QuantityType $basisQuantity)
+    public function setBasisQuantity(?\horstoeko\zugferd\entities\extended\udt\QuantityType $basisQuantity = null)
     {
         $this->basisQuantity = $basisQuantity;
@@ -248,5 +248,5 @@
      * @return self
      */
-    public function setCategoryTradeTax(\horstoeko\zugferd\entities\extended\ram\TradeTaxType $categoryTradeTax)
+    public function setCategoryTradeTax(?\horstoeko\zugferd\entities\extended\ram\TradeTaxType $categoryTradeTax = null)
     {
         $this->categoryTradeTax = $categoryTradeTax;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeContactType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeContactType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeContactType.php	(revision 8504)
@@ -123,5 +123,5 @@
      * @return self
      */
-    public function setTelephoneUniversalCommunication(\horstoeko\zugferd\entities\extended\ram\UniversalCommunicationType $telephoneUniversalCommunication)
+    public function setTelephoneUniversalCommunication(?\horstoeko\zugferd\entities\extended\ram\UniversalCommunicationType $telephoneUniversalCommunication = null)
     {
         $this->telephoneUniversalCommunication = $telephoneUniversalCommunication;
@@ -145,5 +145,5 @@
      * @return self
      */
-    public function setFaxUniversalCommunication(\horstoeko\zugferd\entities\extended\ram\UniversalCommunicationType $faxUniversalCommunication)
+    public function setFaxUniversalCommunication(?\horstoeko\zugferd\entities\extended\ram\UniversalCommunicationType $faxUniversalCommunication = null)
     {
         $this->faxUniversalCommunication = $faxUniversalCommunication;
@@ -167,5 +167,5 @@
      * @return self
      */
-    public function setEmailURIUniversalCommunication(\horstoeko\zugferd\entities\extended\ram\UniversalCommunicationType $emailURIUniversalCommunication)
+    public function setEmailURIUniversalCommunication(?\horstoeko\zugferd\entities\extended\ram\UniversalCommunicationType $emailURIUniversalCommunication = null)
     {
         $this->emailURIUniversalCommunication = $emailURIUniversalCommunication;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeCurrencyExchangeType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeCurrencyExchangeType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeCurrencyExchangeType.php	(revision 8504)
@@ -12,15 +12,15 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\extended\qdt\CurrencyCodeType $sourceCurrencyCode $sourceCurrencyCode
+     * @var string $sourceCurrencyCode
      */
     private $sourceCurrencyCode = null;
 
     /**
-     * @var \horstoeko\zugferd\entities\extended\qdt\CurrencyCodeType $sourceCurrencyCode $targetCurrencyCode
+     * @var string $targetCurrencyCode
      */
     private $targetCurrencyCode = null;
 
     /**
-     * @var \horstoeko\zugferd\entities\extended\udt\RateType $conversionRate
+     * @var float $conversionRate
      */
     private $conversionRate = null;
@@ -34,6 +34,5 @@
      * Gets as sourceCurrencyCode
      *
-     * @return \horstoeko\zugferd\entities\extended\qdt\CurrencyCodeType
-
+     * @return string
      */
     public function getSourceCurrencyCode()
@@ -45,5 +44,5 @@
      * Sets a new sourceCurrencyCode
      *
-     * @param  \horstoeko\zugferd\entities\extended\qdt\CurrencyCodeType $sourceCurrencyCode
+     * @param  string $sourceCurrencyCode
      * @return self
      */
@@ -57,5 +56,5 @@
      * Gets as targetCurrencyCode
      *
-     * @return \horstoeko\zugferd\entities\extended\qdt\CurrencyCodeType $sourceCurrencyCode
+     * @return string
      */
     public function getTargetCurrencyCode()
@@ -67,5 +66,5 @@
      * Sets a new targetCurrencyCode
      *
-     * @param  \horstoeko\zugferd\entities\extended\qdt\CurrencyCodeType $sourceCurrencyCode $targetCurrencyCode
+     * @param  string $targetCurrencyCode
      * @return self
      */
@@ -79,5 +78,5 @@
      * Gets as conversionRate
      *
-     * @return \horstoeko\zugferd\entities\extended\udt\RateType
+     * @return float
      */
     public function getConversionRate()
@@ -89,5 +88,5 @@
      * Sets a new conversionRate
      *
-     * @param  \horstoeko\zugferd\entities\extended\udt\RateType $conversionRate
+     * @param  float $conversionRate
      * @return self
      */
@@ -114,5 +113,5 @@
      * @return self
      */
-    public function setConversionRateDateTime(\horstoeko\zugferd\entities\extended\udt\DateTimeType $conversionRateDateTime)
+    public function setConversionRateDateTime(?\horstoeko\zugferd\entities\extended\udt\DateTimeType $conversionRateDateTime = null)
     {
         $this->conversionRateDateTime = $conversionRateDateTime;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePartyType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePartyType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePartyType.php	(revision 8504)
@@ -119,5 +119,5 @@
      * @return self
      */
-    public function setID(array $iD)
+    public function setID(?array $iD = null)
     {
         $this->iD = $iD;
@@ -175,5 +175,5 @@
      * @return self
      */
-    public function setGlobalID(array $globalID)
+    public function setGlobalID(?array $globalID = null)
     {
         $this->globalID = $globalID;
@@ -263,5 +263,5 @@
      * @return self
      */
-    public function setSpecifiedLegalOrganization(\horstoeko\zugferd\entities\extended\ram\LegalOrganizationType $specifiedLegalOrganization)
+    public function setSpecifiedLegalOrganization(?\horstoeko\zugferd\entities\extended\ram\LegalOrganizationType $specifiedLegalOrganization = null)
     {
         $this->specifiedLegalOrganization = $specifiedLegalOrganization;
@@ -319,5 +319,5 @@
      * @return self
      */
-    public function setDefinedTradeContact(array $definedTradeContact)
+    public function setDefinedTradeContact(?array $definedTradeContact = null)
     {
         $this->definedTradeContact = $definedTradeContact;
@@ -341,5 +341,5 @@
      * @return self
      */
-    public function setPostalTradeAddress(\horstoeko\zugferd\entities\extended\ram\TradeAddressType $postalTradeAddress)
+    public function setPostalTradeAddress(?\horstoeko\zugferd\entities\extended\ram\TradeAddressType $postalTradeAddress = null)
     {
         $this->postalTradeAddress = $postalTradeAddress;
@@ -363,5 +363,5 @@
      * @return self
      */
-    public function setURIUniversalCommunication(\horstoeko\zugferd\entities\extended\ram\UniversalCommunicationType $uRIUniversalCommunication)
+    public function setURIUniversalCommunication(?\horstoeko\zugferd\entities\extended\ram\UniversalCommunicationType $uRIUniversalCommunication = null)
     {
         $this->uRIUniversalCommunication = $uRIUniversalCommunication;
@@ -419,5 +419,5 @@
      * @return self
      */
-    public function setSpecifiedTaxRegistration(array $specifiedTaxRegistration)
+    public function setSpecifiedTaxRegistration(?array $specifiedTaxRegistration = null)
     {
         $this->specifiedTaxRegistration = $specifiedTaxRegistration;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePaymentDiscountTermsType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePaymentDiscountTermsType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePaymentDiscountTermsType.php	(revision 8504)
@@ -52,5 +52,5 @@
      * @return self
      */
-    public function setBasisDateTime(\horstoeko\zugferd\entities\extended\udt\DateTimeType $basisDateTime)
+    public function setBasisDateTime(?\horstoeko\zugferd\entities\extended\udt\DateTimeType $basisDateTime = null)
     {
         $this->basisDateTime = $basisDateTime;
@@ -74,5 +74,5 @@
      * @return self
      */
-    public function setBasisPeriodMeasure(\horstoeko\zugferd\entities\extended\udt\MeasureType $basisPeriodMeasure)
+    public function setBasisPeriodMeasure(?\horstoeko\zugferd\entities\extended\udt\MeasureType $basisPeriodMeasure = null)
     {
         $this->basisPeriodMeasure = $basisPeriodMeasure;
@@ -96,5 +96,5 @@
      * @return self
      */
-    public function setBasisAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $basisAmount)
+    public function setBasisAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $basisAmount = null)
     {
         $this->basisAmount = $basisAmount;
@@ -140,5 +140,5 @@
      * @return self
      */
-    public function setActualDiscountAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $actualDiscountAmount)
+    public function setActualDiscountAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $actualDiscountAmount = null)
     {
         $this->actualDiscountAmount = $actualDiscountAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePaymentPenaltyTermsType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePaymentPenaltyTermsType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePaymentPenaltyTermsType.php	(revision 8504)
@@ -52,5 +52,5 @@
      * @return self
      */
-    public function setBasisDateTime(\horstoeko\zugferd\entities\extended\udt\DateTimeType $basisDateTime)
+    public function setBasisDateTime(?\horstoeko\zugferd\entities\extended\udt\DateTimeType $basisDateTime = null)
     {
         $this->basisDateTime = $basisDateTime;
@@ -74,5 +74,5 @@
      * @return self
      */
-    public function setBasisPeriodMeasure(\horstoeko\zugferd\entities\extended\udt\MeasureType $basisPeriodMeasure)
+    public function setBasisPeriodMeasure(?\horstoeko\zugferd\entities\extended\udt\MeasureType $basisPeriodMeasure = null)
     {
         $this->basisPeriodMeasure = $basisPeriodMeasure;
@@ -96,5 +96,5 @@
      * @return self
      */
-    public function setBasisAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $basisAmount)
+    public function setBasisAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $basisAmount = null)
     {
         $this->basisAmount = $basisAmount;
@@ -140,5 +140,5 @@
      * @return self
      */
-    public function setActualPenaltyAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $actualPenaltyAmount)
+    public function setActualPenaltyAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $actualPenaltyAmount = null)
     {
         $this->actualPenaltyAmount = $actualPenaltyAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePaymentTermsType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePaymentTermsType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePaymentTermsType.php	(revision 8504)
@@ -84,5 +84,5 @@
      * @return self
      */
-    public function setDueDateDateTime(\horstoeko\zugferd\entities\extended\udt\DateTimeType $dueDateDateTime)
+    public function setDueDateDateTime(?\horstoeko\zugferd\entities\extended\udt\DateTimeType $dueDateDateTime = null)
     {
         $this->dueDateDateTime = $dueDateDateTime;
@@ -106,5 +106,5 @@
      * @return self
      */
-    public function setDirectDebitMandateID(\horstoeko\zugferd\entities\extended\udt\IDType $directDebitMandateID)
+    public function setDirectDebitMandateID(?\horstoeko\zugferd\entities\extended\udt\IDType $directDebitMandateID = null)
     {
         $this->directDebitMandateID = $directDebitMandateID;
@@ -128,5 +128,5 @@
      * @return self
      */
-    public function setPartialPaymentAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $partialPaymentAmount)
+    public function setPartialPaymentAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $partialPaymentAmount = null)
     {
         $this->partialPaymentAmount = $partialPaymentAmount;
@@ -150,5 +150,5 @@
      * @return self
      */
-    public function setApplicableTradePaymentPenaltyTerms(\horstoeko\zugferd\entities\extended\ram\TradePaymentPenaltyTermsType $applicableTradePaymentPenaltyTerms)
+    public function setApplicableTradePaymentPenaltyTerms(?\horstoeko\zugferd\entities\extended\ram\TradePaymentPenaltyTermsType $applicableTradePaymentPenaltyTerms = null)
     {
         $this->applicableTradePaymentPenaltyTerms = $applicableTradePaymentPenaltyTerms;
@@ -172,5 +172,5 @@
      * @return self
      */
-    public function setApplicableTradePaymentDiscountTerms(\horstoeko\zugferd\entities\extended\ram\TradePaymentDiscountTermsType $applicableTradePaymentDiscountTerms)
+    public function setApplicableTradePaymentDiscountTerms(?\horstoeko\zugferd\entities\extended\ram\TradePaymentDiscountTermsType $applicableTradePaymentDiscountTerms = null)
     {
         $this->applicableTradePaymentDiscountTerms = $applicableTradePaymentDiscountTerms;
@@ -194,5 +194,5 @@
      * @return self
      */
-    public function setPayeeTradeParty(\horstoeko\zugferd\entities\extended\ram\TradePartyType $payeeTradeParty)
+    public function setPayeeTradeParty(?\horstoeko\zugferd\entities\extended\ram\TradePartyType $payeeTradeParty = null)
     {
         $this->payeeTradeParty = $payeeTradeParty;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePriceType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePriceType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradePriceType.php	(revision 8504)
@@ -71,5 +71,5 @@
      * @return self
      */
-    public function setBasisQuantity(\horstoeko\zugferd\entities\extended\udt\QuantityType $basisQuantity)
+    public function setBasisQuantity(?\horstoeko\zugferd\entities\extended\udt\QuantityType $basisQuantity = null)
     {
         $this->basisQuantity = $basisQuantity;
@@ -127,5 +127,5 @@
      * @return self
      */
-    public function setAppliedTradeAllowanceCharge(array $appliedTradeAllowanceCharge)
+    public function setAppliedTradeAllowanceCharge(?array $appliedTradeAllowanceCharge = null)
     {
         $this->appliedTradeAllowanceCharge = $appliedTradeAllowanceCharge;
@@ -149,5 +149,5 @@
      * @return self
      */
-    public function setIncludedTradeTax(\horstoeko\zugferd\entities\extended\ram\TradeTaxType $includedTradeTax)
+    public function setIncludedTradeTax(?\horstoeko\zugferd\entities\extended\ram\TradeTaxType $includedTradeTax = null)
     {
         $this->includedTradeTax = $includedTradeTax;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeProductInstanceType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeProductInstanceType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeProductInstanceType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setBatchID(\horstoeko\zugferd\entities\extended\udt\IDType $batchID)
+    public function setBatchID(?\horstoeko\zugferd\entities\extended\udt\IDType $batchID = null)
     {
         $this->batchID = $batchID;
@@ -59,5 +59,5 @@
      * @return self
      */
-    public function setSupplierAssignedSerialID(\horstoeko\zugferd\entities\extended\udt\IDType $supplierAssignedSerialID)
+    public function setSupplierAssignedSerialID(?\horstoeko\zugferd\entities\extended\udt\IDType $supplierAssignedSerialID = null)
     {
         $this->supplierAssignedSerialID = $supplierAssignedSerialID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeProductType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeProductType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeProductType.php	(revision 8504)
@@ -32,4 +32,14 @@
 
     /**
+     * @var \horstoeko\zugferd\entities\extended\udt\IDType $industryAssignedID
+     */
+    private $industryAssignedID = null;
+
+    /**
+     * @var \horstoeko\zugferd\entities\extended\udt\IDType $modelID
+     */
+    private $modelID = null;
+
+    /**
      * @var string $name
      */
@@ -40,4 +50,21 @@
      */
     private $description = null;
+
+    /**
+     * @var \horstoeko\zugferd\entities\extended\udt\IDType[] $batchID
+     */
+    private $batchID = [
+        
+    ];
+
+    /**
+     * @var string $brandName
+     */
+    private $brandName = null;
+
+    /**
+     * @var string $modelName
+     */
+    private $modelName = null;
 
     /**
@@ -90,5 +117,5 @@
      * @return self
      */
-    public function setID(\horstoeko\zugferd\entities\extended\udt\IDType $iD)
+    public function setID(?\horstoeko\zugferd\entities\extended\udt\IDType $iD = null)
     {
         $this->iD = $iD;
@@ -112,5 +139,5 @@
      * @return self
      */
-    public function setGlobalID(\horstoeko\zugferd\entities\extended\udt\IDType $globalID)
+    public function setGlobalID(?\horstoeko\zugferd\entities\extended\udt\IDType $globalID = null)
     {
         $this->globalID = $globalID;
@@ -134,5 +161,5 @@
      * @return self
      */
-    public function setSellerAssignedID(\horstoeko\zugferd\entities\extended\udt\IDType $sellerAssignedID)
+    public function setSellerAssignedID(?\horstoeko\zugferd\entities\extended\udt\IDType $sellerAssignedID = null)
     {
         $this->sellerAssignedID = $sellerAssignedID;
@@ -156,5 +183,5 @@
      * @return self
      */
-    public function setBuyerAssignedID(\horstoeko\zugferd\entities\extended\udt\IDType $buyerAssignedID)
+    public function setBuyerAssignedID(?\horstoeko\zugferd\entities\extended\udt\IDType $buyerAssignedID = null)
     {
         $this->buyerAssignedID = $buyerAssignedID;
@@ -163,4 +190,48 @@
 
     /**
+     * Gets as industryAssignedID
+     *
+     * @return \horstoeko\zugferd\entities\extended\udt\IDType
+     */
+    public function getIndustryAssignedID()
+    {
+        return $this->industryAssignedID;
+    }
+
+    /**
+     * Sets a new industryAssignedID
+     *
+     * @param  \horstoeko\zugferd\entities\extended\udt\IDType $industryAssignedID
+     * @return self
+     */
+    public function setIndustryAssignedID(?\horstoeko\zugferd\entities\extended\udt\IDType $industryAssignedID = null)
+    {
+        $this->industryAssignedID = $industryAssignedID;
+        return $this;
+    }
+
+    /**
+     * Gets as modelID
+     *
+     * @return \horstoeko\zugferd\entities\extended\udt\IDType
+     */
+    public function getModelID()
+    {
+        return $this->modelID;
+    }
+
+    /**
+     * Sets a new modelID
+     *
+     * @param  \horstoeko\zugferd\entities\extended\udt\IDType $modelID
+     * @return self
+     */
+    public function setModelID(?\horstoeko\zugferd\entities\extended\udt\IDType $modelID = null)
+    {
+        $this->modelID = $modelID;
+        return $this;
+    }
+
+    /**
      * Gets as name
      *
@@ -207,4 +278,104 @@
 
     /**
+     * Adds as batchID
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\extended\udt\IDType $batchID
+     */
+    public function addToBatchID(\horstoeko\zugferd\entities\extended\udt\IDType $batchID)
+    {
+        $this->batchID[] = $batchID;
+        return $this;
+    }
+
+    /**
+     * isset batchID
+     *
+     * @param  int|string $index
+     * @return bool
+     */
+    public function issetBatchID($index)
+    {
+        return isset($this->batchID[$index]);
+    }
+
+    /**
+     * unset batchID
+     *
+     * @param  int|string $index
+     * @return void
+     */
+    public function unsetBatchID($index)
+    {
+        unset($this->batchID[$index]);
+    }
+
+    /**
+     * Gets as batchID
+     *
+     * @return \horstoeko\zugferd\entities\extended\udt\IDType[]
+     */
+    public function getBatchID()
+    {
+        return $this->batchID;
+    }
+
+    /**
+     * Sets a new batchID
+     *
+     * @param  \horstoeko\zugferd\entities\extended\udt\IDType[] $batchID
+     * @return self
+     */
+    public function setBatchID(?array $batchID = null)
+    {
+        $this->batchID = $batchID;
+        return $this;
+    }
+
+    /**
+     * Gets as brandName
+     *
+     * @return string
+     */
+    public function getBrandName()
+    {
+        return $this->brandName;
+    }
+
+    /**
+     * Sets a new brandName
+     *
+     * @param  string $brandName
+     * @return self
+     */
+    public function setBrandName($brandName)
+    {
+        $this->brandName = $brandName;
+        return $this;
+    }
+
+    /**
+     * Gets as modelName
+     *
+     * @return string
+     */
+    public function getModelName()
+    {
+        return $this->modelName;
+    }
+
+    /**
+     * Sets a new modelName
+     *
+     * @param  string $modelName
+     * @return self
+     */
+    public function setModelName($modelName)
+    {
+        $this->modelName = $modelName;
+        return $this;
+    }
+
+    /**
      * Adds as applicableProductCharacteristic
      *
@@ -256,5 +427,5 @@
      * @return self
      */
-    public function setApplicableProductCharacteristic(array $applicableProductCharacteristic)
+    public function setApplicableProductCharacteristic(?array $applicableProductCharacteristic = null)
     {
         $this->applicableProductCharacteristic = $applicableProductCharacteristic;
@@ -312,5 +483,5 @@
      * @return self
      */
-    public function setDesignatedProductClassification(array $designatedProductClassification)
+    public function setDesignatedProductClassification(?array $designatedProductClassification = null)
     {
         $this->designatedProductClassification = $designatedProductClassification;
@@ -368,5 +539,5 @@
      * @return self
      */
-    public function setIndividualTradeProductInstance(array $individualTradeProductInstance)
+    public function setIndividualTradeProductInstance(?array $individualTradeProductInstance = null)
     {
         $this->individualTradeProductInstance = $individualTradeProductInstance;
@@ -390,5 +561,5 @@
      * @return self
      */
-    public function setOriginTradeCountry(\horstoeko\zugferd\entities\extended\ram\TradeCountryType $originTradeCountry)
+    public function setOriginTradeCountry(?\horstoeko\zugferd\entities\extended\ram\TradeCountryType $originTradeCountry = null)
     {
         $this->originTradeCountry = $originTradeCountry;
@@ -446,5 +617,5 @@
      * @return self
      */
-    public function setIncludedReferencedProduct(array $includedReferencedProduct)
+    public function setIncludedReferencedProduct(?array $includedReferencedProduct = null)
     {
         $this->includedReferencedProduct = $includedReferencedProduct;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeSettlementHeaderMonetarySummationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeSettlementHeaderMonetarySummationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeSettlementHeaderMonetarySummationType.php	(revision 8504)
@@ -27,9 +27,7 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\extended\udt\AmountType[] $taxBasisTotalAmount
-     */
-    private $taxBasisTotalAmount = [
-        
-    ];
+     * @var \horstoeko\zugferd\entities\extended\udt\AmountType $taxBasisTotalAmount
+     */
+    private $taxBasisTotalAmount = null;
 
     /**
@@ -46,9 +44,7 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\extended\udt\AmountType[] $grandTotalAmount
-     */
-    private $grandTotalAmount = [
-        
-    ];
+     * @var \horstoeko\zugferd\entities\extended\udt\AmountType $grandTotalAmount
+     */
+    private $grandTotalAmount = null;
 
     /**
@@ -100,5 +96,5 @@
      * @return self
      */
-    public function setChargeTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $chargeTotalAmount)
+    public function setChargeTotalAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $chargeTotalAmount = null)
     {
         $this->chargeTotalAmount = $chargeTotalAmount;
@@ -122,5 +118,5 @@
      * @return self
      */
-    public function setAllowanceTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $allowanceTotalAmount)
+    public function setAllowanceTotalAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $allowanceTotalAmount = null)
     {
         $this->allowanceTotalAmount = $allowanceTotalAmount;
@@ -129,98 +125,64 @@
 
     /**
-     * Adds as taxBasisTotalAmount
-     *
-     * @return self
+     * Gets as taxBasisTotalAmount
+     *
+     * @return \horstoeko\zugferd\entities\extended\udt\AmountType
+     */
+    public function getTaxBasisTotalAmount()
+    {
+        return $this->taxBasisTotalAmount;
+    }
+
+    /**
+     * Sets a new taxBasisTotalAmount
+     *
      * @param  \horstoeko\zugferd\entities\extended\udt\AmountType $taxBasisTotalAmount
-     */
-    public function addToTaxBasisTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $taxBasisTotalAmount)
-    {
-        $this->taxBasisTotalAmount[] = $taxBasisTotalAmount;
-        return $this;
-    }
-
-    /**
-     * isset taxBasisTotalAmount
+     * @return self
+     */
+    public function setTaxBasisTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $taxBasisTotalAmount)
+    {
+        $this->taxBasisTotalAmount = $taxBasisTotalAmount;
+        return $this;
+    }
+
+    /**
+     * Adds as taxTotalAmount
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\extended\udt\AmountType $taxTotalAmount
+     */
+    public function addToTaxTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $taxTotalAmount)
+    {
+        $this->taxTotalAmount[] = $taxTotalAmount;
+        return $this;
+    }
+
+    /**
+     * isset taxTotalAmount
      *
      * @param  int|string $index
      * @return bool
      */
-    public function issetTaxBasisTotalAmount($index)
-    {
-        return isset($this->taxBasisTotalAmount[$index]);
-    }
-
-    /**
-     * unset taxBasisTotalAmount
+    public function issetTaxTotalAmount($index)
+    {
+        return isset($this->taxTotalAmount[$index]);
+    }
+
+    /**
+     * unset taxTotalAmount
      *
      * @param  int|string $index
      * @return void
      */
-    public function unsetTaxBasisTotalAmount($index)
-    {
-        unset($this->taxBasisTotalAmount[$index]);
-    }
-
-    /**
-     * Gets as taxBasisTotalAmount
+    public function unsetTaxTotalAmount($index)
+    {
+        unset($this->taxTotalAmount[$index]);
+    }
+
+    /**
+     * Gets as taxTotalAmount
      *
      * @return \horstoeko\zugferd\entities\extended\udt\AmountType[]
      */
-    public function getTaxBasisTotalAmount()
-    {
-        return $this->taxBasisTotalAmount;
-    }
-
-    /**
-     * Sets a new taxBasisTotalAmount
-     *
-     * @param  \horstoeko\zugferd\entities\extended\udt\AmountType[] $taxBasisTotalAmount
-     * @return self
-     */
-    public function setTaxBasisTotalAmount(array $taxBasisTotalAmount)
-    {
-        $this->taxBasisTotalAmount = $taxBasisTotalAmount;
-        return $this;
-    }
-
-    /**
-     * Adds as taxTotalAmount
-     *
-     * @return self
-     * @param  \horstoeko\zugferd\entities\extended\udt\AmountType $taxTotalAmount
-     */
-    public function addToTaxTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $taxTotalAmount)
-    {
-        $this->taxTotalAmount[] = $taxTotalAmount;
-        return $this;
-    }
-
-    /**
-     * isset taxTotalAmount
-     *
-     * @param  int|string $index
-     * @return bool
-     */
-    public function issetTaxTotalAmount($index)
-    {
-        return isset($this->taxTotalAmount[$index]);
-    }
-
-    /**
-     * unset taxTotalAmount
-     *
-     * @param  int|string $index
-     * @return void
-     */
-    public function unsetTaxTotalAmount($index)
-    {
-        unset($this->taxTotalAmount[$index]);
-    }
-
-    /**
-     * Gets as taxTotalAmount
-     *
-     * @return \horstoeko\zugferd\entities\extended\udt\AmountType[]
-     */
     public function getTaxTotalAmount()
     {
@@ -234,5 +196,5 @@
      * @return self
      */
-    public function setTaxTotalAmount(array $taxTotalAmount)
+    public function setTaxTotalAmount(?array $taxTotalAmount = null)
     {
         $this->taxTotalAmount = $taxTotalAmount;
@@ -256,5 +218,5 @@
      * @return self
      */
-    public function setRoundingAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $roundingAmount)
+    public function setRoundingAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $roundingAmount = null)
     {
         $this->roundingAmount = $roundingAmount;
@@ -263,54 +225,20 @@
 
     /**
-     * Adds as grandTotalAmount
-     *
-     * @return self
+     * Gets as grandTotalAmount
+     *
+     * @return \horstoeko\zugferd\entities\extended\udt\AmountType
+     */
+    public function getGrandTotalAmount()
+    {
+        return $this->grandTotalAmount;
+    }
+
+    /**
+     * Sets a new grandTotalAmount
+     *
      * @param  \horstoeko\zugferd\entities\extended\udt\AmountType $grandTotalAmount
-     */
-    public function addToGrandTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $grandTotalAmount)
-    {
-        $this->grandTotalAmount[] = $grandTotalAmount;
-        return $this;
-    }
-
-    /**
-     * isset grandTotalAmount
-     *
-     * @param  int|string $index
-     * @return bool
-     */
-    public function issetGrandTotalAmount($index)
-    {
-        return isset($this->grandTotalAmount[$index]);
-    }
-
-    /**
-     * unset grandTotalAmount
-     *
-     * @param  int|string $index
-     * @return void
-     */
-    public function unsetGrandTotalAmount($index)
-    {
-        unset($this->grandTotalAmount[$index]);
-    }
-
-    /**
-     * Gets as grandTotalAmount
-     *
-     * @return \horstoeko\zugferd\entities\extended\udt\AmountType[]
-     */
-    public function getGrandTotalAmount()
-    {
-        return $this->grandTotalAmount;
-    }
-
-    /**
-     * Sets a new grandTotalAmount
-     *
-     * @param  \horstoeko\zugferd\entities\extended\udt\AmountType[] $grandTotalAmount
-     * @return self
-     */
-    public function setGrandTotalAmount(array $grandTotalAmount)
+     * @return self
+     */
+    public function setGrandTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $grandTotalAmount)
     {
         $this->grandTotalAmount = $grandTotalAmount;
@@ -334,5 +262,5 @@
      * @return self
      */
-    public function setTotalPrepaidAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $totalPrepaidAmount)
+    public function setTotalPrepaidAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $totalPrepaidAmount = null)
     {
         $this->totalPrepaidAmount = $totalPrepaidAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeSettlementLineMonetarySummationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeSettlementLineMonetarySummationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeSettlementLineMonetarySummationType.php	(revision 8504)
@@ -79,5 +79,5 @@
      * @return self
      */
-    public function setChargeTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $chargeTotalAmount)
+    public function setChargeTotalAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $chargeTotalAmount = null)
     {
         $this->chargeTotalAmount = $chargeTotalAmount;
@@ -101,5 +101,5 @@
      * @return self
      */
-    public function setAllowanceTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $allowanceTotalAmount)
+    public function setAllowanceTotalAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $allowanceTotalAmount = null)
     {
         $this->allowanceTotalAmount = $allowanceTotalAmount;
@@ -123,5 +123,5 @@
      * @return self
      */
-    public function setTaxTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $taxTotalAmount)
+    public function setTaxTotalAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $taxTotalAmount = null)
     {
         $this->taxTotalAmount = $taxTotalAmount;
@@ -145,5 +145,5 @@
      * @return self
      */
-    public function setGrandTotalAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $grandTotalAmount)
+    public function setGrandTotalAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $grandTotalAmount = null)
     {
         $this->grandTotalAmount = $grandTotalAmount;
@@ -167,5 +167,5 @@
      * @return self
      */
-    public function setTotalAllowanceChargeAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $totalAllowanceChargeAmount)
+    public function setTotalAllowanceChargeAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $totalAllowanceChargeAmount = null)
     {
         $this->totalAllowanceChargeAmount = $totalAllowanceChargeAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeSettlementPaymentMeansType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeSettlementPaymentMeansType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeSettlementPaymentMeansType.php	(revision 8504)
@@ -101,5 +101,5 @@
      * @return self
      */
-    public function setApplicableTradeSettlementFinancialCard(\horstoeko\zugferd\entities\extended\ram\TradeSettlementFinancialCardType $applicableTradeSettlementFinancialCard)
+    public function setApplicableTradeSettlementFinancialCard(?\horstoeko\zugferd\entities\extended\ram\TradeSettlementFinancialCardType $applicableTradeSettlementFinancialCard = null)
     {
         $this->applicableTradeSettlementFinancialCard = $applicableTradeSettlementFinancialCard;
@@ -123,5 +123,5 @@
      * @return self
      */
-    public function setPayerPartyDebtorFinancialAccount(\horstoeko\zugferd\entities\extended\ram\DebtorFinancialAccountType $payerPartyDebtorFinancialAccount)
+    public function setPayerPartyDebtorFinancialAccount(?\horstoeko\zugferd\entities\extended\ram\DebtorFinancialAccountType $payerPartyDebtorFinancialAccount = null)
     {
         $this->payerPartyDebtorFinancialAccount = $payerPartyDebtorFinancialAccount;
@@ -145,5 +145,5 @@
      * @return self
      */
-    public function setPayeePartyCreditorFinancialAccount(\horstoeko\zugferd\entities\extended\ram\CreditorFinancialAccountType $payeePartyCreditorFinancialAccount)
+    public function setPayeePartyCreditorFinancialAccount(?\horstoeko\zugferd\entities\extended\ram\CreditorFinancialAccountType $payeePartyCreditorFinancialAccount = null)
     {
         $this->payeePartyCreditorFinancialAccount = $payeePartyCreditorFinancialAccount;
@@ -167,5 +167,5 @@
      * @return self
      */
-    public function setPayeeSpecifiedCreditorFinancialInstitution(\horstoeko\zugferd\entities\extended\ram\CreditorFinancialInstitutionType $payeeSpecifiedCreditorFinancialInstitution)
+    public function setPayeeSpecifiedCreditorFinancialInstitution(?\horstoeko\zugferd\entities\extended\ram\CreditorFinancialInstitutionType $payeeSpecifiedCreditorFinancialInstitution = null)
     {
         $this->payeeSpecifiedCreditorFinancialInstitution = $payeeSpecifiedCreditorFinancialInstitution;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeTaxType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeTaxType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/TradeTaxType.php	(revision 8504)
@@ -82,5 +82,5 @@
      * @return self
      */
-    public function setCalculatedAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $calculatedAmount)
+    public function setCalculatedAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $calculatedAmount = null)
     {
         $this->calculatedAmount = $calculatedAmount;
@@ -148,5 +148,5 @@
      * @return self
      */
-    public function setBasisAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $basisAmount)
+    public function setBasisAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $basisAmount = null)
     {
         $this->basisAmount = $basisAmount;
@@ -170,5 +170,5 @@
      * @return self
      */
-    public function setLineTotalBasisAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $lineTotalBasisAmount)
+    public function setLineTotalBasisAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $lineTotalBasisAmount = null)
     {
         $this->lineTotalBasisAmount = $lineTotalBasisAmount;
@@ -192,5 +192,5 @@
      * @return self
      */
-    public function setAllowanceChargeBasisAmount(\horstoeko\zugferd\entities\extended\udt\AmountType $allowanceChargeBasisAmount)
+    public function setAllowanceChargeBasisAmount(?\horstoeko\zugferd\entities\extended\udt\AmountType $allowanceChargeBasisAmount = null)
     {
         $this->allowanceChargeBasisAmount = $allowanceChargeBasisAmount;
@@ -236,5 +236,5 @@
      * @return self
      */
-    public function setExemptionReasonCode(\horstoeko\zugferd\entities\extended\udt\CodeType $exemptionReasonCode)
+    public function setExemptionReasonCode(?\horstoeko\zugferd\entities\extended\udt\CodeType $exemptionReasonCode = null)
     {
         $this->exemptionReasonCode = $exemptionReasonCode;
@@ -258,5 +258,5 @@
      * @return self
      */
-    public function setTaxPointDate(\horstoeko\zugferd\entities\extended\udt\DateType $taxPointDate)
+    public function setTaxPointDate(?\horstoeko\zugferd\entities\extended\udt\DateType $taxPointDate = null)
     {
         $this->taxPointDate = $taxPointDate;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/UniversalCommunicationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/UniversalCommunicationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/ram/UniversalCommunicationType.php	(revision 8504)
@@ -37,5 +37,5 @@
      * @return self
      */
-    public function setURIID(\horstoeko\zugferd\entities\extended\udt\IDType $uRIID)
+    public function setURIID(?\horstoeko\zugferd\entities\extended\udt\IDType $uRIID = null)
     {
         $this->uRIID = $uRIID;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/udt/DateTimeType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/udt/DateTimeType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/udt/DateTimeType.php	(revision 8504)
@@ -32,5 +32,5 @@
      * @return self
      */
-    public function setDateTimeString(\horstoeko\zugferd\entities\extended\udt\DateTimeType\DateTimeStringAType $dateTimeString)
+    public function setDateTimeString(?\horstoeko\zugferd\entities\extended\udt\DateTimeType\DateTimeStringAType $dateTimeString = null)
     {
         $this->dateTimeString = $dateTimeString;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/udt/DateType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/udt/DateType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/extended/udt/DateType.php	(revision 8504)
@@ -32,5 +32,5 @@
      * @return self
      */
-    public function setDateString(\horstoeko\zugferd\entities\extended\udt\DateType\DateStringAType $dateString)
+    public function setDateString(?\horstoeko\zugferd\entities\extended\udt\DateType\DateStringAType $dateString = null)
     {
         $this->dateString = $dateString;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/minimum/ram/TradePartyType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/minimum/ram/TradePartyType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/minimum/ram/TradePartyType.php	(revision 8504)
@@ -149,5 +149,5 @@
      * @return self
      */
-    public function setSpecifiedTaxRegistration(array $specifiedTaxRegistration = null)
+    public function setSpecifiedTaxRegistration(?array $specifiedTaxRegistration = null)
     {
         $this->specifiedTaxRegistration = $specifiedTaxRegistration;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/minimum/ram/TradeSettlementHeaderMonetarySummationType.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/minimum/ram/TradeSettlementHeaderMonetarySummationType.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/entities/minimum/ram/TradeSettlementHeaderMonetarySummationType.php	(revision 8504)
@@ -17,7 +17,9 @@
 
     /**
-     * @var \horstoeko\zugferd\entities\minimum\udt\AmountType $taxTotalAmount
+     * @var \horstoeko\zugferd\entities\minimum\udt\AmountType[] $taxTotalAmount
      */
-    private $taxTotalAmount = null;
+    private $taxTotalAmount = [
+        
+    ];
 
     /**
@@ -54,7 +56,41 @@
 
     /**
+     * Adds as taxTotalAmount
+     *
+     * @return self
+     * @param  \horstoeko\zugferd\entities\minimum\udt\AmountType $taxTotalAmount
+     */
+    public function addToTaxTotalAmount(\horstoeko\zugferd\entities\minimum\udt\AmountType $taxTotalAmount)
+    {
+        $this->taxTotalAmount[] = $taxTotalAmount;
+        return $this;
+    }
+
+    /**
+     * isset taxTotalAmount
+     *
+     * @param  int|string $index
+     * @return bool
+     */
+    public function issetTaxTotalAmount($index)
+    {
+        return isset($this->taxTotalAmount[$index]);
+    }
+
+    /**
+     * unset taxTotalAmount
+     *
+     * @param  int|string $index
+     * @return void
+     */
+    public function unsetTaxTotalAmount($index)
+    {
+        unset($this->taxTotalAmount[$index]);
+    }
+
+    /**
      * Gets as taxTotalAmount
      *
-     * @return \horstoeko\zugferd\entities\minimum\udt\AmountType
+     * @return \horstoeko\zugferd\entities\minimum\udt\AmountType[]
      */
     public function getTaxTotalAmount()
@@ -66,8 +102,8 @@
      * Sets a new taxTotalAmount
      *
-     * @param  \horstoeko\zugferd\entities\minimum\udt\AmountType $taxTotalAmount
+     * @param  \horstoeko\zugferd\entities\minimum\udt\AmountType[] $taxTotalAmount
      * @return self
      */
-    public function setTaxTotalAmount(?\horstoeko\zugferd\entities\minimum\udt\AmountType $taxTotalAmount = null)
+    public function setTaxTotalAmount(?array $taxTotalAmount = null)
     {
         $this->taxTotalAmount = $taxTotalAmount;
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdFileNotFoundException.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdFileNotFoundException.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdFileNotFoundException.php	(revision 8504)
@@ -10,5 +10,5 @@
 namespace horstoeko\zugferd\exception;
 
-use Exception;
+use Throwable;
 
 /**
@@ -21,41 +21,15 @@
  * @link     https://github.com/horstoeko/zugferd
  */
-class ZugferdFileNotFoundException extends Exception
+class ZugferdFileNotFoundException extends ZugferdBaseException
 {
-    /**
-     * The context of the type element
-     *
-     * @var string
-     */
-    private $filePath = "";
-
     /**
      * Constructor
      *
-     * @param string $filePath
+     * @param string         $filename
+     * @param Throwable|null $previous
      */
-    public function __construct(string $filePath)
+    public function __construct(string $filename, ?Throwable $previous = null)
     {
-        $this->filePath = $filePath;
-
-        parent::__construct($this->buildMessage());
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function __toString()
-    {
-        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
-    }
-
-    /**
-     * Build the message
-     *
-     * @return string
-     */
-    private function buildMessage(): string
-    {
-        return sprintf("The filer %s is missing", $this->filePath);
+        parent::__construct(sprintf("The file %s was not found", $filename), ZugferdExceptionCodes::FILENOTFOUND, $previous);
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdFileNotReadableException.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdFileNotReadableException.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdFileNotReadableException.php	(revision 8504)
@@ -10,5 +10,5 @@
 namespace horstoeko\zugferd\exception;
 
-use Exception;
+use Throwable;
 
 /**
@@ -21,41 +21,15 @@
  * @link     https://github.com/horstoeko/zugferd
  */
-class ZugferdFileNotReadableException extends Exception
+class ZugferdFileNotReadableException extends ZugferdBaseException
 {
-    /**
-     * The context of the type element
-     *
-     * @var string
-     */
-    private $filePath = "";
-
     /**
      * Constructor
      *
-     * @param string $filePath
+     * @param string         $filename
+     * @param Throwable|null $previous
      */
-    public function __construct(string $filePath)
+    public function __construct(string $filename, ?Throwable $previous = null)
     {
-        $this->filePath = $filePath;
-
-        parent::__construct($this->buildMessage());
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function __toString()
-    {
-        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
-    }
-
-    /**
-     * Build the message
-     *
-     * @return string
-     */
-    private function buildMessage(): string
-    {
-        return sprintf("The filer %s is not readable", $this->filePath);
+        parent::__construct(sprintf("The file %s is not readable", $filename), ZugferdExceptionCodes::FILENOTFOUND, $previous);
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownDateFormatException.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownDateFormatException.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownDateFormatException.php	(revision 8504)
@@ -10,4 +10,6 @@
 namespace horstoeko\zugferd\exception;
 
+use Throwable;
+
 /**
  * Class representing an exception for unknown date formates
@@ -19,41 +21,9 @@
  * @link     https://github.com/horstoeko/zugferd
  */
-class ZugferdUnknownDateFormatException extends \Exception
+class ZugferdUnknownDateFormatException extends ZugferdBaseException
 {
-    /**
-     * The context of the type element
-     *
-     * @var string
-     */
-    private $dateFormat = "";
-
-    /**
-     * Constructor
-     *
-     * @param string $dateFormat
-     */
-    public function __construct(string $dateFormat)
+    public function __construct(string $dateFormatCode, ?Throwable $previous = null)
     {
-        $this->dateFormat = $dateFormat;
-
-        parent::__construct($this->buildMessage());
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function __toString()
-    {
-        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
-    }
-
-    /**
-     * Build the message
-     *
-     * @return string
-     */
-    private function buildMessage(): string
-    {
-        return sprintf("The date format identifier %s is unknown or not supported", $this->dateFormat);
+        parent::__construct(sprintf("Invalid date format %s", $dateFormatCode), ZugferdExceptionCodes::UNKNOWNDATEFORMAT, $previous);
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownProfileException.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownProfileException.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownProfileException.php	(revision 8504)
@@ -10,5 +10,5 @@
 namespace horstoeko\zugferd\exception;
 
-use Exception;
+use Throwable;
 
 /**
@@ -21,41 +21,15 @@
  * @link     https://github.com/horstoeko/zugferd
  */
-class ZugferdUnknownProfileException extends Exception
+class ZugferdUnknownProfileException extends ZugferdBaseException
 {
-    /**
-     * The context of the type element
-     *
-     * @var string
-     */
-    private $contextElement = "";
-
     /**
      * Constructor
      *
-     * @param string $contextElement
+     * @param string         $profileString
+     * @param Throwable|null $previous
      */
-    public function __construct(string $contextElement)
+    public function __construct(string $profileString, ?Throwable $previous = null)
     {
-        $this->contextElement = $contextElement;
-
-        parent::__construct($this->buildMessage());
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function __toString()
-    {
-        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
-    }
-
-    /**
-     * Build the message
-     *
-     * @return string
-     */
-    private function buildMessage(): string
-    {
-        return sprintf("A context parameter was found, but the content of \"%s\" is not a valid profile", $this->contextElement);
+        parent::__construct(sprintf("Cannot determain the profile by %s", $profileString), ZugferdExceptionCodes::UNKNOWNPROFILE, $previous);
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownProfileIdException.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownProfileIdException.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownProfileIdException.php	(revision 8504)
@@ -10,5 +10,5 @@
 namespace horstoeko\zugferd\exception;
 
-use Exception;
+use Throwable;
 
 /**
@@ -21,41 +21,15 @@
  * @link     https://github.com/horstoeko/zugferd
  */
-class ZugferdUnknownProfileIdException extends Exception
+class ZugferdUnknownProfileIdException extends ZugferdBaseException
 {
-    /**
-     * The context of the type element
-     *
-     * @var string
-     */
-    private $profileId = 0;
-
     /**
      * Constructor
      *
-     * @param integer $profileId
+     * @param int            $profileId
+     * @param Throwable|null $previous
      */
-    public function __construct(int $profileId)
+    public function __construct(int $profileId, ?Throwable $previous = null)
     {
-        $this->profileId = $profileId;
-
-        parent::__construct($this->buildMessage());
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function __toString()
-    {
-        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
-    }
-
-    /**
-     * Build the message
-     *
-     * @return string
-     */
-    private function buildMessage(): string
-    {
-        return sprintf("The profile id %s is uknown", $this->profileId);
+        parent::__construct(sprintf("The profile id %s is uknown", $profileId), ZugferdExceptionCodes::UNKNOWNPROFILE, $previous);
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownProfileParameterException.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownProfileParameterException.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownProfileParameterException.php	(revision 8504)
@@ -10,5 +10,5 @@
 namespace horstoeko\zugferd\exception;
 
-use Exception;
+use Throwable;
 
 /**
@@ -21,41 +21,15 @@
  * @link     https://github.com/horstoeko/zugferd
  */
-class ZugferdUnknownProfileParameterException extends Exception
+class ZugferdUnknownProfileParameterException extends ZugferdBaseException
 {
-    /**
-     * The context of the type element
-     *
-     * @var string
-     */
-    private $profileParameter = "";
-
     /**
      * Constructor
      *
-     * @param string $profileParameter
+     * @param string         $profileParameter
+     * @param Throwable|null $previous
      */
-    public function __construct(string $profileParameter)
+    public function __construct(string $profileParameter, ?Throwable $previous = null)
     {
-        $this->profileParameter = $profileParameter;
-
-        parent::__construct($this->buildMessage());
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function __toString()
-    {
-        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
-    }
-
-    /**
-     * Build the message
-     *
-     * @return string
-     */
-    private function buildMessage(): string
-    {
-        return sprintf("The profile parameter %s is uknown", $this->profileParameter);
+        parent::__construct(sprintf("The profile parameter %s is uknown", $profileParameter), ZugferdExceptionCodes::UNKNOWNPROFILEPARAMETER, $previous);
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownXmlContentException.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownXmlContentException.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/exception/ZugferdUnknownXmlContentException.php	(revision 8504)
@@ -10,5 +10,4 @@
 namespace horstoeko\zugferd\exception;
 
-use Exception;
 use Throwable;
 
@@ -22,30 +21,14 @@
  * @link     https://github.com/horstoeko/zugferd
  */
-class ZugferdUnknownXmlContentException extends Exception
+class ZugferdUnknownXmlContentException extends ZugferdBaseException
 {
     /**
      * Constructor
+     *
+     * @param Throwable|null $previous
      */
-    public function __construct()
+    public function __construct(?Throwable $previous = null)
     {
-        parent::__construct($this->buildMessage());
-    }
-
-    /**
-     * @inheritDoc
-     */
-    public function __toString()
-    {
-        return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
-    }
-
-    /**
-     * Build the message
-     *
-     * @return string
-     */
-    private function buildMessage(): string
-    {
-        return "The XML does not match the requirements for an XML in CII-Syntax";
+        parent::__construct("The XML does not match the requirements for an XML in CII-Syntax", ZugferdExceptionCodes::UNKNOWNSYNTAX, $previous);
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/jms/ZugferdTypesHandler.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/jms/ZugferdTypesHandler.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/jms/ZugferdTypesHandler.php	(revision 8504)
@@ -10,8 +10,5 @@
 namespace horstoeko\zugferd\jms;
 
-use DOMElement;
-use DOMText;
 use horstoeko\zugferd\ZugferdSettings;
-use JMS\Serializer\Context;
 use JMS\Serializer\GraphNavigator;
 use JMS\Serializer\Handler\SubscribingHandlerInterface;
@@ -148,4 +145,28 @@
                 'method' => 'serializeIndicatorType'
             ],
+            [
+                'direction' => GraphNavigator::DIRECTION_SERIALIZATION,
+                'format' => 'xml',
+                'type' => 'horstoeko\zugferd\entities\basic\udt\MeasureType',
+                'method' => 'serializeMeasureType'
+            ],
+            [
+                'direction' => GraphNavigator::DIRECTION_SERIALIZATION,
+                'format' => 'xml',
+                'type' => 'horstoeko\zugferd\entities\basicwl\udt\MeasureType',
+                'method' => 'serializeMeasureType'
+            ],
+            [
+                'direction' => GraphNavigator::DIRECTION_SERIALIZATION,
+                'format' => 'xml',
+                'type' => 'horstoeko\zugferd\entities\en16931\udt\MeasureType',
+                'method' => 'serializeMeasureType'
+            ],
+            [
+                'direction' => GraphNavigator::DIRECTION_SERIALIZATION,
+                'format' => 'xml',
+                'type' => 'horstoeko\zugferd\entities\extended\udt\MeasureType',
+                'method' => 'serializeMeasureType'
+            ],
         ];
     }
@@ -155,11 +176,8 @@
      * The amounts will be serialized (by default) with a precission of 2 digits
      *
-     * @param  XmlSerializationVisitor $visitor
-     * @param  mixed                   $data
-     * @param  array                   $type
-     * @param  Context                 $context
-     * @return DOMText|false
-     */
-    public function serializeAmountType(XmlSerializationVisitor $visitor, $data, array $type, Context $context)
+     * @param XmlSerializationVisitor $visitor
+     * @param mixed                   $data
+     */
+    public function serializeAmountType(XmlSerializationVisitor $visitor, $data)
     {
         $node = $visitor->getDocument()->createTextNode(
@@ -185,11 +203,8 @@
      * The quantity will be serialized (by default) with a precission of 2 digits
      *
-     * @param  XmlSerializationVisitor $visitor
-     * @param  mixed                   $data
-     * @param  array                   $type
-     * @param  Context                 $context
-     * @return DOMText|false
-     */
-    public function serializeQuantityType(XmlSerializationVisitor $visitor, $data, array $type, Context $context)
+     * @param XmlSerializationVisitor $visitor
+     * @param mixed                   $data
+     */
+    public function serializeQuantityType(XmlSerializationVisitor $visitor, $data)
     {
         $node = $visitor->getDocument()->createTextNode(
@@ -215,20 +230,42 @@
      * The valze will be serialized (by default) with a precission of 2 digits
      *
-     * @param  XmlSerializationVisitor $visitor
-     * @param  mixed                   $data
-     * @param  array                   $type
-     * @param  Context                 $context
-     * @return DOMText|false
-     */
-    public function serializePercentType(XmlSerializationVisitor $visitor, $data, array $type, Context $context)
+     * @param XmlSerializationVisitor $visitor
+     * @param mixed                   $data
+     */
+    public function serializePercentType(XmlSerializationVisitor $visitor, $data)
+    {
+        return $visitor->getDocument()->createTextNode(
+            number_format(
+                $data->value(),
+                ZugferdSettings::getSpecialDecimalPlacesMap($visitor->getCurrentNode()->getNodePath(), ZugferdSettings::getPercentDecimals()),
+                ZugferdSettings::getDecimalSeparator(),
+                ZugferdSettings::getThousandsSeparator()
+            )
+        );
+    }
+
+    /**
+     * Serialize a meassure value
+     * The valze will be serialized (by default) with a precission of 2 digits
+     *
+     * @param XmlSerializationVisitor $visitor
+     * @param mixed                   $data
+     */
+    public function serializeMeasureType(XmlSerializationVisitor $visitor, $data)
     {
         $node = $visitor->getDocument()->createTextNode(
             number_format(
                 $data->value(),
-                ZugferdSettings::getSpecialDecimalPlacesMap($visitor->getCurrentNode()->getNodePath(), ZugferdSettings::getPercentDecimals()),
-                ZugferdSettings::getDecimalSeparator(),
-                ZugferdSettings::getThousandsSeparator()
-            )
-        );
+                ZugferdSettings::getSpecialDecimalPlacesMap($visitor->getCurrentNode()->getNodePath(), ZugferdSettings::getMeasureDecimals()),
+                ZugferdSettings::getDecimalSeparator(),
+                ZugferdSettings::getThousandsSeparator()
+            )
+        );
+
+        if ($data->getUnitCode() != null) {
+            $attr = $visitor->getDocument()->createAttribute("unitCode");
+            $attr->value = $data->getUnitCode();
+            $visitor->getCurrentNode()->appendChild($attr);
+        }
 
         return $node;
@@ -240,14 +277,10 @@
      * in the default implementation)
      *
-     * @param  XmlSerializationVisitor $visitor
-     * @param  mixed                   $data
-     * @param  array                   $type
-     * @param  Context                 $context
-     * @return DOMElement|false
-     */
-    public function serializeIndicatorType(XmlSerializationVisitor $visitor, $data, array $type, Context $context)
-    {
-        $node = $visitor->getDocument()->createElement('udt:Indicator', $data->getIndicator() == false ? 'false' : 'true');
-        return $node;
+     * @param XmlSerializationVisitor $visitor
+     * @param mixed                   $data
+     */
+    public function serializeIndicatorType(XmlSerializationVisitor $visitor, $data)
+    {
+        return $visitor->getDocument()->createElement('udt:Indicator', $data->getIndicator() == false ? 'false' : 'true');
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptor.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptor.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptor.php	(revision 8504)
@@ -18,8 +18,10 @@
 
 /**
- * Class representing the document descriptor for outgoing documents.
+ * Class representing the base class of all document descriptors.
+ *
  * Creating them in a simple and common way in EN16931 profile
  * This class is slightly inspired by the invoicedescriptor of the
  * __https://github.com/stephanstapel/ZUGFeRD-csharp__ project
+ *
  * This class contains only basic functionality
  *
@@ -33,12 +35,21 @@
 {
     private const VT_TAXCATEGORY = 0;
+
     private const VT_TAXTYPE = 1;
+
     private const VT_TAXPERCENT = 2;
+
     private const VT_LINETOTALBASISAMOUNT = 3;
+
     private const VT_ALLOWANCEAMOUNT = 4;
+
     private const VT_CHARGEAMOUNT = 5;
+
     private const VT_ALLOWANCECHARGEAMOUNT = 6;
+
     private const VT_BASISAMOUNT = 7;
+
     private const VT_CALCULATEDAMOUNT = 8;
+
     private const VT_LOGSERVICECHARGE = 9;
 
@@ -59,4 +70,11 @@
 
     /**
+     * Internal flag to see if the totals are alread calculated
+     *
+     * @var boolean
+     */
+    protected $totalsAreCalculated = false;
+
+    /**
      * Returns the profile of the descriptor
      *
@@ -71,6 +89,4 @@
      * Creates a new ZugferdDocumentBuilder with profile EN16931
      *
-     * @codeCoverageIgnore
-     *
      * @return ZugferdQuickDescriptor
      */
@@ -93,18 +109,14 @@
      * Create a new invoice
      *
-     * @param  string      $invoiceNo
-     * The document no issued by the seller
-     * @param  \DateTime   $invoiceDate
-     * The date when the document was issued by the seller
-     * @param  string      $currency
-     * The code for the invoice currency
-     * @param  string|null $invoiceNoReferenceq
-     * Intended use for payment. If null the number of the invoice is used
-     * @return ZugferdQuickDescriptor
-     */
-    public function doCreateInvoice(string $invoiceNo, \DateTime $invoiceDate, string $currency, ?string $invoiceNoReferenceq = null): ZugferdQuickDescriptor
+     * @param  string      $invoiceNo          __BT-1, From MINIMUM__ The document no issued by the seller
+     * @param  \DateTime   $invoiceDate        __BT-2, From MINIMUM__ Date of invoice. The date when the document was issued by the seller
+     * @param  string      $currency           __BT-5, From MINIMUM__ Code for the invoice currency
+     * @param  string|null $invoiceNoReference __BT-83, From BASIC WL__ Intended use for payment
+     * @return ZugferdQuickDescriptor
+     */
+    public function doCreateInvoice(string $invoiceNo, \DateTime $invoiceDate, string $currency, ?string $invoiceNoReference = null): ZugferdQuickDescriptor
     {
         $this->setDocumentInformation($invoiceNo, ZugferdInvoiceType::INVOICE, $invoiceDate, $currency);
-        $this->setDocumentGeneralPaymentInformation(null, $invoiceNoReferenceq ?? $invoiceNo);
+        $this->setDocumentGeneralPaymentInformation(null, $invoiceNoReference ?? $invoiceNo);
         return $this;
     }
@@ -113,12 +125,8 @@
      * Create a new credit memo
      *
-     * @param  string    $creditMemoNo
-     * The document no issued by the seller
-     * @param  \DateTime $invoiceDate
-     * The date when the document was issued by the seller
-     * @param  string    $currency
-     * The code for the invoice currency
-     * @param  string    $creditMemoNoReference
-     * Intended use for refund. If null the number of the credit memo is used
+     * @param  string    $creditMemoNo          __BT-1, From MINIMUM__ The document no issued by the seller
+     * @param  \DateTime $invoiceDate           __BT-2, From MINIMUM__ Date of invoice. The date when the document was issued by the seller
+     * @param  string    $currency              __BT-5, From MINIMUM__ Code for the invoice currency
+     * @param  string    $creditMemoNoReference __BT-83, From BASIC WL__ Intended use for refund. If null the number of the credit memo is used
      * @return ZugferdQuickDescriptor
      */
@@ -133,12 +141,6 @@
      * Add a payment term
      *
-     * @param  string        $description
-     * A text description of the payment terms that apply to the payment amount due (including a
-     * description of possible penalties). Note: This element can contain multiple lines and
-     * multiple conditions.
-     * @param  DateTime|null $dueDate
-     * The date by which payment is due Note: The payment due date reflects the net payment due
-     * date. In the case of partial payments, this indicates the first due date of a net payment.
-     * The corresponding description of more complex payment terms can be given in BT-20.
+     * @param  string|null   $description __BT-20, From _BASIC WL__ A text description of the payment terms that apply to the payment amount due (including a description of possible penalties). Note: This element can contain multiple lines and multiple conditions.
+     * @param  DateTime|null $dueDate     __BT-9, From BASIC WL__ The date by which payment is due Note: The payment due date reflects the net payment due date. In the case of partial payments, this indicates the first due date of a net payment. The corresponding description of more complex payment terms can be given in BT-20.
      * @return ZugferdQuickDescriptor
      */
@@ -155,8 +157,6 @@
      * If $isSEPA is false code __59__ wil be useed for payment means code.
      *
-     * @param  boolean $isSEPA
-     * Is it a SEPA transaction or not
-     * @param  string  $buyerIban
-     * Direct debit: ID of the account to be debited
+     * @param  boolean $isSEPA    __BT-81, From BASIC WL__ The expected or used means of payment, expressed as a code. The entries from the UNTDID 4461 code list must be used. A distinction should be made between SEPA and non-SEPA payments as well as between credit payments, direct debits, card payments and other means of payment In particular, the following codes can be used:
+     * @param  string  $buyerIban __BT-91, From BASIC WL__ The account to be debited by the direct debit
      * @return ZugferdQuickDescriptor
      */
@@ -168,23 +168,14 @@
 
     /**
-     * Set payment means to "debit transfer"
+     * Set payment means to "credit transfer"
      *
      * If $isSEPA is true code __58__ wil be useed for payment means code.
      * If $isSEPA is false code __30__ wil be useed for payment means code.
      *
-     * @param  boolean     $isSEPA
-     * Is it a SEPA transaction or not
-     * @param  string      $payeeIban
-     * Transfer: A unique identifier for the financial account held with a payment service provider to which
-     * the payment should be made, e.g. Use an IBAN (in the case of a SEPA payment) for a national ProprietaryID
-     * account number
-     * @param  string|null $payeeAccountName
-     * The name of the payment account held with a payment service provider to which the payment should be made.
-     * Information only required if different from the name of the payee / seller
-     * @param  string|null $payeePropId
-     * National account number (not for SEPA)
-     * @param  string|null $payeeBic
-     * Seller's banking institution, An identifier for the payment service provider with whom the payment account
-     * is managed, such as the BIC or a national bank code, if required. No identification scheme is to be used.
+     * @param  boolean     $isSEPA           __BT-81, From BASIC WL__ The expected or used means of payment, expressed as a code. The entries from the UNTDID 4461 code list must be used. A distinction should be made between SEPA and non-SEPA payments as well as between credit payments, direct debits, card payments and other means of payment In particular, the following codes can be used:
+     * @param  string      $payeeIban        __BT-84, From BASIC WL__ A unique identifier for the financial account held with a payment service provider to which the payment should be made
+     * @param  string|null $payeeAccountName __BT-85, From BASIC WL__ The name of the payment account held with a payment service provider to which the payment should be made
+     * @param  string|null $payeePropId      __BT-BT-84-0, From BASIC WL__ National account number (not for SEPA)
+     * @param  string|null $payeeBic         __BT-86, From EN 16931__ An identifier for the payment service provider with which the payment account is held
      * @return ZugferdQuickDescriptor
      */
@@ -198,13 +189,7 @@
      * Set payment means to "Bank Card"
      *
-     * @param  string $cardType
-     * The type of the card
-     * @param  string $cardId
-     * The primary account number (PAN) to which the card used for payment belongs. In accordance with card
-     * payment security standards, an invoice should never contain a full payment card master account number.
-     * The following specification of the PCI Security Standards Council currently applies: The first 6 and
-     * last 4 digits at most are to be displayed
-     * @param  string $cardHolderName
-     * Name of the payment card holder
+     * @param  string $cardType       __BT-, From __ The type of the card
+     * @param  string $cardId         __BT-87, From EN 16931__ The primary account number (PAN) to which the card used for payment belongs. In accordance with card payment security standards, an invoice should never contain a full payment card master account number. The following specification of the PCI Security Standards Council currently applies: The first 6 and last 4 digits at most are to be displayed
+     * @param  string $cardHolderName __BT-88, From EN 16931__ Name of the payment card holder
      * @return ZugferdQuickDescriptor
      */
@@ -218,13 +203,7 @@
      * Set payment means to "Credit Card"
      *
-     * @param  string $cardType
-     * The type of the card
-     * @param  string $cardId
-     * The primary account number (PAN) to which the card used for payment belongs. In accordance with card
-     * payment security standards, an invoice should never contain a full payment card master account number.
-     * The following specification of the PCI Security Standards Council currently applies: The first 6 and
-     * last 4 digits at most are to be displayed
-     * @param  string $cardHolderName
-     * Name of the payment card holder
+     * @param  string $cardType       __BT-, From __ The type of the card
+     * @param  string $cardId         __BT-87, From EN 16931__ The primary account number (PAN) to which the card used for payment belongs. In accordance with card payment security standards, an invoice should never contain a full payment card master account number. The following specification of the PCI Security Standards Council currently applies: The first 6 and last 4 digits at most are to be displayed
+     * @param  string $cardHolderName __BT-88, From EN 16931__ Name of the payment card holder
      * @return ZugferdQuickDescriptor
      */
@@ -238,13 +217,7 @@
      * Set payment means to "Debit Card"
      *
-     * @param  string $cardType
-     * The type of the card
-     * @param  string $cardId
-     * The primary account number (PAN) to which the card used for payment belongs. In accordance with card
-     * payment security standards, an invoice should never contain a full payment card master account number.
-     * The following specification of the PCI Security Standards Council currently applies: The first 6 and
-     * last 4 digits at most are to be displayed
-     * @param  string $cardHolderName
-     * Name of the payment card holder
+     * @param  string $cardType       __BT-, From __ The type of the card
+     * @param  string $cardId         __BT-87, From EN 16931__ The primary account number (PAN) to which the card used for payment belongs. In accordance with card payment security standards, an invoice should never contain a full payment card master account number. The following specification of the PCI Security Standards Council currently applies: The first 6 and last 4 digits at most are to be displayed
+     * @param  string $cardHolderName __BT-88, From EN 16931__ Name of the payment card holder
      * @return ZugferdQuickDescriptor
      */
@@ -258,10 +231,7 @@
      * Add note to the document
      *
-     * @param  string      $note
-     * Free text on the invoice
-     * @param  string|null $subjectCode
-     * Code to qualify the free text for the invoice
-     * @param  string|null $contentCode
-     * Free text at document level
+     * @param  string      $note        __BT-22, From BASIC WL__ A free text containing unstructured information that is relevant to the invoice as a whole
+     * @param  string|null $subjectCode __BT-21, From BASIC WL__ The qualification of the free text for the invoice from BT-22
+     * @param  string|null $contentCode __BT-X-5, From EXTENDED__ A code to classify the content of the free text of the invoice
      * @return ZugferdQuickDescriptor
      */
@@ -275,8 +245,6 @@
      * Set details of the related buyer order
      *
-     * @param  string   $orderNo
-     * An identifier issued by the buyer for a referenced order (order number)
-     * @param  DateTime $orderDate
-     * Date of order
+     * @param  string   $orderNo   __BT-13, From MINIMUM__ An identifier issued by the buyer for a referenced order (order number)
+     * @param  DateTime $orderDate __BT-X-147, From EXTENDED__ Date of order
      * @return ZugferdQuickDescriptor
      */
@@ -296,26 +264,15 @@
      *    to large attachments and / or sensitive information, e.g. for personal services, which must be separated
      *    from the bill
-     *  - Use ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument and
-     *    ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument to seek between multiple additional referenced
-     *    documents
-     *
-     * @param  string        $issuerAssignedID
-     * The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for
-     * an object on which the invoice is based, or an identifier of the document on which the invoice is based.
-     * @param  DateTime|null $issueDateTime
-     * Document date
-     * @param  string|null   $typeCode
-     * Type of referenced document (See codelist UNTDID 1001)
-     *  - Code 916 "reference paper" is used to reference the identification of the document on which the invoice is based
-     *  - Code 50 "Price / sales catalog response" is used to reference the tender or the lot
-     *  - Code 130 "invoice data sheet" is used to reference an identifier for an object specified by the seller.
-     * @param  string|null   $name
-     * A description of the document, e.g. Hourly billing, usage or consumption report, etc.
-     * @param  string|null   $referenceTypeCode
-     * The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the
-     * recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected
-     * from UNTDID 1153 in accordance with the code list entries.
-     * @param  string|null   $filename
-     * Contains a file name of an attachment document embedded as a binary object
+     *
+     * @param  string        $issuerAssignedID  __BT-122, From EN 16931__ The identifier of the tender or lot to which the invoice relates, or an identifier specified by the seller for an object on which the invoice is based, or an identifier of the document on which the invoice is based.
+     * @param  DateTime|null $issueDateTime     __BT-X-149, From EXTENDED__ Document date
+     * @param  string|null   $typeCode          __BT-122-0, From EN 16931__ Type of referenced document (See codelist UNTDID 1001)
+     *                                          - Code 916 "reference paper" is used to reference the identification of the
+     *                                          document on which the invoice is based - Code 50 "Price / sales catalog response"
+     *                                          is used to reference the tender or the lot - Code 130 "invoice data sheet" is used
+     *                                          to reference an identifier for an object specified by the seller.
+     * @param  string|null   $name              __BT-123, From EN 16931__ A description of the document, e.g. Hourly billing, usage or consumption report, etc.
+     * @param  string|null   $referenceTypeCode __BT-, From __ The identifier for the identification scheme of the identifier of the item invoiced. If it is not clear to the recipient which scheme is used for the identifier, an identifier of the scheme should be used, which must be selected from UNTDID 1153 in accordance with the code list entries.
+     * @param  string|null   $filename          __BT-125, From EN 16931__ Contains a file name of an attachment document embedded as a binary object
      * @return ZugferdQuickDescriptor
      */
@@ -329,11 +286,6 @@
      * Set detailed information on the associated delivery note
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  string   $deliveryNoteNo
-     * Delivery receipt number
-     * @param  DateTime $deliveryNoteDate
-     * Delivery receipt date
+     * @param  string   $deliveryNoteNo   __BT-X-202, From EXTENDED__ Delivery slip number
+     * @param  DateTime $deliveryNoteDate __BT-X-203, From EXTENDED__ Delivery slip date
      * @return ZugferdQuickDescriptor
      */
@@ -352,13 +304,11 @@
      *  - Reference is made to previous invoices for advance payments from a final invoice
      *
-     * @param  string        $id
-     * Number of the previous invoice
-     * @param  DateTime|null $issueDateTime
-     * Date of the previous invoice
+     * @param  string        $id            __BT-25, From BASIC WL__ The identification of an invoice previously sent by the seller
+     * @param  DateTime|null $issueDateTime __BT-26, From BASIC WL__ Date of the previous invoice
      * @return ZugferdQuickDescriptor
      */
     public function doSetInvoiceReferencedDocument(string $id, ?DateTime $issueDateTime = null): ZugferdQuickDescriptor
     {
-        $this->setDocumentInvoiceReferencedDocument($id, $issueDateTime);
+        $this->setDocumentInvoiceReferencedDocument($id, null, $issueDateTime);
         return $this;
     }
@@ -367,8 +317,6 @@
      * Set Details of a project reference
      *
-     * @param  string $id
-     * Project Data
-     * @param  string $name
-     * Project Name
+     * @param  string $id   __BT-11, From EN 16931__ The identifier of the project to which the invoice relates
+     * @param  string $name __BT-11-0, From EN 16931__  The name of the project to which the invoice relates
      * @return ZugferdQuickDescriptor
      */
@@ -380,31 +328,28 @@
 
     /**
+     * Set detailed information on the actual delivery
+     *
+     * @param  DateTime|null $date __BT-72, From BASIC WL__ Actual delivery time
+     * @return ZugferdQuickDescriptor
+     */
+    public function doSetSupplyChainEvent(?DateTime $date): ZugferdQuickDescriptor
+    {
+        $this->setDocumentSupplyChainEvent($date);
+        return $this;
+    }
+
+    /**
      * Detailed information about the buyer (service recipient)
      *
-     * @param  string      $name
-     * The full name of the buyer
-     * @param  string      $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string      $city
-     * Usual name of the city or municipality in which the buyers address is located
-     * @param  string      $street
-     * The main line in the buyers address. This is usually the street name and house number or
-     * the post office box
-     * @param  string      $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  string      $buyerReference
-     * An identifier assigned by the buyer and used for internal routing
-     * @param  string      $id
-     * An identifier of the buyer. In many systems, buyer identification is key information. Multiple buyer IDs can be
-     * assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given,
-     * it should be known to the buyer and buyer, e.g. a previously exchanged, seller-assigned identifier of the buyer
-     * @param  string|null $globalID
-     * The buyers's identifier identification scheme is an identifier uniquely assigned to a buyer by a
-     * global registration organization.
-     * @param  string|null $globalIDscheme
-     * If the identifier is used for the identification scheme, it must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+     * @param  string      $name           __BT-44, From MINIMUM__ The full name of the buyer
+     * @param  string      $postcode       __BT-53, From BASIC WL__ Identifier for a group of properties, such as a zip code
+     * @param  string      $city           __BT-52, From BASIC WL__ Usual name of the city or municipality in which the buyers address is located
+     * @param  string      $street         __BT-50, From BASIC WL__ The main line in the buyers address. This is usually the street name and house number or the post office box
+     * @param  string      $country        __BT-55, From BASIC WL__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their
+     *                                     subdivisionsâ
+     * @param  string      $buyerReference __BT-10, From MINIMUM__ An identifier assigned by the buyer and used for internal routing
+     * @param  string      $id             __BT-46, From BASIC WL__ An identifier of the buyer. In many systems, buyer identification is key information. Multiple buyer IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and buyer, e.g. a previously exchanged, seller-assigned identifier of the buyer
+     * @param  string|null $globalID       __BT-46-0, From BASIC WL__ The buyers's identifier identification scheme is an identifier uniquely assigned to a buyer by a global registration organization.
+     * @param  string|null $globalIDscheme __BT-46-1, From BASIC WL__ If the identifier is used for the identification scheme, it must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdQuickDescriptor
      */
@@ -417,4 +362,5 @@
             $this->setDocumentBuyerReference($buyerReference);
         }
+
         return $this;
     }
@@ -423,14 +369,9 @@
      * Set contact of the buyer party
      *
-     * @param  string      $name
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $orgunit
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $emailAddress
-     * Detailed information on the buyer's phone number
-     * @param  string|null $phoneno
-     * Detailed information on the buyer's phone number
-     * @param  string|null $faxno
-     * Detailed information on the buyer's fax number
+     * @param  string      $name         __BT-56, From EN 16931__ Contact point for a legal entity, such as a personal name of the contact person
+     * @param  string|null $orgunit      __BT-56-0, From EN 16931__ Contact point for a legal entity, such as a name of the department or office
+     * @param  string|null $emailAddress __BT-58, From EN 16931__ An e-mail address of the contact point
+     * @param  string|null $phoneno      __BT-57, From EN 16931__ A telephone number for the contact point
+     * @param  string|null $faxno        __BT-X-115, From EXTENDED__ A fax number of the contact point
      * @return ZugferdQuickDescriptor
      */
@@ -444,20 +385,18 @@
      * Add detailed information on the buyers's tax information
      *
-     * The local identification (defined by the buyer's address) of the buyer for tax purposes or a reference that enables the buyer
-     * to indicate his reporting status for tax purposes The sales tax identification number of the buyer
+     * The local identification (defined by the buyers's address) of the buyers for tax purposes or a reference that enables the buyers
+     * to indicate his reporting status for tax purposes The sales tax identification number of the buyers
      * Note: This information may affect how the buyer the invoice settled (such as in relation to social security contributions). So
-     * e.g. In some countries, if the buyer is not reported for tax, the buyer will withhold the tax amount and pay it on behalf of the
-     * buyer. Sales tax number with a prefixed country code. A supplier registered as subject to VAT must provide his sales tax
+     * e.g. In some countries, if the buyers is not reported for tax, the buyer will withhold the tax amount and pay it on behalf of the
+     * buyers. Sales tax number with a prefixed country code. A supplier registered as subject to VAT must provide his sales tax
      * identification number, unless he uses a tax agent.
      *
-     * @param  string $no
-     * Tax number of the buyers
-     * @param  string $schemeID
-     * Tax number of the buyers or sales tax identification number of the (FC = Tax number, VA = Sales tax number)
+     * @param  string $no       __BT-48-0, From BASIC WL__ Type of tax number (FC = Tax number, VA = Sales tax identification number)
+     * @param  string $schemeID __BT-48, From BASIC WL__ Tax number or sales tax identification number
      * @return ZugferdQuickDescriptor
      */
     public function doAddBuyerTaxRegistration(string $no, string $schemeID): ZugferdQuickDescriptor
     {
-        $this->addDocumentBuyerTaxRegistration($no, $schemeID);
+        $this->addDocumentBuyerTaxRegistration($schemeID, $no);
         return $this;
     }
@@ -466,6 +405,6 @@
      * Set Buyers electronic communication information
      *
-     * @param  string $uri
-     * @param  string $uriScheme
+     * @param  string $uri       __BT-49, From BASIC WL__ Specifies the buyer's electronic address to which the invoice is sent
+     * @param  string $uriScheme __BT-49-1, From BASIC WL__ The identifier for the identification scheme of the buyer's electronic address (Default: EM)
      * @return ZugferdQuickDescriptor
      */
@@ -479,29 +418,13 @@
      * Detailed information about the seller (=service provider)
      *
-     * @param  string      $name
-     * The full formal name under which the seller is registered in the
-     * National Register of Legal Entities, Taxable Person or otherwise acting as person(s)
-     * @param  string      $postcode
-     * Identifier for a group of properties, such as a zip code
-     * @param  string      $city
-     * Usual name of the city or municipality in which the seller's address is located
-     * @param  string      $street
-     * The main line in the sellers address. This is usually the street name and house number or
-     * the post office box
-     * @param  string      $country
-     * Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax
-     * is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the
-     * representation of names of countries and their subdivisionsâ
-     * @param  string|null $id
-     * An identifier of the seller. In many systems, seller identification
-     * is key information. Multiple seller IDs can be assigned or specified. They can be differentiated
-     * by using different identification schemes. If no scheme is given, it should be known to the buyer
-     * and seller, e.g. a previously exchanged, buyer-assigned identifier of the seller
-     * @param  string|null $globalID
-     * The seller's identifier identification scheme is an identifier uniquely assigned to a seller by a
-     * global registration organization.
-     * @param  string|null $globalIDscheme
-     * If the identifier is used for the identification scheme, it must be selected from the entries in
-     * the list published by the ISO / IEC 6523 Maintenance Agency.
+     * @param  string      $name           __BT-27, From MINIMUM__ The full formal name under which the seller is registered in the National Register of Legal Entities, Taxable Person or otherwise acting as person(s)
+     * @param  string      $postcode       __BT-38, From BASIC WL__ Identifier for a group of properties, such as a zip code
+     * @param  string      $city           __BT-37, From BASIC WL__ Usual name of the city or municipality in which the seller's address is located
+     * @param  string      $street         __BT-35, From BASIC WL__ The main line in the sellers address. This is usually the street name and house number or the post office box
+     * @param  string      $country        __BT-40, From MINIMUM__ Code used to identify the country. If no tax agent is specified, this is the country in which the sales tax is due. The lists of approved countries are maintained by the EN ISO 3166-1 Maintenance Agency âCodes for the representation of names of countries and their
+     *                                     subdivisionsâ
+     * @param  string|null $id             __BT-29, From BASIC WL__ An identifier of the seller. In many systems, seller identification is key information. Multiple seller IDs can be assigned or specified. They can be differentiated by using different identification schemes. If no scheme is given, it should be known to the buyer and seller, e.g. a previously exchanged, buyer-assigned identifier of the seller
+     * @param  string|null $globalID       __BT-29/BT-29-0, From BASIC WL__ The seller's identifier identification scheme is an identifier uniquely assigned to a seller by a global registration organization.
+     * @param  string|null $globalIDscheme __BT-29-1, From BASIC WL__ If the identifier is used for the identification scheme, it must be selected from the entries in the list published by the ISO / IEC 6523 Maintenance Agency.
      * @return ZugferdQuickDescriptor
      */
@@ -517,14 +440,9 @@
      * Set contact of the seller party
      *
-     * @param  string      $name
-     * Contact point for a legal entity, such as a personal name of the contact person
-     * @param  string|null $orgunit
-     * Contact point for a legal entity, such as a name of the department or office
-     * @param  string|null $emailAddress
-     * Detailed information on the seller's phone number
-     * @param  string|null $phoneno
-     * Detailed information on the seller's phone number
-     * @param  string|null $faxno
-     * Detailed information on the seller's fax number
+     * @param  string      $name         __BT-41, From EN 16931__ Such as personal name, name of contact person or department or office
+     * @param  string|null $orgunit      __BT-41-0, From EN 16931__ If a contact person is specified, either the name or the department must be transmitted.
+     * @param  string|null $emailAddress __BT-43, From EN 16931__ An e-mail address of the contact point
+     * @param  string|null $phoneno      __BT-42, From EN 16931__ A telephone number for the contact point
+     * @param  string|null $faxno        __BT-X-107, From EXTENDED__ A fax number of the contact point
      * @return ZugferdQuickDescriptor
      */
@@ -545,8 +463,6 @@
      * identification number, unless he uses a tax agent.
      *
-     * @param  string $no
-     * Tax number of the seller
-     * @param  string $schemeID
-     * Tax number of the seller or sales tax identification number of the (FC = Tax number, VA = Sales tax number)
+     * @param  string $no       __BT-31/32, From MINIMUM/EN 16931__ Tax number of the seller or sales tax identification number of the seller
+     * @param  string $schemeID __BT-31-0/BT-32-0, From MINIMUM/EN 16931__ Type of tax number of the seller (FC = Tax number, VA = Sales tax identification number)
      * @return ZugferdQuickDescriptor
      */
@@ -560,6 +476,6 @@
      * Set Sellers electronic communication information
      *
-     * @param  string $uri
-     * @param  string $uriScheme
+     * @param  string $uri       __BT-34, From BASIC WL__ Specifies the electronic address of the seller to which the response to the invoice can be sent at application level
+     * @param  string $uriScheme __BT-34-1, From BASIC WL__ The identifier for the identification scheme of the seller's electronic address (Default: EM)
      * @return ZugferdQuickDescriptor
      */
@@ -573,9 +489,8 @@
      * Add a new text position
      *
-     * @param  string $lineId
-     * A unique identifier for the relevant item within the invoice (item number)
-     * @param  string $comment
-     * A free text that contains unstructured information that is relevant to the invoice item
-     * @return ZugferdQuickDescriptor
+     * @param      string $lineId  __BT-126, From BASIC__ Identification of the invoice item
+     * @param      string $comment __BT-127, From BASIC__ A free text that contains unstructured information that is relevant to the invoice item
+     * @return     ZugferdQuickDescriptor
+     * @deprecated 1.0.75
      */
     public function doAddTradeLineCommentItem(string $lineId, string $comment): ZugferdQuickDescriptor
@@ -589,58 +504,15 @@
      * Adds a new position (line) to document
      *
-     * @param  string $lineId
-     * A unique identifier for the relevant item within the invoice (item number)
-     * @param  string $productName
-     * A name of the item (item name)
-     * @param  float  $unitPrice
-     * Net price of the item
-     * @param  float  $quantity
-     * The quantity of individual items (goods or services) billed in the relevant line
-     * @param  string $unitCode
-     * The unit of measure applicable to the amount billed. Note: The unit of measurement must be taken from the
-     * lists from UN / ECE Recommendation No. 20 "Codes for Units of Measure Used in International Trade" and
-     * UN / ECE Recommendation No. 21 "Codes for Passengers, Types of Cargo, Packages and Packaging Materials
-     * (with Complementary Codes for Package Names)" using the UN / ECE Rec No. 20 Intro 2.a) can be selected.
-     * It should be noted that in most cases it is not necessary for buyers and sellers to fully implement these
-     * lists in their software. Sellers only need to support the entities necessary for their goods and services;
-     * Buyers only need to verify that the units used in the invoice match those in other documents (such as in
-     * Contracts, catalogs, orders and shipping notifications) match the units used.
-     * @param  float  $allowanceChargeAmount
-     * The surcharge/discount amount excluding sales tax. If negative then its an allowance, if positive then
-     * it's a charge
-     * @param  string $allowanceChargeReason
-     * The reason given in text form for the invoice item discount/surcharge
-     * @param  string $taxCategoryCode
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  string $taxTypeCode
-     * In EN 16931 only the tax type âsales taxâ with the code âVATâ is supported. Should other types of tax be
-     * specified, such as an insurance tax or a mineral oil tax the EXTENDED profile must be used. The code for
-     * the tax type must then be taken from the code list UNTDID 5153.
-     * @param  float  $taxPercent
-     * The VAT rate applicable to the item invoiced and expressed as a percentage. Note: The code of the sales
-     * tax category and the category-specific sales tax rate  must correspond to one another. The value to be
-     * given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
+     * @param  string $lineId                __BT-126, From BASIC__ Identification of the invoice item
+     * @param  string $productName           __BT-153, From BASIC__ A name of the item (item name)
+     * @param  float  $unitPrice             __BT-146, From BASIC__ Net price of the item
+     * @param  float  $quantity              __BT-129, From BASIC__ The quantity of individual items (goods or services) billed in the relevant line
+     * @param  string $unitCode              __BT-130, From BASIC__ The unit of measure applicable to the amount billed
+     * @param  float  $allowanceChargeAmount __BT-136/BT-141, From BASIC__ The surcharge/discount amount excluding sales tax
+     * @param  string $allowanceChargeReason __BT-139/BT-144, From BASIC__ The reason given in text form for the invoice item discount/surcharge
+     * @param  string $taxCategoryCode       __BT-151, From BASIC__ Coded description of a sales tax category
+     * @param  string $taxTypeCode           __BT-151-0, From BASIC__ In EN 16931 only the tax type âsales taxâ with the code âVATâ is supported. Should other types of tax be specified, such as an insurance tax or a mineral oil tax the EXTENDED profile must be used. The code for the tax type must then be taken from the code list
+     *                                       UNTDID 5153.
+     * @param  float  $taxPercent            __BT-152, From BASIC__ The VAT rate applicable to the item invoiced and expressed as a percentage. Note: The code of the sales tax category and the category-specific sales tax rate  must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
      * @return ZugferdQuickDescriptor
      */
@@ -649,5 +521,5 @@
         $hasChargeAmountIsAllowance = $allowanceChargeAmount != 0.0;
         $allowanceChargeAmountIsAllowance = $allowanceChargeAmount < 0.0;
-        $allowanceAmount = $allowanceChargeAmountIsAllowance === true ? abs($allowanceChargeAmount) : 0.0;
+        $allowanceAmount = $allowanceChargeAmountIsAllowance ? abs($allowanceChargeAmount) : 0.0;
         $chargeAmount = $allowanceChargeAmountIsAllowance === false ? abs($allowanceChargeAmount) : 0.0;
         $allowanceChargeAmount = abs($allowanceChargeAmount);
@@ -681,6 +553,5 @@
      * Add detailed information on the free text on the position
      *
-     * @param  string $content
-     * A free text that contains unstructured information that is relevant to the invoice item
+     * @param  string $content __BT-127, From BASIC__ A free text that contains unstructured information that is relevant to the invoice item
      * @return ZugferdQuickDescriptor
      */
@@ -695,58 +566,15 @@
      * Adds a new position (line) to document with a surcharge amount
      *
-     * @param string $lineId
-     * A unique identifier for the relevant item within the invoice (item number)
-     * @param string $productName
-     * A name of the item (item name)
-     * @param float  $unitPrice
-     * Net price of the item
-     * @param float  $chargeAmount
-     * The surcharge amount excluding sales tax
-     * @param string $chargeReason
-     * The reason given in text form for the invoice item discount/surcharge
-     *
-     * @param  float  $quantity
-     * The quantity of individual items (goods or services) billed in the relevant line
-     * @param  string $unitCode
-     * The unit of measure applicable to the amount billed. Note: The unit of measurement must be taken from the
-     * lists from UN / ECE Recommendation No. 20 "Codes for Units of Measure Used in International Trade" and
-     * UN / ECE Recommendation No. 21 "Codes for Passengers, Types of Cargo, Packages and Packaging Materials
-     * (with Complementary Codes for Package Names)" using the UN / ECE Rec No. 20 Intro 2.a) can be selected.
-     * It should be noted that in most cases it is not necessary for buyers and sellers to fully implement these
-     * lists in their software. Sellers only need to support the entities necessary for their goods and services;
-     * Buyers only need to verify that the units used in the invoice match those in other documents (such as in
-     * Contracts, catalogs, orders and shipping notifications) match the units used.
-     * @param  string $taxCategoryCode
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  string $taxTypeCode
-     * In EN 16931 only the tax type âsales taxâ with the code âVATâ is supported. Should other types of tax be
-     * specified, such as an insurance tax or a mineral oil tax the EXTENDED profile must be used. The code for
-     * the tax type must then be taken from the code list UNTDID 5153.
-     * @param  float  $taxPercent
-     * The VAT rate applicable to the item invoiced and expressed as a percentage. Note: The code of the sales
-     * tax category and the category-specific sales tax rate  must correspond to one another. The value to be
-     * given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
+     * @param  string $lineId          __BT-126, From BASIC__ Identification of the invoice item
+     * @param  string $productName     __BT-153, From BASIC__ A name of the item (item name)
+     * @param  float  $unitPrice       __BT-146, From BASIC__ Net price of the item
+     * @param  float  $quantity        __BT-129, From BASIC__ The quantity of individual items (goods or services) billed in the relevant line
+     * @param  string $unitCode        __BT-130, From BASIC__ The unit of measure applicable to the amount billed
+     * @param  float  $chargeAmount    __BT-136/BT-141, From BASIC__ The surcharge amount excluding sales tax
+     * @param  string $chargeReason    __BT-139/BT-144, From BASIC__ The reason given in text form for the invoice item surcharge
+     * @param  string $taxCategoryCode __BT-151, From BASIC__ Coded description of a sales tax category
+     * @param  string $taxTypeCode     __BT-151-0, From BASIC__ In EN 16931 only the tax type âsales taxâ with the code âVATâ is supported. Should other types of tax be specified, such as an insurance tax or a mineral oil tax the EXTENDED profile must be used. The code for the tax type must then be taken from the code list
+     *                                 UNTDID 5153.
+     * @param  float  $taxPercent      __BT-152, From BASIC__ The VAT rate applicable to the item invoiced and expressed as a percentage. Note: The code of the sales tax category and the category-specific sales tax rate  must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
      * @return ZugferdQuickDescriptor
      */
@@ -758,59 +586,17 @@
 
     /**
-     * Adds a new position (line) to document with a surcharge amount
-     *
-     * @param  string $lineId
-     * A unique identifier for the relevant item within the invoice (item number)
-     * @param  string $productName
-     * A name of the item (item name)
-     * @param  float  $unitPrice
-     * Net price of the item
-     * @param  float  $discountAmount
-     * The discount amount excluding sales tax
-     * @param  string $discountReason
-     * The reason given in text form for the invoice item discount/surcharge
-     * @param  float  $quantity
-     * The quantity of individual items (goods or services) billed in the relevant line
-     * @param  string $unitCode
-     * The unit of measure applicable to the amount billed. Note: The unit of measurement must be taken from the
-     * lists from UN / ECE Recommendation No. 20 "Codes for Units of Measure Used in International Trade" and
-     * UN / ECE Recommendation No. 21 "Codes for Passengers, Types of Cargo, Packages and Packaging Materials
-     * (with Complementary Codes for Package Names)" using the UN / ECE Rec No. 20 Intro 2.a) can be selected.
-     * It should be noted that in most cases it is not necessary for buyers and sellers to fully implement these
-     * lists in their software. Sellers only need to support the entities necessary for their goods and services;
-     * Buyers only need to verify that the units used in the invoice match those in other documents (such as in
-     * Contracts, catalogs, orders and shipping notifications) match the units used.
-     * @param  string $taxCategoryCode
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  string $taxTypeCode
-     * In EN 16931 only the tax type âsales taxâ with the code âVATâ is supported. Should other types of tax be
-     * specified, such as an insurance tax or a mineral oil tax the EXTENDED profile must be used. The code for
-     * the tax type must then be taken from the code list UNTDID 5153.
-     * @param  float  $taxPercent
-     * The VAT rate applicable to the item invoiced and expressed as a percentage. Note: The code of the sales
-     * tax category and the category-specific sales tax rate  must correspond to one another. The value to be
-     * given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
+     * Adds a new position (line) to document with a discount amount
+     *
+     * @param  string $lineId          __BT-126, From BASIC__ Identification of the invoice item
+     * @param  string $productName     __BT-153, From BASIC__ A name of the item (item name)
+     * @param  float  $unitPrice       __BT-146, From BASIC__ Net price of the item
+     * @param  float  $quantity        __BT-129, From BASIC__ The quantity of individual items (goods or services) billed in the relevant line
+     * @param  string $unitCode        __BT-130, From BASIC__ The unit of measure applicable to the amount billed
+     * @param  float  $discountAmount  __BT-136/BT-141, From BASIC__ The discount amount excluding sales tax
+     * @param  string $discountReason  __BT-139/BT-144, From BASIC__ The reason given in text form for the invoice item discount
+     * @param  string $taxCategoryCode __BT-151, From BASIC__ Coded description of a sales tax category
+     * @param  string $taxTypeCode     __BT-151-0, From BASIC__ In EN 16931 only the tax type âsales taxâ with the code âVATâ is supported. Should other types of tax be specified, such as an insurance tax or a mineral oil tax the EXTENDED profile must be used. The code for the tax type must then be taken from the code list
+     *                                 UNTDID 5153.
+     * @param  float  $taxPercent      __BT-152, From BASIC__ The VAT rate applicable to the item invoiced and expressed as a percentage. Note: The code of the sales tax category and the category-specific sales tax rate  must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
      * @return ZugferdQuickDescriptor
      */
@@ -824,42 +610,9 @@
      * Add a logistical service fees (On document level)
      *
-     * __Notes__
-     *  - This is only available in the EXTENDED profile
-     *
-     * @param  float  $amount
-     * Amount of the service fee
-     * @param  string $description
-     * Identification of the service fee
-     * @param  string $taxTypeCode
-     * Coded description of a sales tax category. Note: Fixed value = "VAT"
-     * @param  string $taxCategoryCode
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  float  $taxPercent
-     * The sales tax rate, expressed as the percentage applicable to the sales tax category in
-     * question. Note: The code of the sales tax category and the category-specific sales tax rate
-     * must correspond to one another. The value to be given is the percentage. For example, the
-     * value 20 is given for 20% (and not 0.2)
+     * @param  float  $amount          __BT-X-272, From EXTENDED__ Amount of the service fee
+     * @param  string $description     __BT-X-271, From EXTENDED__ Identification of the service fee
+     * @param  string $taxTypeCode     __BT-X-273-0, From EXTENDED__ Code of the Tax type. Note: Fixed value = "VAT"
+     * @param  string $taxCategoryCode __BT-X-273, From EXTENDED__ Code of the VAT category
+     * @param  float  $taxPercent      __BT-X-274, From EXTENDED__ The sales tax rate, expressed as the percentage applicable to the sales tax category in question. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
      * @return ZugferdQuickDescriptor
      */
@@ -885,10 +638,9 @@
      * such as for withheld taxes may also be specified in this group
      *
-     * @param  float  $actualAmount
-     * Amount of the surcharge or discount at document level
-     * @param  string $reason
-     * @param  string $taxCategoryCode
-     * @param  string $taxTypeCode
-     * @param  float  $taxPercent
+     * @param  float  $actualAmount    __BT-92/BT-99, From BASIC WL__ Amount of the surcharge or discount at document level
+     * @param  string $reason          __BT-97/BT-104, From BASIC WL__ The reason given in text form for the surcharge or discount at document level
+     * @param  string $taxCategoryCode __BT-95/BT-102, From BASIC WL__ A coded indication of which sales tax category applies to the surcharge or deduction at document level
+     * @param  string $taxTypeCode     __BT-95-0/BT-102-0, From BASIC WL__ Code for the VAT category of the surcharge or charge at document level. Note: Fixed value = "VAT"
+     * @param  float  $taxPercent      __BT-96/BT-103, From BASIC WL__ VAT rate for the surcharge or discount on document level. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
      * @return ZugferdQuickDescriptor
      */
@@ -900,5 +652,5 @@
 
         $allowanceChargeAmountIsAllowance = $actualAmount < 0.0;
-        $allowanceAmount = $allowanceChargeAmountIsAllowance === true ? abs($actualAmount) : 0.0;
+        $allowanceAmount = $allowanceChargeAmountIsAllowance ? abs($actualAmount) : 0.0;
         $chargeAmount = $allowanceChargeAmountIsAllowance === false ? abs($actualAmount) : 0.0;
 
@@ -921,49 +673,16 @@
      * Add a VAT breakdown (at document level)
      *
-     * @param  float       $basisAmount
-     * Tax base amount, Each sales tax breakdown must show a category-specific tax base amount.
-     * @param  float       $percent
-     * The sales tax rate, expressed as the percentage applicable to the sales tax category in
-     * question. Note: The code of the sales tax category and the category-specific sales tax rate
-     * must correspond to one another. The value to be given is the percentage. For example, the
-     * value 20 is given for 20% (and not 0.2)
-     * @param  string      $categoryCode
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  string|null $typeCode
-     * Coded description of a sales tax category. Note: Fixed value = "VAT"
-     * @param  float|null  $allowanceChargeBasisAmount
-     * Total amount of surcharges and deductions of the tax rate at document level
-     * @param  string|null $exemptionReasonCode
-     * Reason given in code form for the exemption of the amount from VAT. Note: Code list issued
-     * and maintained by the Connecting Europe Facility.
-     * @param  string|null $exemptionReason
-     * Reason for tax exemption (free text)
+     * @param  float       $basisAmount                __BT-116, From BASIC WL__ Tax base amount, Each sales tax breakdown must show a category-specific tax base amount.
+     * @param  float       $percent                    __BT-119, From BASIC WL__ The sales tax rate, expressed as the percentage applicable to the sales tax category in question. Note: The code of the sales tax category and the category-specific sales tax rate must correspond to one another. The value to be given is the percentage. For example, the value 20 is given for 20% (and not 0.2)
+     * @param  string      $categoryCode               __BT-118, From BASIC WL__ Coded description of a sales tax category
+     * @param  string|null $typeCode                   __BT-118-0, From BASIC WL__ Coded description of a sales tax category. Note: Fixed value = "VAT"
+     * @param  float|null  $allowanceChargeBasisAmount __BT-X-263, From EXTENDED__ Total amount Additions and deductions to the tax rate at document level
+     * @param  string|null $exemptionReasonCode        __BT-121, From BASIC WL__ Reason given in code form for the exemption of the amount from VAT. Note: Code list issued and maintained by the Connecting Europe Facility.
+     * @param  string|null $exemptionReason            __BT-120, From BASIC WL__ Reason for tax exemption (free text)
      * @return ZugferdQuickDescriptor
      */
     public function doAddApplicableTradeTax(float $basisAmount, float $percent, string $categoryCode, ?string $typeCode = null, ?float $allowanceChargeBasisAmount = null, ?string $exemptionReasonCode = null, ?string $exemptionReason = null): ZugferdQuickDescriptor
     {
-        $this->addDocumentTax($categoryCode, $typeCode ?? "VAT", $basisAmount, round(0.01 * $percent * $basisAmount, 2), $percent, $exemptionReason, $exemptionReasonCode);
+        $this->addDocumentTax($categoryCode, $typeCode ?? "VAT", $basisAmount, round(0.01 * $percent * $basisAmount, 2), $percent, $exemptionReason, $exemptionReasonCode, null, $allowanceChargeBasisAmount);
         return $this;
     }
@@ -972,48 +691,16 @@
      * Add a VAT breakdown (at document level)
      *
-     * @param  float       $basisAmount
-     * Tax base amount, Each sales tax breakdown must show a category-specific tax base amount.
-     * @param  float       $calculatedAmount
-     * The total amount to be paid for the relevant VAT category. Note: Calculated by multiplying
-     * the amount to be taxed according to the sales tax category by the sales tax rate applicable
-     * for the sales tax category concerned
-     * @param  string      $categoryCode
-     * Coded description of a sales tax category
-     *
-     * The following entries from UNTDID 5305 are used (details in brackets):
-     *  - Standard rate (sales tax is due according to the normal procedure)
-     *  - Goods to be taxed according to the zero rate (sales tax is charged with a percentage of zero)
-     *  - Tax exempt (USt./IGIC/IPSI)
-     *  - Reversal of the tax liability (the rules for reversing the tax liability at USt./IGIC/IPSI apply)
-     *  - VAT exempt for intra-community deliveries of goods (USt./IGIC/IPSI not levied due to rules on intra-community deliveries)
-     *  - Free export item, tax not levied (VAT / IGIC/IPSI not levied due to export outside the EU)
-     *  - Services outside the tax scope (sales are not subject to VAT / IGIC/IPSI)
-     *  - Canary Islands general indirect tax (IGIC tax applies)
-     *  - IPSI (tax for Ceuta / Melilla) applies.
-     *
-     * The codes for the VAT category are as follows:
-     *  - S = sales tax is due at the normal rate
-     *  - Z = goods to be taxed according to the zero rate
-     *  - E = tax exempt
-     *  - AE = reversal of tax liability
-     *  - K = VAT is not shown for intra-community deliveries
-     *  - G = tax not levied due to export outside the EU
-     *  - O = Outside the tax scope
-     *  - L = IGIC (Canary Islands)
-     *  - M = IPSI (Ceuta / Melilla)
-     * @param  string|null $typeCode
-     * Coded description of a sales tax category. Note: Fixed value = "VAT"
-     * @param  float|null  $allowanceChargeBasisAmount
-     * Total amount of surcharges and deductions of the tax rate at document level
-     * @param  string|null $exemptionReasonCode
-     * Reason given in code form for the exemption of the amount from VAT. Note: Code list issued
-     * and maintained by the Connecting Europe Facility.
-     * @param  string|null $exemptionReason
-     * Reason for tax exemption (free text)
+     * @param  float       $basisAmount                __BT-116, From BASIC WL__ Tax base amount, Each sales tax breakdown must show a category-specific tax base amount.
+     * @param  float       $calculatedAmount           __BT-117, From BASIC WL__ The total amount to be paid for the relevant VAT category. Note: Calculated by multiplying the amount to be taxed according to the sales tax category by the sales tax rate applicable for the sales tax category concerned
+     * @param  string      $categoryCode               __BT-118, From BASIC WL__ Coded description of a sales tax category
+     * @param  string|null $typeCode                   __BT-118-0, From BASIC WL__ Coded description of a sales tax category. Note: Fixed value = "VAT"
+     * @param  float|null  $allowanceChargeBasisAmount __BT-X-263, From EXTENDED__ Total amount Additions and deductions to the tax rate at document level
+     * @param  string|null $exemptionReasonCode        __BT-121, From BASIC WL__ Reason given in code form for the exemption of the amount from VAT. Note: Code list issued and maintained by the Connecting Europe Facility.
+     * @param  string|null $exemptionReason            __BT-120, From BASIC WL__ Reason for tax exemption (free text)
      * @return ZugferdQuickDescriptor
      */
     public function doAddApplicableTradeTax2(float $basisAmount, float $calculatedAmount, string $categoryCode, ?string $typeCode = null, ?float $allowanceChargeBasisAmount = null, ?string $exemptionReasonCode = null, ?string $exemptionReason = null): ZugferdQuickDescriptor
     {
-        $this->addDocumentTax($categoryCode, $typeCode ?? "VAT", $basisAmount, $calculatedAmount, round($calculatedAmount * 100.0 / $basisAmount, 2), $exemptionReason, $exemptionReasonCode);
+        $this->addDocumentTax($categoryCode, $typeCode ?? "VAT", $basisAmount, $calculatedAmount, round($calculatedAmount * 100.0 / $basisAmount, 2), $exemptionReason, $exemptionReasonCode, null, $allowanceChargeBasisAmount);
         return $this;
     }
@@ -1022,5 +709,5 @@
      * Sets the prepaid amount
      *
-     * @param  float $totalPrepaidAmount
+     * @param  float $totalPrepaidAmount __BT-113, From BASIC WL__ Prepayment amount
      * @return ZugferdQuickDescriptor
      */
@@ -1038,4 +725,8 @@
     protected function doCalcTotals(): ZugferdQuickDescriptor
     {
+        if ($this->totalsAreCalculated !== false) {
+            return $this;
+        }
+
         $this->writeVatBreakDown();
         $this->setDocumentSummation(
@@ -1050,4 +741,7 @@
             $this->totalPrepaidAmount
         );
+
+        $this->totalsAreCalculated = true;
+
         return $this;
     }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptorEn16931.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptorEn16931.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptorEn16931.php	(revision 8504)
@@ -14,5 +14,5 @@
 
 /**
- * Class representing the document descriptor for outgoing documents in EN16931 profile
+ * Class representing the document descriptor for outgoing documents in EN16931 (COMFORT) profile
  *
  * @category Zugferd
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptorXRechnung.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptorXRechnung.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptorXRechnung.php	(revision 8504)
@@ -14,5 +14,5 @@
 
 /**
- * Class representing the document descriptor for outgoing documents in XRECHNUNG profile
+ * Class representing the document descriptor for outgoing documents in XRECHNUNG 1.x profile
  *
  * @category Zugferd
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptorXRechnung3.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptorXRechnung3.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/quick/ZugferdQuickDescriptorXRechnung3.php	(revision 8504)
@@ -14,5 +14,5 @@
 
 /**
- * Class representing the document descriptor for outgoing documents in XRECHNUNG 2.x profile
+ * Class representing the document descriptor for outgoing documents in XRECHNUNG 3.x profile
  *
  * @category Zugferd
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL.xsd	(revision 8504)
@@ -1,4 +1,3 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- test -->
 <xs:schema xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd	(revision 8504)
@@ -2,208 +2,8 @@
 <xs:schema xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
-    xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
     targetNamespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
-    elementFormDefault="qualified"
-    version="100.D16B">
-  <xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
+    elementFormDefault="qualified">
   <xs:simpleType name="AllowanceChargeReasonCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AA"/>
-      <xs:enumeration value="AAA"/>
-      <xs:enumeration value="AAC"/>
-      <xs:enumeration value="AAD"/>
-      <xs:enumeration value="AAE"/>
-      <xs:enumeration value="AAF"/>
-      <xs:enumeration value="AAH"/>
-      <xs:enumeration value="AAI"/>
-      <xs:enumeration value="AAS"/>
-      <xs:enumeration value="AAT"/>
-      <xs:enumeration value="AAV"/>
-      <xs:enumeration value="AAY"/>
-      <xs:enumeration value="AAZ"/>
-      <xs:enumeration value="ABA"/>
-      <xs:enumeration value="ABB"/>
-      <xs:enumeration value="ABC"/>
-      <xs:enumeration value="ABD"/>
-      <xs:enumeration value="ABF"/>
-      <xs:enumeration value="ABK"/>
-      <xs:enumeration value="ABL"/>
-      <xs:enumeration value="ABN"/>
-      <xs:enumeration value="ABR"/>
-      <xs:enumeration value="ABS"/>
-      <xs:enumeration value="ABT"/>
-      <xs:enumeration value="ABU"/>
-      <xs:enumeration value="ACF"/>
-      <xs:enumeration value="ACG"/>
-      <xs:enumeration value="ACH"/>
-      <xs:enumeration value="ACI"/>
-      <xs:enumeration value="ACJ"/>
-      <xs:enumeration value="ACK"/>
-      <xs:enumeration value="ACL"/>
-      <xs:enumeration value="ACM"/>
-      <xs:enumeration value="ACS"/>
-      <xs:enumeration value="ADC"/>
-      <xs:enumeration value="ADE"/>
-      <xs:enumeration value="ADJ"/>
-      <xs:enumeration value="ADK"/>
-      <xs:enumeration value="ADL"/>
-      <xs:enumeration value="ADM"/>
-      <xs:enumeration value="ADN"/>
-      <xs:enumeration value="ADO"/>
-      <xs:enumeration value="ADP"/>
-      <xs:enumeration value="ADQ"/>
-      <xs:enumeration value="ADR"/>
-      <xs:enumeration value="ADT"/>
-      <xs:enumeration value="ADW"/>
-      <xs:enumeration value="ADY"/>
-      <xs:enumeration value="ADZ"/>
-      <xs:enumeration value="AEA"/>
-      <xs:enumeration value="AEB"/>
-      <xs:enumeration value="AEC"/>
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AEF"/>
-      <xs:enumeration value="AEH"/>
-      <xs:enumeration value="AEI"/>
-      <xs:enumeration value="AEJ"/>
-      <xs:enumeration value="AEK"/>
-      <xs:enumeration value="AEL"/>
-      <xs:enumeration value="AEM"/>
-      <xs:enumeration value="AEN"/>
-      <xs:enumeration value="AEO"/>
-      <xs:enumeration value="AEP"/>
-      <xs:enumeration value="AES"/>
-      <xs:enumeration value="AET"/>
-      <xs:enumeration value="AEU"/>
-      <xs:enumeration value="AEV"/>
-      <xs:enumeration value="AEW"/>
-      <xs:enumeration value="AEX"/>
-      <xs:enumeration value="AEY"/>
-      <xs:enumeration value="AEZ"/>
-      <xs:enumeration value="AJ"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CAB"/>
-      <xs:enumeration value="CAD"/>
-      <xs:enumeration value="CAE"/>
-      <xs:enumeration value="CAF"/>
-      <xs:enumeration value="CAI"/>
-      <xs:enumeration value="CAJ"/>
-      <xs:enumeration value="CAK"/>
-      <xs:enumeration value="CAL"/>
-      <xs:enumeration value="CAM"/>
-      <xs:enumeration value="CAN"/>
-      <xs:enumeration value="CAO"/>
-      <xs:enumeration value="CAP"/>
-      <xs:enumeration value="CAQ"/>
-      <xs:enumeration value="CAR"/>
-      <xs:enumeration value="CAS"/>
-      <xs:enumeration value="CAT"/>
-      <xs:enumeration value="CAU"/>
-      <xs:enumeration value="CAV"/>
-      <xs:enumeration value="CAW"/>
-      <xs:enumeration value="CAX"/>
-      <xs:enumeration value="CAY"/>
-      <xs:enumeration value="CAZ"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CS"/>
-      <xs:enumeration value="CT"/>
-      <xs:enumeration value="DAB"/>
-      <xs:enumeration value="DAC"/>
-      <xs:enumeration value="DAD"/>
-      <xs:enumeration value="DAF"/>
-      <xs:enumeration value="DAG"/>
-      <xs:enumeration value="DAH"/>
-      <xs:enumeration value="DAI"/>
-      <xs:enumeration value="DAJ"/>
-      <xs:enumeration value="DAK"/>
-      <xs:enumeration value="DAL"/>
-      <xs:enumeration value="DAM"/>
-      <xs:enumeration value="DAN"/>
-      <xs:enumeration value="DAO"/>
-      <xs:enumeration value="DAP"/>
-      <xs:enumeration value="DAQ"/>
-      <xs:enumeration value="DL"/>
-      <xs:enumeration value="EG"/>
-      <xs:enumeration value="EP"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="FAA"/>
-      <xs:enumeration value="FAB"/>
-      <xs:enumeration value="FAC"/>
-      <xs:enumeration value="FC"/>
-      <xs:enumeration value="FH"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="GAA"/>
-      <xs:enumeration value="HAA"/>
-      <xs:enumeration value="HD"/>
-      <xs:enumeration value="HH"/>
-      <xs:enumeration value="IAA"/>
-      <xs:enumeration value="IAB"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IF"/>
-      <xs:enumeration value="IR"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="KO"/>
-      <xs:enumeration value="L1"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LAA"/>
-      <xs:enumeration value="LAB"/>
-      <xs:enumeration value="LF"/>
-      <xs:enumeration value="MAE"/>
-      <xs:enumeration value="MI"/>
-      <xs:enumeration value="ML"/>
-      <xs:enumeration value="NAA"/>
-      <xs:enumeration value="OA"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PAA"/>
-      <xs:enumeration value="PC"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="RAB"/>
-      <xs:enumeration value="RAC"/>
-      <xs:enumeration value="RAD"/>
-      <xs:enumeration value="RAF"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="RF"/>
-      <xs:enumeration value="RH"/>
-      <xs:enumeration value="RV"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SAA"/>
-      <xs:enumeration value="SAD"/>
-      <xs:enumeration value="SAE"/>
-      <xs:enumeration value="SAI"/>
-      <xs:enumeration value="SG"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SU"/>
-      <xs:enumeration value="TAB"/>
-      <xs:enumeration value="TAC"/>
-      <xs:enumeration value="TT"/>
-      <xs:enumeration value="TV"/>
-      <xs:enumeration value="V1"/>
-      <xs:enumeration value="V2"/>
-      <xs:enumeration value="WH"/>
-      <xs:enumeration value="XAA"/>
-      <xs:enumeration value="YY"/>
-      <xs:enumeration value="ZZZ"/>
-      <xs:enumeration value="41"/>
-      <xs:enumeration value="42"/>
-      <xs:enumeration value="60"/>
-      <xs:enumeration value="62"/>
-      <xs:enumeration value="63"/>
-      <xs:enumeration value="64"/>
-      <xs:enumeration value="65"/>
-      <xs:enumeration value="66"/>
-      <xs:enumeration value="67"/>
-      <xs:enumeration value="68"/>
-      <xs:enumeration value="70"/>
-      <xs:enumeration value="71"/>
-      <xs:enumeration value="88"/>
-      <xs:enumeration value="95"/>
-      <xs:enumeration value="100"/>
-      <xs:enumeration value="102"/>
-      <xs:enumeration value="103"/>
-      <xs:enumeration value="104"/>
-      <xs:enumeration value="105"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="AllowanceChargeReasonCodeType">
@@ -213,257 +13,5 @@
   </xs:complexType>
   <xs:simpleType name="CountryIDContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="1A"/>
-      <xs:enumeration value="AD"/>
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="AF"/>
-      <xs:enumeration value="AG"/>
-      <xs:enumeration value="AI"/>
-      <xs:enumeration value="AL"/>
-      <xs:enumeration value="AM"/>
-      <xs:enumeration value="AO"/>
-      <xs:enumeration value="AQ"/>
-      <xs:enumeration value="AR"/>
-      <xs:enumeration value="AS"/>
-      <xs:enumeration value="AT"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="AW"/>
-      <xs:enumeration value="AX"/>
-      <xs:enumeration value="AZ"/>
-      <xs:enumeration value="BA"/>
-      <xs:enumeration value="BB"/>
-      <xs:enumeration value="BD"/>
-      <xs:enumeration value="BE"/>
-      <xs:enumeration value="BF"/>
-      <xs:enumeration value="BG"/>
-      <xs:enumeration value="BH"/>
-      <xs:enumeration value="BI"/>
-      <xs:enumeration value="BJ"/>
-      <xs:enumeration value="BL"/>
-      <xs:enumeration value="BM"/>
-      <xs:enumeration value="BN"/>
-      <xs:enumeration value="BO"/>
-      <xs:enumeration value="BQ"/>
-      <xs:enumeration value="BR"/>
-      <xs:enumeration value="BS"/>
-      <xs:enumeration value="BT"/>
-      <xs:enumeration value="BV"/>
-      <xs:enumeration value="BW"/>
-      <xs:enumeration value="BY"/>
-      <xs:enumeration value="BZ"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CC"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CF"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CH"/>
-      <xs:enumeration value="CI"/>
-      <xs:enumeration value="CK"/>
-      <xs:enumeration value="CL"/>
-      <xs:enumeration value="CM"/>
-      <xs:enumeration value="CN"/>
-      <xs:enumeration value="CO"/>
-      <xs:enumeration value="CR"/>
-      <xs:enumeration value="CU"/>
-      <xs:enumeration value="CV"/>
-      <xs:enumeration value="CW"/>
-      <xs:enumeration value="CX"/>
-      <xs:enumeration value="CY"/>
-      <xs:enumeration value="CZ"/>
-      <xs:enumeration value="DE"/>
-      <xs:enumeration value="DJ"/>
-      <xs:enumeration value="DK"/>
-      <xs:enumeration value="DM"/>
-      <xs:enumeration value="DO"/>
-      <xs:enumeration value="DZ"/>
-      <xs:enumeration value="EC"/>
-      <xs:enumeration value="EE"/>
-      <xs:enumeration value="EG"/>
-      <xs:enumeration value="EH"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="ES"/>
-      <xs:enumeration value="ET"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="FJ"/>
-      <xs:enumeration value="FK"/>
-      <xs:enumeration value="FM"/>
-      <xs:enumeration value="FO"/>
-      <xs:enumeration value="FR"/>
-      <xs:enumeration value="GA"/>
-      <xs:enumeration value="GB"/>
-      <xs:enumeration value="GD"/>
-      <xs:enumeration value="GE"/>
-      <xs:enumeration value="GF"/>
-      <xs:enumeration value="GG"/>
-      <xs:enumeration value="GH"/>
-      <xs:enumeration value="GI"/>
-      <xs:enumeration value="GL"/>
-      <xs:enumeration value="GM"/>
-      <xs:enumeration value="GN"/>
-      <xs:enumeration value="GP"/>
-      <xs:enumeration value="GQ"/>
-      <xs:enumeration value="GR"/>
-      <xs:enumeration value="GS"/>
-      <xs:enumeration value="GT"/>
-      <xs:enumeration value="GU"/>
-      <xs:enumeration value="GW"/>
-      <xs:enumeration value="GY"/>
-      <xs:enumeration value="HK"/>
-      <xs:enumeration value="HM"/>
-      <xs:enumeration value="HN"/>
-      <xs:enumeration value="HR"/>
-      <xs:enumeration value="HT"/>
-      <xs:enumeration value="HU"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IE"/>
-      <xs:enumeration value="IL"/>
-      <xs:enumeration value="IM"/>
-      <xs:enumeration value="IN"/>
-      <xs:enumeration value="IO"/>
-      <xs:enumeration value="IQ"/>
-      <xs:enumeration value="IR"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="IT"/>
-      <xs:enumeration value="JE"/>
-      <xs:enumeration value="JM"/>
-      <xs:enumeration value="JO"/>
-      <xs:enumeration value="JP"/>
-      <xs:enumeration value="KE"/>
-      <xs:enumeration value="KG"/>
-      <xs:enumeration value="KH"/>
-      <xs:enumeration value="KI"/>
-      <xs:enumeration value="KM"/>
-      <xs:enumeration value="KN"/>
-      <xs:enumeration value="KP"/>
-      <xs:enumeration value="KR"/>
-      <xs:enumeration value="KW"/>
-      <xs:enumeration value="KY"/>
-      <xs:enumeration value="KZ"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LB"/>
-      <xs:enumeration value="LC"/>
-      <xs:enumeration value="LI"/>
-      <xs:enumeration value="LK"/>
-      <xs:enumeration value="LR"/>
-      <xs:enumeration value="LS"/>
-      <xs:enumeration value="LT"/>
-      <xs:enumeration value="LU"/>
-      <xs:enumeration value="LV"/>
-      <xs:enumeration value="LY"/>
-      <xs:enumeration value="MA"/>
-      <xs:enumeration value="MC"/>
-      <xs:enumeration value="MD"/>
-      <xs:enumeration value="ME"/>
-      <xs:enumeration value="MF"/>
-      <xs:enumeration value="MG"/>
-      <xs:enumeration value="MH"/>
-      <xs:enumeration value="MK"/>
-      <xs:enumeration value="ML"/>
-      <xs:enumeration value="MM"/>
-      <xs:enumeration value="MN"/>
-      <xs:enumeration value="MO"/>
-      <xs:enumeration value="MP"/>
-      <xs:enumeration value="MQ"/>
-      <xs:enumeration value="MR"/>
-      <xs:enumeration value="MS"/>
-      <xs:enumeration value="MT"/>
-      <xs:enumeration value="MU"/>
-      <xs:enumeration value="MV"/>
-      <xs:enumeration value="MW"/>
-      <xs:enumeration value="MX"/>
-      <xs:enumeration value="MY"/>
-      <xs:enumeration value="MZ"/>
-      <xs:enumeration value="NA"/>
-      <xs:enumeration value="NC"/>
-      <xs:enumeration value="NE"/>
-      <xs:enumeration value="NF"/>
-      <xs:enumeration value="NG"/>
-      <xs:enumeration value="NI"/>
-      <xs:enumeration value="NL"/>
-      <xs:enumeration value="NO"/>
-      <xs:enumeration value="NP"/>
-      <xs:enumeration value="NR"/>
-      <xs:enumeration value="NU"/>
-      <xs:enumeration value="NZ"/>
-      <xs:enumeration value="OM"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PE"/>
-      <xs:enumeration value="PF"/>
-      <xs:enumeration value="PG"/>
-      <xs:enumeration value="PH"/>
-      <xs:enumeration value="PK"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="PM"/>
-      <xs:enumeration value="PN"/>
-      <xs:enumeration value="PR"/>
-      <xs:enumeration value="PS"/>
-      <xs:enumeration value="PT"/>
-      <xs:enumeration value="PW"/>
-      <xs:enumeration value="PY"/>
-      <xs:enumeration value="QA"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="RO"/>
-      <xs:enumeration value="RS"/>
-      <xs:enumeration value="RU"/>
-      <xs:enumeration value="RW"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SB"/>
-      <xs:enumeration value="SC"/>
-      <xs:enumeration value="SD"/>
-      <xs:enumeration value="SE"/>
-      <xs:enumeration value="SG"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SI"/>
-      <xs:enumeration value="SJ"/>
-      <xs:enumeration value="SK"/>
-      <xs:enumeration value="SL"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SN"/>
-      <xs:enumeration value="SO"/>
-      <xs:enumeration value="SR"/>
-      <xs:enumeration value="SS"/>
-      <xs:enumeration value="ST"/>
-      <xs:enumeration value="SV"/>
-      <xs:enumeration value="SX"/>
-      <xs:enumeration value="SY"/>
-      <xs:enumeration value="SZ"/>
-      <xs:enumeration value="TC"/>
-      <xs:enumeration value="TD"/>
-      <xs:enumeration value="TF"/>
-      <xs:enumeration value="TG"/>
-      <xs:enumeration value="TH"/>
-      <xs:enumeration value="TJ"/>
-      <xs:enumeration value="TK"/>
-      <xs:enumeration value="TL"/>
-      <xs:enumeration value="TM"/>
-      <xs:enumeration value="TN"/>
-      <xs:enumeration value="TO"/>
-      <xs:enumeration value="TR"/>
-      <xs:enumeration value="TT"/>
-      <xs:enumeration value="TV"/>
-      <xs:enumeration value="TW"/>
-      <xs:enumeration value="TZ"/>
-      <xs:enumeration value="UA"/>
-      <xs:enumeration value="UG"/>
-      <xs:enumeration value="UM"/>
-      <xs:enumeration value="US"/>
-      <xs:enumeration value="UY"/>
-      <xs:enumeration value="UZ"/>
-      <xs:enumeration value="VA"/>
-      <xs:enumeration value="VC"/>
-      <xs:enumeration value="VE"/>
-      <xs:enumeration value="VG"/>
-      <xs:enumeration value="VI"/>
-      <xs:enumeration value="VN"/>
-      <xs:enumeration value="VU"/>
-      <xs:enumeration value="WF"/>
-      <xs:enumeration value="WS"/>
-      <xs:enumeration value="XI"/>
-      <xs:enumeration value="YE"/>
-      <xs:enumeration value="YT"/>
-      <xs:enumeration value="ZA"/>
-      <xs:enumeration value="ZM"/>
-      <xs:enumeration value="ZW"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="CountryIDType">
@@ -473,185 +21,5 @@
   </xs:complexType>
   <xs:simpleType name="CurrencyCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AFN"/>
-      <xs:enumeration value="ALL"/>
-      <xs:enumeration value="AMD"/>
-      <xs:enumeration value="ANG"/>
-      <xs:enumeration value="AOA"/>
-      <xs:enumeration value="ARS"/>
-      <xs:enumeration value="AUD"/>
-      <xs:enumeration value="AWG"/>
-      <xs:enumeration value="AZN"/>
-      <xs:enumeration value="BAM"/>
-      <xs:enumeration value="BBD"/>
-      <xs:enumeration value="BDT"/>
-      <xs:enumeration value="BGN"/>
-      <xs:enumeration value="BHD"/>
-      <xs:enumeration value="BIF"/>
-      <xs:enumeration value="BMD"/>
-      <xs:enumeration value="BND"/>
-      <xs:enumeration value="BOB"/>
-      <xs:enumeration value="BOV"/>
-      <xs:enumeration value="BRL"/>
-      <xs:enumeration value="BSD"/>
-      <xs:enumeration value="BTN"/>
-      <xs:enumeration value="BWP"/>
-      <xs:enumeration value="BYN"/>
-      <xs:enumeration value="BZD"/>
-      <xs:enumeration value="CAD"/>
-      <xs:enumeration value="CDF"/>
-      <xs:enumeration value="CHE"/>
-      <xs:enumeration value="CHF"/>
-      <xs:enumeration value="CHW"/>
-      <xs:enumeration value="CLF"/>
-      <xs:enumeration value="CLP"/>
-      <xs:enumeration value="CNY"/>
-      <xs:enumeration value="COP"/>
-      <xs:enumeration value="COU"/>
-      <xs:enumeration value="CRC"/>
-      <xs:enumeration value="CUC"/>
-      <xs:enumeration value="CUP"/>
-      <xs:enumeration value="CVE"/>
-      <xs:enumeration value="CZK"/>
-      <xs:enumeration value="DJF"/>
-      <xs:enumeration value="DKK"/>
-      <xs:enumeration value="DOP"/>
-      <xs:enumeration value="DZD"/>
-      <xs:enumeration value="EGP"/>
-      <xs:enumeration value="ERN"/>
-      <xs:enumeration value="ETB"/>
-      <xs:enumeration value="EUR"/>
-      <xs:enumeration value="FJD"/>
-      <xs:enumeration value="FKP"/>
-      <xs:enumeration value="GBP"/>
-      <xs:enumeration value="GEL"/>
-      <xs:enumeration value="GHS"/>
-      <xs:enumeration value="GIP"/>
-      <xs:enumeration value="GMD"/>
-      <xs:enumeration value="GNF"/>
-      <xs:enumeration value="GTQ"/>
-      <xs:enumeration value="GYD"/>
-      <xs:enumeration value="HKD"/>
-      <xs:enumeration value="HNL"/>
-      <xs:enumeration value="HRK"/>
-      <xs:enumeration value="HTG"/>
-      <xs:enumeration value="HUF"/>
-      <xs:enumeration value="IDR"/>
-      <xs:enumeration value="ILS"/>
-      <xs:enumeration value="INR"/>
-      <xs:enumeration value="IQD"/>
-      <xs:enumeration value="IRR"/>
-      <xs:enumeration value="ISK"/>
-      <xs:enumeration value="JMD"/>
-      <xs:enumeration value="JOD"/>
-      <xs:enumeration value="JPY"/>
-      <xs:enumeration value="KES"/>
-      <xs:enumeration value="KGS"/>
-      <xs:enumeration value="KHR"/>
-      <xs:enumeration value="KMF"/>
-      <xs:enumeration value="KPW"/>
-      <xs:enumeration value="KRW"/>
-      <xs:enumeration value="KWD"/>
-      <xs:enumeration value="KYD"/>
-      <xs:enumeration value="KZT"/>
-      <xs:enumeration value="LAK"/>
-      <xs:enumeration value="LBP"/>
-      <xs:enumeration value="LKR"/>
-      <xs:enumeration value="LRD"/>
-      <xs:enumeration value="LSL"/>
-      <xs:enumeration value="LYD"/>
-      <xs:enumeration value="MAD"/>
-      <xs:enumeration value="MDL"/>
-      <xs:enumeration value="MGA"/>
-      <xs:enumeration value="MKD"/>
-      <xs:enumeration value="MMK"/>
-      <xs:enumeration value="MNT"/>
-      <xs:enumeration value="MOP"/>
-      <xs:enumeration value="MRU"/>
-      <xs:enumeration value="MUR"/>
-      <xs:enumeration value="MVR"/>
-      <xs:enumeration value="MWK"/>
-      <xs:enumeration value="MXN"/>
-      <xs:enumeration value="MXV"/>
-      <xs:enumeration value="MYR"/>
-      <xs:enumeration value="MZN"/>
-      <xs:enumeration value="NAD"/>
-      <xs:enumeration value="NGN"/>
-      <xs:enumeration value="NIO"/>
-      <xs:enumeration value="NOK"/>
-      <xs:enumeration value="NPR"/>
-      <xs:enumeration value="NZD"/>
-      <xs:enumeration value="OMR"/>
-      <xs:enumeration value="PAB"/>
-      <xs:enumeration value="PEN"/>
-      <xs:enumeration value="PGK"/>
-      <xs:enumeration value="PHP"/>
-      <xs:enumeration value="PKR"/>
-      <xs:enumeration value="PLN"/>
-      <xs:enumeration value="PYG"/>
-      <xs:enumeration value="QAR"/>
-      <xs:enumeration value="RON"/>
-      <xs:enumeration value="RSD"/>
-      <xs:enumeration value="RUB"/>
-      <xs:enumeration value="RWF"/>
-      <xs:enumeration value="SAR"/>
-      <xs:enumeration value="SBD"/>
-      <xs:enumeration value="SCR"/>
-      <xs:enumeration value="SDG"/>
-      <xs:enumeration value="SEK"/>
-      <xs:enumeration value="SGD"/>
-      <xs:enumeration value="SHP"/>
-      <xs:enumeration value="SLL"/>
-      <xs:enumeration value="SOS"/>
-      <xs:enumeration value="SRD"/>
-      <xs:enumeration value="SSP"/>
-      <xs:enumeration value="STN"/>
-      <xs:enumeration value="SVC"/>
-      <xs:enumeration value="SYP"/>
-      <xs:enumeration value="SZL"/>
-      <xs:enumeration value="THB"/>
-      <xs:enumeration value="TJS"/>
-      <xs:enumeration value="TMT"/>
-      <xs:enumeration value="TND"/>
-      <xs:enumeration value="TOP"/>
-      <xs:enumeration value="TRY"/>
-      <xs:enumeration value="TTD"/>
-      <xs:enumeration value="TWD"/>
-      <xs:enumeration value="TZS"/>
-      <xs:enumeration value="UAH"/>
-      <xs:enumeration value="UGX"/>
-      <xs:enumeration value="USD"/>
-      <xs:enumeration value="USN"/>
-      <xs:enumeration value="UYI"/>
-      <xs:enumeration value="UYU"/>
-      <xs:enumeration value="UYW"/>
-      <xs:enumeration value="UZS"/>
-      <xs:enumeration value="VES"/>
-      <xs:enumeration value="VND"/>
-      <xs:enumeration value="VUV"/>
-      <xs:enumeration value="WST"/>
-      <xs:enumeration value="XAF"/>
-      <xs:enumeration value="XAG"/>
-      <xs:enumeration value="XAU"/>
-      <xs:enumeration value="XBA"/>
-      <xs:enumeration value="XBB"/>
-      <xs:enumeration value="XBC"/>
-      <xs:enumeration value="XBD"/>
-      <xs:enumeration value="XCD"/>
-      <xs:enumeration value="XDR"/>
-      <xs:enumeration value="XOF"/>
-      <xs:enumeration value="XPD"/>
-      <xs:enumeration value="XPF"/>
-      <xs:enumeration value="XPT"/>
-      <xs:enumeration value="XSU"/>
-      <xs:enumeration value="XTS"/>
-      <xs:enumeration value="XUA"/>
-      <xs:enumeration value="XXX"/>
-      <xs:enumeration value="YER"/>
-      <xs:enumeration value="ZAR"/>
-      <xs:enumeration value="ZMW"/>
-      <xs:enumeration value="ZWL"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="CurrencyCodeType">
@@ -661,51 +29,5 @@
   </xs:complexType>
   <xs:simpleType name="DocumentCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="80"/>
-      <xs:enumeration value="81"/>
-      <xs:enumeration value="82"/>
-      <xs:enumeration value="83"/>
-      <xs:enumeration value="84"/>
-      <xs:enumeration value="130"/>
-      <xs:enumeration value="202"/>
-      <xs:enumeration value="203"/>
-      <xs:enumeration value="204"/>
-      <xs:enumeration value="211"/>
-      <xs:enumeration value="261"/>
-      <xs:enumeration value="262"/>
-      <xs:enumeration value="295"/>
-      <xs:enumeration value="296"/>
-      <xs:enumeration value="308"/>
-      <xs:enumeration value="325"/>
-      <xs:enumeration value="326"/>
-      <xs:enumeration value="380"/>
-      <xs:enumeration value="381"/>
-      <xs:enumeration value="383"/>
-      <xs:enumeration value="384"/>
-      <xs:enumeration value="385"/>
-      <xs:enumeration value="386"/>
-      <xs:enumeration value="387"/>
-      <xs:enumeration value="388"/>
-      <xs:enumeration value="389"/>
-      <xs:enumeration value="390"/>
-      <xs:enumeration value="393"/>
-      <xs:enumeration value="394"/>
-      <xs:enumeration value="395"/>
-      <xs:enumeration value="396"/>
-      <xs:enumeration value="420"/>
-      <xs:enumeration value="456"/>
-      <xs:enumeration value="457"/>
-      <xs:enumeration value="458"/>
-      <xs:enumeration value="527"/>
-      <xs:enumeration value="575"/>
-      <xs:enumeration value="623"/>
-      <xs:enumeration value="633"/>
-      <xs:enumeration value="751"/>
-      <xs:enumeration value="780"/>
-      <xs:enumeration value="875"/>
-      <xs:enumeration value="876"/>
-      <xs:enumeration value="877"/>
-      <xs:enumeration value="935"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="DocumentCodeType">
@@ -731,17 +53,5 @@
   </xs:complexType>
   <xs:simpleType name="PaymentMeansCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="10"/>
-      <xs:enumeration value="20"/>
-      <xs:enumeration value="30"/>
-      <xs:enumeration value="42"/>
-      <xs:enumeration value="48"/>
-      <xs:enumeration value="49"/>
-      <xs:enumeration value="57"/>
-      <xs:enumeration value="58"/>
-      <xs:enumeration value="59"/>
-      <xs:enumeration value="97"/>
-      <xs:enumeration value="ZZZ"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="PaymentMeansCodeType">
@@ -751,15 +61,5 @@
   </xs:complexType>
   <xs:simpleType name="TaxCategoryCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="E"/>
-      <xs:enumeration value="G"/>
-      <xs:enumeration value="K"/>
-      <xs:enumeration value="L"/>
-      <xs:enumeration value="M"/>
-      <xs:enumeration value="O"/>
-      <xs:enumeration value="S"/>
-      <xs:enumeration value="Z"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TaxCategoryCodeType">
@@ -769,7 +69,5 @@
   </xs:complexType>
   <xs:simpleType name="TaxTypeCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="VAT"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TaxTypeCodeType">
@@ -779,9 +77,5 @@
   </xs:complexType>
   <xs:simpleType name="TimeReferenceCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="5"/>
-      <xs:enumeration value="29"/>
-      <xs:enumeration value="72"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TimeReferenceCodeType">
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd	(revision 8504)
@@ -62,5 +62,5 @@
       <xs:element name="InvoiceCurrencyCode" type="qdt:CurrencyCodeType"/>
       <xs:element name="PayeeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
-      <xs:element name="SpecifiedTradeSettlementPaymentMeans" type="ram:TradeSettlementPaymentMeansType" minOccurs="0"/>
+      <xs:element name="SpecifiedTradeSettlementPaymentMeans" type="ram:TradeSettlementPaymentMeansType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="ApplicableTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
       <xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
@@ -68,5 +68,5 @@
       <xs:element name="SpecifiedTradePaymentTerms" type="ram:TradePaymentTermsType" minOccurs="0"/>
       <xs:element name="SpecifiedTradeSettlementHeaderMonetarySummation" type="ram:TradeSettlementHeaderMonetarySummationType"/>
-      <xs:element name="InvoiceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
+      <xs:element name="InvoiceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0"/>
     </xs:sequence>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC-WL_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd	(revision 8504)
@@ -3,6 +3,5 @@
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
-    elementFormDefault="qualified"
-    version="100.D16B">
+    elementFormDefault="qualified">
   <xs:complexType name="AmountType">
     <xs:simpleContent>
@@ -33,5 +32,5 @@
     <xs:simpleContent>
       <xs:extension base="xs:token">
-        <xs:attribute name="schemeID" type="xs:token" use="optional"/>
+        <xs:attribute name="schemeID" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd	(revision 8504)
@@ -2,208 +2,8 @@
 <xs:schema xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
-    xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
     targetNamespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
-    elementFormDefault="qualified"
-    version="100.D16B">
-  <xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
+    elementFormDefault="qualified">
   <xs:simpleType name="AllowanceChargeReasonCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AA"/>
-      <xs:enumeration value="AAA"/>
-      <xs:enumeration value="AAC"/>
-      <xs:enumeration value="AAD"/>
-      <xs:enumeration value="AAE"/>
-      <xs:enumeration value="AAF"/>
-      <xs:enumeration value="AAH"/>
-      <xs:enumeration value="AAI"/>
-      <xs:enumeration value="AAS"/>
-      <xs:enumeration value="AAT"/>
-      <xs:enumeration value="AAV"/>
-      <xs:enumeration value="AAY"/>
-      <xs:enumeration value="AAZ"/>
-      <xs:enumeration value="ABA"/>
-      <xs:enumeration value="ABB"/>
-      <xs:enumeration value="ABC"/>
-      <xs:enumeration value="ABD"/>
-      <xs:enumeration value="ABF"/>
-      <xs:enumeration value="ABK"/>
-      <xs:enumeration value="ABL"/>
-      <xs:enumeration value="ABN"/>
-      <xs:enumeration value="ABR"/>
-      <xs:enumeration value="ABS"/>
-      <xs:enumeration value="ABT"/>
-      <xs:enumeration value="ABU"/>
-      <xs:enumeration value="ACF"/>
-      <xs:enumeration value="ACG"/>
-      <xs:enumeration value="ACH"/>
-      <xs:enumeration value="ACI"/>
-      <xs:enumeration value="ACJ"/>
-      <xs:enumeration value="ACK"/>
-      <xs:enumeration value="ACL"/>
-      <xs:enumeration value="ACM"/>
-      <xs:enumeration value="ACS"/>
-      <xs:enumeration value="ADC"/>
-      <xs:enumeration value="ADE"/>
-      <xs:enumeration value="ADJ"/>
-      <xs:enumeration value="ADK"/>
-      <xs:enumeration value="ADL"/>
-      <xs:enumeration value="ADM"/>
-      <xs:enumeration value="ADN"/>
-      <xs:enumeration value="ADO"/>
-      <xs:enumeration value="ADP"/>
-      <xs:enumeration value="ADQ"/>
-      <xs:enumeration value="ADR"/>
-      <xs:enumeration value="ADT"/>
-      <xs:enumeration value="ADW"/>
-      <xs:enumeration value="ADY"/>
-      <xs:enumeration value="ADZ"/>
-      <xs:enumeration value="AEA"/>
-      <xs:enumeration value="AEB"/>
-      <xs:enumeration value="AEC"/>
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AEF"/>
-      <xs:enumeration value="AEH"/>
-      <xs:enumeration value="AEI"/>
-      <xs:enumeration value="AEJ"/>
-      <xs:enumeration value="AEK"/>
-      <xs:enumeration value="AEL"/>
-      <xs:enumeration value="AEM"/>
-      <xs:enumeration value="AEN"/>
-      <xs:enumeration value="AEO"/>
-      <xs:enumeration value="AEP"/>
-      <xs:enumeration value="AES"/>
-      <xs:enumeration value="AET"/>
-      <xs:enumeration value="AEU"/>
-      <xs:enumeration value="AEV"/>
-      <xs:enumeration value="AEW"/>
-      <xs:enumeration value="AEX"/>
-      <xs:enumeration value="AEY"/>
-      <xs:enumeration value="AEZ"/>
-      <xs:enumeration value="AJ"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CAB"/>
-      <xs:enumeration value="CAD"/>
-      <xs:enumeration value="CAE"/>
-      <xs:enumeration value="CAF"/>
-      <xs:enumeration value="CAI"/>
-      <xs:enumeration value="CAJ"/>
-      <xs:enumeration value="CAK"/>
-      <xs:enumeration value="CAL"/>
-      <xs:enumeration value="CAM"/>
-      <xs:enumeration value="CAN"/>
-      <xs:enumeration value="CAO"/>
-      <xs:enumeration value="CAP"/>
-      <xs:enumeration value="CAQ"/>
-      <xs:enumeration value="CAR"/>
-      <xs:enumeration value="CAS"/>
-      <xs:enumeration value="CAT"/>
-      <xs:enumeration value="CAU"/>
-      <xs:enumeration value="CAV"/>
-      <xs:enumeration value="CAW"/>
-      <xs:enumeration value="CAX"/>
-      <xs:enumeration value="CAY"/>
-      <xs:enumeration value="CAZ"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CS"/>
-      <xs:enumeration value="CT"/>
-      <xs:enumeration value="DAB"/>
-      <xs:enumeration value="DAC"/>
-      <xs:enumeration value="DAD"/>
-      <xs:enumeration value="DAF"/>
-      <xs:enumeration value="DAG"/>
-      <xs:enumeration value="DAH"/>
-      <xs:enumeration value="DAI"/>
-      <xs:enumeration value="DAJ"/>
-      <xs:enumeration value="DAK"/>
-      <xs:enumeration value="DAL"/>
-      <xs:enumeration value="DAM"/>
-      <xs:enumeration value="DAN"/>
-      <xs:enumeration value="DAO"/>
-      <xs:enumeration value="DAP"/>
-      <xs:enumeration value="DAQ"/>
-      <xs:enumeration value="DL"/>
-      <xs:enumeration value="EG"/>
-      <xs:enumeration value="EP"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="FAA"/>
-      <xs:enumeration value="FAB"/>
-      <xs:enumeration value="FAC"/>
-      <xs:enumeration value="FC"/>
-      <xs:enumeration value="FH"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="GAA"/>
-      <xs:enumeration value="HAA"/>
-      <xs:enumeration value="HD"/>
-      <xs:enumeration value="HH"/>
-      <xs:enumeration value="IAA"/>
-      <xs:enumeration value="IAB"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IF"/>
-      <xs:enumeration value="IR"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="KO"/>
-      <xs:enumeration value="L1"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LAA"/>
-      <xs:enumeration value="LAB"/>
-      <xs:enumeration value="LF"/>
-      <xs:enumeration value="MAE"/>
-      <xs:enumeration value="MI"/>
-      <xs:enumeration value="ML"/>
-      <xs:enumeration value="NAA"/>
-      <xs:enumeration value="OA"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PAA"/>
-      <xs:enumeration value="PC"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="RAB"/>
-      <xs:enumeration value="RAC"/>
-      <xs:enumeration value="RAD"/>
-      <xs:enumeration value="RAF"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="RF"/>
-      <xs:enumeration value="RH"/>
-      <xs:enumeration value="RV"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SAA"/>
-      <xs:enumeration value="SAD"/>
-      <xs:enumeration value="SAE"/>
-      <xs:enumeration value="SAI"/>
-      <xs:enumeration value="SG"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SU"/>
-      <xs:enumeration value="TAB"/>
-      <xs:enumeration value="TAC"/>
-      <xs:enumeration value="TT"/>
-      <xs:enumeration value="TV"/>
-      <xs:enumeration value="V1"/>
-      <xs:enumeration value="V2"/>
-      <xs:enumeration value="WH"/>
-      <xs:enumeration value="XAA"/>
-      <xs:enumeration value="YY"/>
-      <xs:enumeration value="ZZZ"/>
-      <xs:enumeration value="41"/>
-      <xs:enumeration value="42"/>
-      <xs:enumeration value="60"/>
-      <xs:enumeration value="62"/>
-      <xs:enumeration value="63"/>
-      <xs:enumeration value="64"/>
-      <xs:enumeration value="65"/>
-      <xs:enumeration value="66"/>
-      <xs:enumeration value="67"/>
-      <xs:enumeration value="68"/>
-      <xs:enumeration value="70"/>
-      <xs:enumeration value="71"/>
-      <xs:enumeration value="88"/>
-      <xs:enumeration value="95"/>
-      <xs:enumeration value="100"/>
-      <xs:enumeration value="102"/>
-      <xs:enumeration value="103"/>
-      <xs:enumeration value="104"/>
-      <xs:enumeration value="105"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="AllowanceChargeReasonCodeType">
@@ -213,257 +13,5 @@
   </xs:complexType>
   <xs:simpleType name="CountryIDContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="1A"/>
-      <xs:enumeration value="AD"/>
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="AF"/>
-      <xs:enumeration value="AG"/>
-      <xs:enumeration value="AI"/>
-      <xs:enumeration value="AL"/>
-      <xs:enumeration value="AM"/>
-      <xs:enumeration value="AO"/>
-      <xs:enumeration value="AQ"/>
-      <xs:enumeration value="AR"/>
-      <xs:enumeration value="AS"/>
-      <xs:enumeration value="AT"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="AW"/>
-      <xs:enumeration value="AX"/>
-      <xs:enumeration value="AZ"/>
-      <xs:enumeration value="BA"/>
-      <xs:enumeration value="BB"/>
-      <xs:enumeration value="BD"/>
-      <xs:enumeration value="BE"/>
-      <xs:enumeration value="BF"/>
-      <xs:enumeration value="BG"/>
-      <xs:enumeration value="BH"/>
-      <xs:enumeration value="BI"/>
-      <xs:enumeration value="BJ"/>
-      <xs:enumeration value="BL"/>
-      <xs:enumeration value="BM"/>
-      <xs:enumeration value="BN"/>
-      <xs:enumeration value="BO"/>
-      <xs:enumeration value="BQ"/>
-      <xs:enumeration value="BR"/>
-      <xs:enumeration value="BS"/>
-      <xs:enumeration value="BT"/>
-      <xs:enumeration value="BV"/>
-      <xs:enumeration value="BW"/>
-      <xs:enumeration value="BY"/>
-      <xs:enumeration value="BZ"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CC"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CF"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CH"/>
-      <xs:enumeration value="CI"/>
-      <xs:enumeration value="CK"/>
-      <xs:enumeration value="CL"/>
-      <xs:enumeration value="CM"/>
-      <xs:enumeration value="CN"/>
-      <xs:enumeration value="CO"/>
-      <xs:enumeration value="CR"/>
-      <xs:enumeration value="CU"/>
-      <xs:enumeration value="CV"/>
-      <xs:enumeration value="CW"/>
-      <xs:enumeration value="CX"/>
-      <xs:enumeration value="CY"/>
-      <xs:enumeration value="CZ"/>
-      <xs:enumeration value="DE"/>
-      <xs:enumeration value="DJ"/>
-      <xs:enumeration value="DK"/>
-      <xs:enumeration value="DM"/>
-      <xs:enumeration value="DO"/>
-      <xs:enumeration value="DZ"/>
-      <xs:enumeration value="EC"/>
-      <xs:enumeration value="EE"/>
-      <xs:enumeration value="EG"/>
-      <xs:enumeration value="EH"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="ES"/>
-      <xs:enumeration value="ET"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="FJ"/>
-      <xs:enumeration value="FK"/>
-      <xs:enumeration value="FM"/>
-      <xs:enumeration value="FO"/>
-      <xs:enumeration value="FR"/>
-      <xs:enumeration value="GA"/>
-      <xs:enumeration value="GB"/>
-      <xs:enumeration value="GD"/>
-      <xs:enumeration value="GE"/>
-      <xs:enumeration value="GF"/>
-      <xs:enumeration value="GG"/>
-      <xs:enumeration value="GH"/>
-      <xs:enumeration value="GI"/>
-      <xs:enumeration value="GL"/>
-      <xs:enumeration value="GM"/>
-      <xs:enumeration value="GN"/>
-      <xs:enumeration value="GP"/>
-      <xs:enumeration value="GQ"/>
-      <xs:enumeration value="GR"/>
-      <xs:enumeration value="GS"/>
-      <xs:enumeration value="GT"/>
-      <xs:enumeration value="GU"/>
-      <xs:enumeration value="GW"/>
-      <xs:enumeration value="GY"/>
-      <xs:enumeration value="HK"/>
-      <xs:enumeration value="HM"/>
-      <xs:enumeration value="HN"/>
-      <xs:enumeration value="HR"/>
-      <xs:enumeration value="HT"/>
-      <xs:enumeration value="HU"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IE"/>
-      <xs:enumeration value="IL"/>
-      <xs:enumeration value="IM"/>
-      <xs:enumeration value="IN"/>
-      <xs:enumeration value="IO"/>
-      <xs:enumeration value="IQ"/>
-      <xs:enumeration value="IR"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="IT"/>
-      <xs:enumeration value="JE"/>
-      <xs:enumeration value="JM"/>
-      <xs:enumeration value="JO"/>
-      <xs:enumeration value="JP"/>
-      <xs:enumeration value="KE"/>
-      <xs:enumeration value="KG"/>
-      <xs:enumeration value="KH"/>
-      <xs:enumeration value="KI"/>
-      <xs:enumeration value="KM"/>
-      <xs:enumeration value="KN"/>
-      <xs:enumeration value="KP"/>
-      <xs:enumeration value="KR"/>
-      <xs:enumeration value="KW"/>
-      <xs:enumeration value="KY"/>
-      <xs:enumeration value="KZ"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LB"/>
-      <xs:enumeration value="LC"/>
-      <xs:enumeration value="LI"/>
-      <xs:enumeration value="LK"/>
-      <xs:enumeration value="LR"/>
-      <xs:enumeration value="LS"/>
-      <xs:enumeration value="LT"/>
-      <xs:enumeration value="LU"/>
-      <xs:enumeration value="LV"/>
-      <xs:enumeration value="LY"/>
-      <xs:enumeration value="MA"/>
-      <xs:enumeration value="MC"/>
-      <xs:enumeration value="MD"/>
-      <xs:enumeration value="ME"/>
-      <xs:enumeration value="MF"/>
-      <xs:enumeration value="MG"/>
-      <xs:enumeration value="MH"/>
-      <xs:enumeration value="MK"/>
-      <xs:enumeration value="ML"/>
-      <xs:enumeration value="MM"/>
-      <xs:enumeration value="MN"/>
-      <xs:enumeration value="MO"/>
-      <xs:enumeration value="MP"/>
-      <xs:enumeration value="MQ"/>
-      <xs:enumeration value="MR"/>
-      <xs:enumeration value="MS"/>
-      <xs:enumeration value="MT"/>
-      <xs:enumeration value="MU"/>
-      <xs:enumeration value="MV"/>
-      <xs:enumeration value="MW"/>
-      <xs:enumeration value="MX"/>
-      <xs:enumeration value="MY"/>
-      <xs:enumeration value="MZ"/>
-      <xs:enumeration value="NA"/>
-      <xs:enumeration value="NC"/>
-      <xs:enumeration value="NE"/>
-      <xs:enumeration value="NF"/>
-      <xs:enumeration value="NG"/>
-      <xs:enumeration value="NI"/>
-      <xs:enumeration value="NL"/>
-      <xs:enumeration value="NO"/>
-      <xs:enumeration value="NP"/>
-      <xs:enumeration value="NR"/>
-      <xs:enumeration value="NU"/>
-      <xs:enumeration value="NZ"/>
-      <xs:enumeration value="OM"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PE"/>
-      <xs:enumeration value="PF"/>
-      <xs:enumeration value="PG"/>
-      <xs:enumeration value="PH"/>
-      <xs:enumeration value="PK"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="PM"/>
-      <xs:enumeration value="PN"/>
-      <xs:enumeration value="PR"/>
-      <xs:enumeration value="PS"/>
-      <xs:enumeration value="PT"/>
-      <xs:enumeration value="PW"/>
-      <xs:enumeration value="PY"/>
-      <xs:enumeration value="QA"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="RO"/>
-      <xs:enumeration value="RS"/>
-      <xs:enumeration value="RU"/>
-      <xs:enumeration value="RW"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SB"/>
-      <xs:enumeration value="SC"/>
-      <xs:enumeration value="SD"/>
-      <xs:enumeration value="SE"/>
-      <xs:enumeration value="SG"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SI"/>
-      <xs:enumeration value="SJ"/>
-      <xs:enumeration value="SK"/>
-      <xs:enumeration value="SL"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SN"/>
-      <xs:enumeration value="SO"/>
-      <xs:enumeration value="SR"/>
-      <xs:enumeration value="SS"/>
-      <xs:enumeration value="ST"/>
-      <xs:enumeration value="SV"/>
-      <xs:enumeration value="SX"/>
-      <xs:enumeration value="SY"/>
-      <xs:enumeration value="SZ"/>
-      <xs:enumeration value="TC"/>
-      <xs:enumeration value="TD"/>
-      <xs:enumeration value="TF"/>
-      <xs:enumeration value="TG"/>
-      <xs:enumeration value="TH"/>
-      <xs:enumeration value="TJ"/>
-      <xs:enumeration value="TK"/>
-      <xs:enumeration value="TL"/>
-      <xs:enumeration value="TM"/>
-      <xs:enumeration value="TN"/>
-      <xs:enumeration value="TO"/>
-      <xs:enumeration value="TR"/>
-      <xs:enumeration value="TT"/>
-      <xs:enumeration value="TV"/>
-      <xs:enumeration value="TW"/>
-      <xs:enumeration value="TZ"/>
-      <xs:enumeration value="UA"/>
-      <xs:enumeration value="UG"/>
-      <xs:enumeration value="UM"/>
-      <xs:enumeration value="US"/>
-      <xs:enumeration value="UY"/>
-      <xs:enumeration value="UZ"/>
-      <xs:enumeration value="VA"/>
-      <xs:enumeration value="VC"/>
-      <xs:enumeration value="VE"/>
-      <xs:enumeration value="VG"/>
-      <xs:enumeration value="VI"/>
-      <xs:enumeration value="VN"/>
-      <xs:enumeration value="VU"/>
-      <xs:enumeration value="WF"/>
-      <xs:enumeration value="WS"/>
-      <xs:enumeration value="XI"/>
-      <xs:enumeration value="YE"/>
-      <xs:enumeration value="YT"/>
-      <xs:enumeration value="ZA"/>
-      <xs:enumeration value="ZM"/>
-      <xs:enumeration value="ZW"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="CountryIDType">
@@ -473,185 +21,5 @@
   </xs:complexType>
   <xs:simpleType name="CurrencyCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AFN"/>
-      <xs:enumeration value="ALL"/>
-      <xs:enumeration value="AMD"/>
-      <xs:enumeration value="ANG"/>
-      <xs:enumeration value="AOA"/>
-      <xs:enumeration value="ARS"/>
-      <xs:enumeration value="AUD"/>
-      <xs:enumeration value="AWG"/>
-      <xs:enumeration value="AZN"/>
-      <xs:enumeration value="BAM"/>
-      <xs:enumeration value="BBD"/>
-      <xs:enumeration value="BDT"/>
-      <xs:enumeration value="BGN"/>
-      <xs:enumeration value="BHD"/>
-      <xs:enumeration value="BIF"/>
-      <xs:enumeration value="BMD"/>
-      <xs:enumeration value="BND"/>
-      <xs:enumeration value="BOB"/>
-      <xs:enumeration value="BOV"/>
-      <xs:enumeration value="BRL"/>
-      <xs:enumeration value="BSD"/>
-      <xs:enumeration value="BTN"/>
-      <xs:enumeration value="BWP"/>
-      <xs:enumeration value="BYN"/>
-      <xs:enumeration value="BZD"/>
-      <xs:enumeration value="CAD"/>
-      <xs:enumeration value="CDF"/>
-      <xs:enumeration value="CHE"/>
-      <xs:enumeration value="CHF"/>
-      <xs:enumeration value="CHW"/>
-      <xs:enumeration value="CLF"/>
-      <xs:enumeration value="CLP"/>
-      <xs:enumeration value="CNY"/>
-      <xs:enumeration value="COP"/>
-      <xs:enumeration value="COU"/>
-      <xs:enumeration value="CRC"/>
-      <xs:enumeration value="CUC"/>
-      <xs:enumeration value="CUP"/>
-      <xs:enumeration value="CVE"/>
-      <xs:enumeration value="CZK"/>
-      <xs:enumeration value="DJF"/>
-      <xs:enumeration value="DKK"/>
-      <xs:enumeration value="DOP"/>
-      <xs:enumeration value="DZD"/>
-      <xs:enumeration value="EGP"/>
-      <xs:enumeration value="ERN"/>
-      <xs:enumeration value="ETB"/>
-      <xs:enumeration value="EUR"/>
-      <xs:enumeration value="FJD"/>
-      <xs:enumeration value="FKP"/>
-      <xs:enumeration value="GBP"/>
-      <xs:enumeration value="GEL"/>
-      <xs:enumeration value="GHS"/>
-      <xs:enumeration value="GIP"/>
-      <xs:enumeration value="GMD"/>
-      <xs:enumeration value="GNF"/>
-      <xs:enumeration value="GTQ"/>
-      <xs:enumeration value="GYD"/>
-      <xs:enumeration value="HKD"/>
-      <xs:enumeration value="HNL"/>
-      <xs:enumeration value="HRK"/>
-      <xs:enumeration value="HTG"/>
-      <xs:enumeration value="HUF"/>
-      <xs:enumeration value="IDR"/>
-      <xs:enumeration value="ILS"/>
-      <xs:enumeration value="INR"/>
-      <xs:enumeration value="IQD"/>
-      <xs:enumeration value="IRR"/>
-      <xs:enumeration value="ISK"/>
-      <xs:enumeration value="JMD"/>
-      <xs:enumeration value="JOD"/>
-      <xs:enumeration value="JPY"/>
-      <xs:enumeration value="KES"/>
-      <xs:enumeration value="KGS"/>
-      <xs:enumeration value="KHR"/>
-      <xs:enumeration value="KMF"/>
-      <xs:enumeration value="KPW"/>
-      <xs:enumeration value="KRW"/>
-      <xs:enumeration value="KWD"/>
-      <xs:enumeration value="KYD"/>
-      <xs:enumeration value="KZT"/>
-      <xs:enumeration value="LAK"/>
-      <xs:enumeration value="LBP"/>
-      <xs:enumeration value="LKR"/>
-      <xs:enumeration value="LRD"/>
-      <xs:enumeration value="LSL"/>
-      <xs:enumeration value="LYD"/>
-      <xs:enumeration value="MAD"/>
-      <xs:enumeration value="MDL"/>
-      <xs:enumeration value="MGA"/>
-      <xs:enumeration value="MKD"/>
-      <xs:enumeration value="MMK"/>
-      <xs:enumeration value="MNT"/>
-      <xs:enumeration value="MOP"/>
-      <xs:enumeration value="MRU"/>
-      <xs:enumeration value="MUR"/>
-      <xs:enumeration value="MVR"/>
-      <xs:enumeration value="MWK"/>
-      <xs:enumeration value="MXN"/>
-      <xs:enumeration value="MXV"/>
-      <xs:enumeration value="MYR"/>
-      <xs:enumeration value="MZN"/>
-      <xs:enumeration value="NAD"/>
-      <xs:enumeration value="NGN"/>
-      <xs:enumeration value="NIO"/>
-      <xs:enumeration value="NOK"/>
-      <xs:enumeration value="NPR"/>
-      <xs:enumeration value="NZD"/>
-      <xs:enumeration value="OMR"/>
-      <xs:enumeration value="PAB"/>
-      <xs:enumeration value="PEN"/>
-      <xs:enumeration value="PGK"/>
-      <xs:enumeration value="PHP"/>
-      <xs:enumeration value="PKR"/>
-      <xs:enumeration value="PLN"/>
-      <xs:enumeration value="PYG"/>
-      <xs:enumeration value="QAR"/>
-      <xs:enumeration value="RON"/>
-      <xs:enumeration value="RSD"/>
-      <xs:enumeration value="RUB"/>
-      <xs:enumeration value="RWF"/>
-      <xs:enumeration value="SAR"/>
-      <xs:enumeration value="SBD"/>
-      <xs:enumeration value="SCR"/>
-      <xs:enumeration value="SDG"/>
-      <xs:enumeration value="SEK"/>
-      <xs:enumeration value="SGD"/>
-      <xs:enumeration value="SHP"/>
-      <xs:enumeration value="SLL"/>
-      <xs:enumeration value="SOS"/>
-      <xs:enumeration value="SRD"/>
-      <xs:enumeration value="SSP"/>
-      <xs:enumeration value="STN"/>
-      <xs:enumeration value="SVC"/>
-      <xs:enumeration value="SYP"/>
-      <xs:enumeration value="SZL"/>
-      <xs:enumeration value="THB"/>
-      <xs:enumeration value="TJS"/>
-      <xs:enumeration value="TMT"/>
-      <xs:enumeration value="TND"/>
-      <xs:enumeration value="TOP"/>
-      <xs:enumeration value="TRY"/>
-      <xs:enumeration value="TTD"/>
-      <xs:enumeration value="TWD"/>
-      <xs:enumeration value="TZS"/>
-      <xs:enumeration value="UAH"/>
-      <xs:enumeration value="UGX"/>
-      <xs:enumeration value="USD"/>
-      <xs:enumeration value="USN"/>
-      <xs:enumeration value="UYI"/>
-      <xs:enumeration value="UYU"/>
-      <xs:enumeration value="UYW"/>
-      <xs:enumeration value="UZS"/>
-      <xs:enumeration value="VES"/>
-      <xs:enumeration value="VND"/>
-      <xs:enumeration value="VUV"/>
-      <xs:enumeration value="WST"/>
-      <xs:enumeration value="XAF"/>
-      <xs:enumeration value="XAG"/>
-      <xs:enumeration value="XAU"/>
-      <xs:enumeration value="XBA"/>
-      <xs:enumeration value="XBB"/>
-      <xs:enumeration value="XBC"/>
-      <xs:enumeration value="XBD"/>
-      <xs:enumeration value="XCD"/>
-      <xs:enumeration value="XDR"/>
-      <xs:enumeration value="XOF"/>
-      <xs:enumeration value="XPD"/>
-      <xs:enumeration value="XPF"/>
-      <xs:enumeration value="XPT"/>
-      <xs:enumeration value="XSU"/>
-      <xs:enumeration value="XTS"/>
-      <xs:enumeration value="XUA"/>
-      <xs:enumeration value="XXX"/>
-      <xs:enumeration value="YER"/>
-      <xs:enumeration value="ZAR"/>
-      <xs:enumeration value="ZMW"/>
-      <xs:enumeration value="ZWL"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="CurrencyCodeType">
@@ -661,51 +29,5 @@
   </xs:complexType>
   <xs:simpleType name="DocumentCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="80"/>
-      <xs:enumeration value="81"/>
-      <xs:enumeration value="82"/>
-      <xs:enumeration value="83"/>
-      <xs:enumeration value="84"/>
-      <xs:enumeration value="130"/>
-      <xs:enumeration value="202"/>
-      <xs:enumeration value="203"/>
-      <xs:enumeration value="204"/>
-      <xs:enumeration value="211"/>
-      <xs:enumeration value="261"/>
-      <xs:enumeration value="262"/>
-      <xs:enumeration value="295"/>
-      <xs:enumeration value="296"/>
-      <xs:enumeration value="308"/>
-      <xs:enumeration value="325"/>
-      <xs:enumeration value="326"/>
-      <xs:enumeration value="380"/>
-      <xs:enumeration value="381"/>
-      <xs:enumeration value="383"/>
-      <xs:enumeration value="384"/>
-      <xs:enumeration value="385"/>
-      <xs:enumeration value="386"/>
-      <xs:enumeration value="387"/>
-      <xs:enumeration value="388"/>
-      <xs:enumeration value="389"/>
-      <xs:enumeration value="390"/>
-      <xs:enumeration value="393"/>
-      <xs:enumeration value="394"/>
-      <xs:enumeration value="395"/>
-      <xs:enumeration value="396"/>
-      <xs:enumeration value="420"/>
-      <xs:enumeration value="456"/>
-      <xs:enumeration value="457"/>
-      <xs:enumeration value="458"/>
-      <xs:enumeration value="527"/>
-      <xs:enumeration value="575"/>
-      <xs:enumeration value="623"/>
-      <xs:enumeration value="633"/>
-      <xs:enumeration value="751"/>
-      <xs:enumeration value="780"/>
-      <xs:enumeration value="875"/>
-      <xs:enumeration value="876"/>
-      <xs:enumeration value="877"/>
-      <xs:enumeration value="935"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="DocumentCodeType">
@@ -731,17 +53,5 @@
   </xs:complexType>
   <xs:simpleType name="PaymentMeansCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="10"/>
-      <xs:enumeration value="20"/>
-      <xs:enumeration value="30"/>
-      <xs:enumeration value="42"/>
-      <xs:enumeration value="48"/>
-      <xs:enumeration value="49"/>
-      <xs:enumeration value="57"/>
-      <xs:enumeration value="58"/>
-      <xs:enumeration value="59"/>
-      <xs:enumeration value="97"/>
-      <xs:enumeration value="ZZZ"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="PaymentMeansCodeType">
@@ -751,15 +61,5 @@
   </xs:complexType>
   <xs:simpleType name="TaxCategoryCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="E"/>
-      <xs:enumeration value="G"/>
-      <xs:enumeration value="K"/>
-      <xs:enumeration value="L"/>
-      <xs:enumeration value="M"/>
-      <xs:enumeration value="O"/>
-      <xs:enumeration value="S"/>
-      <xs:enumeration value="Z"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TaxCategoryCodeType">
@@ -769,7 +69,5 @@
   </xs:complexType>
   <xs:simpleType name="TaxTypeCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="VAT"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TaxTypeCodeType">
@@ -779,9 +77,5 @@
   </xs:complexType>
   <xs:simpleType name="TimeReferenceCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="5"/>
-      <xs:enumeration value="29"/>
-      <xs:enumeration value="72"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TimeReferenceCodeType">
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd	(revision 8504)
@@ -68,5 +68,5 @@
       <xs:element name="InvoiceCurrencyCode" type="qdt:CurrencyCodeType"/>
       <xs:element name="PayeeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
-      <xs:element name="SpecifiedTradeSettlementPaymentMeans" type="ram:TradeSettlementPaymentMeansType" minOccurs="0"/>
+      <xs:element name="SpecifiedTradeSettlementPaymentMeans" type="ram:TradeSettlementPaymentMeansType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="ApplicableTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
       <xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
@@ -74,5 +74,5 @@
       <xs:element name="SpecifiedTradePaymentTerms" type="ram:TradePaymentTermsType" minOccurs="0"/>
       <xs:element name="SpecifiedTradeSettlementHeaderMonetarySummation" type="ram:TradeSettlementHeaderMonetarySummationType"/>
-      <xs:element name="InvoiceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
+      <xs:element name="InvoiceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0"/>
     </xs:sequence>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_BASIC_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd	(revision 8504)
@@ -3,6 +3,5 @@
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
-    elementFormDefault="qualified"
-    version="100.D16B">
+    elementFormDefault="qualified">
   <xs:complexType name="AmountType">
     <xs:simpleContent>
@@ -33,5 +32,5 @@
     <xs:simpleContent>
       <xs:extension base="xs:token">
-        <xs:attribute name="schemeID" type="xs:token" use="optional"/>
+        <xs:attribute name="schemeID" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
@@ -50,5 +49,5 @@
     <xs:simpleContent>
       <xs:extension base="xs:decimal">
-        <xs:attribute name="unitCode" type="xs:token" use="optional"/>
+        <xs:attribute name="unitCode" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd	(revision 8504)
@@ -2,208 +2,8 @@
 <xs:schema xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
-    xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
     targetNamespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
-    elementFormDefault="qualified"
-    version="100.D16B">
-  <xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
+    elementFormDefault="qualified">
   <xs:simpleType name="AllowanceChargeReasonCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AA"/>
-      <xs:enumeration value="AAA"/>
-      <xs:enumeration value="AAC"/>
-      <xs:enumeration value="AAD"/>
-      <xs:enumeration value="AAE"/>
-      <xs:enumeration value="AAF"/>
-      <xs:enumeration value="AAH"/>
-      <xs:enumeration value="AAI"/>
-      <xs:enumeration value="AAS"/>
-      <xs:enumeration value="AAT"/>
-      <xs:enumeration value="AAV"/>
-      <xs:enumeration value="AAY"/>
-      <xs:enumeration value="AAZ"/>
-      <xs:enumeration value="ABA"/>
-      <xs:enumeration value="ABB"/>
-      <xs:enumeration value="ABC"/>
-      <xs:enumeration value="ABD"/>
-      <xs:enumeration value="ABF"/>
-      <xs:enumeration value="ABK"/>
-      <xs:enumeration value="ABL"/>
-      <xs:enumeration value="ABN"/>
-      <xs:enumeration value="ABR"/>
-      <xs:enumeration value="ABS"/>
-      <xs:enumeration value="ABT"/>
-      <xs:enumeration value="ABU"/>
-      <xs:enumeration value="ACF"/>
-      <xs:enumeration value="ACG"/>
-      <xs:enumeration value="ACH"/>
-      <xs:enumeration value="ACI"/>
-      <xs:enumeration value="ACJ"/>
-      <xs:enumeration value="ACK"/>
-      <xs:enumeration value="ACL"/>
-      <xs:enumeration value="ACM"/>
-      <xs:enumeration value="ACS"/>
-      <xs:enumeration value="ADC"/>
-      <xs:enumeration value="ADE"/>
-      <xs:enumeration value="ADJ"/>
-      <xs:enumeration value="ADK"/>
-      <xs:enumeration value="ADL"/>
-      <xs:enumeration value="ADM"/>
-      <xs:enumeration value="ADN"/>
-      <xs:enumeration value="ADO"/>
-      <xs:enumeration value="ADP"/>
-      <xs:enumeration value="ADQ"/>
-      <xs:enumeration value="ADR"/>
-      <xs:enumeration value="ADT"/>
-      <xs:enumeration value="ADW"/>
-      <xs:enumeration value="ADY"/>
-      <xs:enumeration value="ADZ"/>
-      <xs:enumeration value="AEA"/>
-      <xs:enumeration value="AEB"/>
-      <xs:enumeration value="AEC"/>
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AEF"/>
-      <xs:enumeration value="AEH"/>
-      <xs:enumeration value="AEI"/>
-      <xs:enumeration value="AEJ"/>
-      <xs:enumeration value="AEK"/>
-      <xs:enumeration value="AEL"/>
-      <xs:enumeration value="AEM"/>
-      <xs:enumeration value="AEN"/>
-      <xs:enumeration value="AEO"/>
-      <xs:enumeration value="AEP"/>
-      <xs:enumeration value="AES"/>
-      <xs:enumeration value="AET"/>
-      <xs:enumeration value="AEU"/>
-      <xs:enumeration value="AEV"/>
-      <xs:enumeration value="AEW"/>
-      <xs:enumeration value="AEX"/>
-      <xs:enumeration value="AEY"/>
-      <xs:enumeration value="AEZ"/>
-      <xs:enumeration value="AJ"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CAB"/>
-      <xs:enumeration value="CAD"/>
-      <xs:enumeration value="CAE"/>
-      <xs:enumeration value="CAF"/>
-      <xs:enumeration value="CAI"/>
-      <xs:enumeration value="CAJ"/>
-      <xs:enumeration value="CAK"/>
-      <xs:enumeration value="CAL"/>
-      <xs:enumeration value="CAM"/>
-      <xs:enumeration value="CAN"/>
-      <xs:enumeration value="CAO"/>
-      <xs:enumeration value="CAP"/>
-      <xs:enumeration value="CAQ"/>
-      <xs:enumeration value="CAR"/>
-      <xs:enumeration value="CAS"/>
-      <xs:enumeration value="CAT"/>
-      <xs:enumeration value="CAU"/>
-      <xs:enumeration value="CAV"/>
-      <xs:enumeration value="CAW"/>
-      <xs:enumeration value="CAX"/>
-      <xs:enumeration value="CAY"/>
-      <xs:enumeration value="CAZ"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CS"/>
-      <xs:enumeration value="CT"/>
-      <xs:enumeration value="DAB"/>
-      <xs:enumeration value="DAC"/>
-      <xs:enumeration value="DAD"/>
-      <xs:enumeration value="DAF"/>
-      <xs:enumeration value="DAG"/>
-      <xs:enumeration value="DAH"/>
-      <xs:enumeration value="DAI"/>
-      <xs:enumeration value="DAJ"/>
-      <xs:enumeration value="DAK"/>
-      <xs:enumeration value="DAL"/>
-      <xs:enumeration value="DAM"/>
-      <xs:enumeration value="DAN"/>
-      <xs:enumeration value="DAO"/>
-      <xs:enumeration value="DAP"/>
-      <xs:enumeration value="DAQ"/>
-      <xs:enumeration value="DL"/>
-      <xs:enumeration value="EG"/>
-      <xs:enumeration value="EP"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="FAA"/>
-      <xs:enumeration value="FAB"/>
-      <xs:enumeration value="FAC"/>
-      <xs:enumeration value="FC"/>
-      <xs:enumeration value="FH"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="GAA"/>
-      <xs:enumeration value="HAA"/>
-      <xs:enumeration value="HD"/>
-      <xs:enumeration value="HH"/>
-      <xs:enumeration value="IAA"/>
-      <xs:enumeration value="IAB"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IF"/>
-      <xs:enumeration value="IR"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="KO"/>
-      <xs:enumeration value="L1"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LAA"/>
-      <xs:enumeration value="LAB"/>
-      <xs:enumeration value="LF"/>
-      <xs:enumeration value="MAE"/>
-      <xs:enumeration value="MI"/>
-      <xs:enumeration value="ML"/>
-      <xs:enumeration value="NAA"/>
-      <xs:enumeration value="OA"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PAA"/>
-      <xs:enumeration value="PC"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="RAB"/>
-      <xs:enumeration value="RAC"/>
-      <xs:enumeration value="RAD"/>
-      <xs:enumeration value="RAF"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="RF"/>
-      <xs:enumeration value="RH"/>
-      <xs:enumeration value="RV"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SAA"/>
-      <xs:enumeration value="SAD"/>
-      <xs:enumeration value="SAE"/>
-      <xs:enumeration value="SAI"/>
-      <xs:enumeration value="SG"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SU"/>
-      <xs:enumeration value="TAB"/>
-      <xs:enumeration value="TAC"/>
-      <xs:enumeration value="TT"/>
-      <xs:enumeration value="TV"/>
-      <xs:enumeration value="V1"/>
-      <xs:enumeration value="V2"/>
-      <xs:enumeration value="WH"/>
-      <xs:enumeration value="XAA"/>
-      <xs:enumeration value="YY"/>
-      <xs:enumeration value="ZZZ"/>
-      <xs:enumeration value="41"/>
-      <xs:enumeration value="42"/>
-      <xs:enumeration value="60"/>
-      <xs:enumeration value="62"/>
-      <xs:enumeration value="63"/>
-      <xs:enumeration value="64"/>
-      <xs:enumeration value="65"/>
-      <xs:enumeration value="66"/>
-      <xs:enumeration value="67"/>
-      <xs:enumeration value="68"/>
-      <xs:enumeration value="70"/>
-      <xs:enumeration value="71"/>
-      <xs:enumeration value="88"/>
-      <xs:enumeration value="95"/>
-      <xs:enumeration value="100"/>
-      <xs:enumeration value="102"/>
-      <xs:enumeration value="103"/>
-      <xs:enumeration value="104"/>
-      <xs:enumeration value="105"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="AllowanceChargeReasonCodeType">
@@ -213,257 +13,5 @@
   </xs:complexType>
   <xs:simpleType name="CountryIDContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="1A"/>
-      <xs:enumeration value="AD"/>
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="AF"/>
-      <xs:enumeration value="AG"/>
-      <xs:enumeration value="AI"/>
-      <xs:enumeration value="AL"/>
-      <xs:enumeration value="AM"/>
-      <xs:enumeration value="AO"/>
-      <xs:enumeration value="AQ"/>
-      <xs:enumeration value="AR"/>
-      <xs:enumeration value="AS"/>
-      <xs:enumeration value="AT"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="AW"/>
-      <xs:enumeration value="AX"/>
-      <xs:enumeration value="AZ"/>
-      <xs:enumeration value="BA"/>
-      <xs:enumeration value="BB"/>
-      <xs:enumeration value="BD"/>
-      <xs:enumeration value="BE"/>
-      <xs:enumeration value="BF"/>
-      <xs:enumeration value="BG"/>
-      <xs:enumeration value="BH"/>
-      <xs:enumeration value="BI"/>
-      <xs:enumeration value="BJ"/>
-      <xs:enumeration value="BL"/>
-      <xs:enumeration value="BM"/>
-      <xs:enumeration value="BN"/>
-      <xs:enumeration value="BO"/>
-      <xs:enumeration value="BQ"/>
-      <xs:enumeration value="BR"/>
-      <xs:enumeration value="BS"/>
-      <xs:enumeration value="BT"/>
-      <xs:enumeration value="BV"/>
-      <xs:enumeration value="BW"/>
-      <xs:enumeration value="BY"/>
-      <xs:enumeration value="BZ"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CC"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CF"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CH"/>
-      <xs:enumeration value="CI"/>
-      <xs:enumeration value="CK"/>
-      <xs:enumeration value="CL"/>
-      <xs:enumeration value="CM"/>
-      <xs:enumeration value="CN"/>
-      <xs:enumeration value="CO"/>
-      <xs:enumeration value="CR"/>
-      <xs:enumeration value="CU"/>
-      <xs:enumeration value="CV"/>
-      <xs:enumeration value="CW"/>
-      <xs:enumeration value="CX"/>
-      <xs:enumeration value="CY"/>
-      <xs:enumeration value="CZ"/>
-      <xs:enumeration value="DE"/>
-      <xs:enumeration value="DJ"/>
-      <xs:enumeration value="DK"/>
-      <xs:enumeration value="DM"/>
-      <xs:enumeration value="DO"/>
-      <xs:enumeration value="DZ"/>
-      <xs:enumeration value="EC"/>
-      <xs:enumeration value="EE"/>
-      <xs:enumeration value="EG"/>
-      <xs:enumeration value="EH"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="ES"/>
-      <xs:enumeration value="ET"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="FJ"/>
-      <xs:enumeration value="FK"/>
-      <xs:enumeration value="FM"/>
-      <xs:enumeration value="FO"/>
-      <xs:enumeration value="FR"/>
-      <xs:enumeration value="GA"/>
-      <xs:enumeration value="GB"/>
-      <xs:enumeration value="GD"/>
-      <xs:enumeration value="GE"/>
-      <xs:enumeration value="GF"/>
-      <xs:enumeration value="GG"/>
-      <xs:enumeration value="GH"/>
-      <xs:enumeration value="GI"/>
-      <xs:enumeration value="GL"/>
-      <xs:enumeration value="GM"/>
-      <xs:enumeration value="GN"/>
-      <xs:enumeration value="GP"/>
-      <xs:enumeration value="GQ"/>
-      <xs:enumeration value="GR"/>
-      <xs:enumeration value="GS"/>
-      <xs:enumeration value="GT"/>
-      <xs:enumeration value="GU"/>
-      <xs:enumeration value="GW"/>
-      <xs:enumeration value="GY"/>
-      <xs:enumeration value="HK"/>
-      <xs:enumeration value="HM"/>
-      <xs:enumeration value="HN"/>
-      <xs:enumeration value="HR"/>
-      <xs:enumeration value="HT"/>
-      <xs:enumeration value="HU"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IE"/>
-      <xs:enumeration value="IL"/>
-      <xs:enumeration value="IM"/>
-      <xs:enumeration value="IN"/>
-      <xs:enumeration value="IO"/>
-      <xs:enumeration value="IQ"/>
-      <xs:enumeration value="IR"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="IT"/>
-      <xs:enumeration value="JE"/>
-      <xs:enumeration value="JM"/>
-      <xs:enumeration value="JO"/>
-      <xs:enumeration value="JP"/>
-      <xs:enumeration value="KE"/>
-      <xs:enumeration value="KG"/>
-      <xs:enumeration value="KH"/>
-      <xs:enumeration value="KI"/>
-      <xs:enumeration value="KM"/>
-      <xs:enumeration value="KN"/>
-      <xs:enumeration value="KP"/>
-      <xs:enumeration value="KR"/>
-      <xs:enumeration value="KW"/>
-      <xs:enumeration value="KY"/>
-      <xs:enumeration value="KZ"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LB"/>
-      <xs:enumeration value="LC"/>
-      <xs:enumeration value="LI"/>
-      <xs:enumeration value="LK"/>
-      <xs:enumeration value="LR"/>
-      <xs:enumeration value="LS"/>
-      <xs:enumeration value="LT"/>
-      <xs:enumeration value="LU"/>
-      <xs:enumeration value="LV"/>
-      <xs:enumeration value="LY"/>
-      <xs:enumeration value="MA"/>
-      <xs:enumeration value="MC"/>
-      <xs:enumeration value="MD"/>
-      <xs:enumeration value="ME"/>
-      <xs:enumeration value="MF"/>
-      <xs:enumeration value="MG"/>
-      <xs:enumeration value="MH"/>
-      <xs:enumeration value="MK"/>
-      <xs:enumeration value="ML"/>
-      <xs:enumeration value="MM"/>
-      <xs:enumeration value="MN"/>
-      <xs:enumeration value="MO"/>
-      <xs:enumeration value="MP"/>
-      <xs:enumeration value="MQ"/>
-      <xs:enumeration value="MR"/>
-      <xs:enumeration value="MS"/>
-      <xs:enumeration value="MT"/>
-      <xs:enumeration value="MU"/>
-      <xs:enumeration value="MV"/>
-      <xs:enumeration value="MW"/>
-      <xs:enumeration value="MX"/>
-      <xs:enumeration value="MY"/>
-      <xs:enumeration value="MZ"/>
-      <xs:enumeration value="NA"/>
-      <xs:enumeration value="NC"/>
-      <xs:enumeration value="NE"/>
-      <xs:enumeration value="NF"/>
-      <xs:enumeration value="NG"/>
-      <xs:enumeration value="NI"/>
-      <xs:enumeration value="NL"/>
-      <xs:enumeration value="NO"/>
-      <xs:enumeration value="NP"/>
-      <xs:enumeration value="NR"/>
-      <xs:enumeration value="NU"/>
-      <xs:enumeration value="NZ"/>
-      <xs:enumeration value="OM"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PE"/>
-      <xs:enumeration value="PF"/>
-      <xs:enumeration value="PG"/>
-      <xs:enumeration value="PH"/>
-      <xs:enumeration value="PK"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="PM"/>
-      <xs:enumeration value="PN"/>
-      <xs:enumeration value="PR"/>
-      <xs:enumeration value="PS"/>
-      <xs:enumeration value="PT"/>
-      <xs:enumeration value="PW"/>
-      <xs:enumeration value="PY"/>
-      <xs:enumeration value="QA"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="RO"/>
-      <xs:enumeration value="RS"/>
-      <xs:enumeration value="RU"/>
-      <xs:enumeration value="RW"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SB"/>
-      <xs:enumeration value="SC"/>
-      <xs:enumeration value="SD"/>
-      <xs:enumeration value="SE"/>
-      <xs:enumeration value="SG"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SI"/>
-      <xs:enumeration value="SJ"/>
-      <xs:enumeration value="SK"/>
-      <xs:enumeration value="SL"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SN"/>
-      <xs:enumeration value="SO"/>
-      <xs:enumeration value="SR"/>
-      <xs:enumeration value="SS"/>
-      <xs:enumeration value="ST"/>
-      <xs:enumeration value="SV"/>
-      <xs:enumeration value="SX"/>
-      <xs:enumeration value="SY"/>
-      <xs:enumeration value="SZ"/>
-      <xs:enumeration value="TC"/>
-      <xs:enumeration value="TD"/>
-      <xs:enumeration value="TF"/>
-      <xs:enumeration value="TG"/>
-      <xs:enumeration value="TH"/>
-      <xs:enumeration value="TJ"/>
-      <xs:enumeration value="TK"/>
-      <xs:enumeration value="TL"/>
-      <xs:enumeration value="TM"/>
-      <xs:enumeration value="TN"/>
-      <xs:enumeration value="TO"/>
-      <xs:enumeration value="TR"/>
-      <xs:enumeration value="TT"/>
-      <xs:enumeration value="TV"/>
-      <xs:enumeration value="TW"/>
-      <xs:enumeration value="TZ"/>
-      <xs:enumeration value="UA"/>
-      <xs:enumeration value="UG"/>
-      <xs:enumeration value="UM"/>
-      <xs:enumeration value="US"/>
-      <xs:enumeration value="UY"/>
-      <xs:enumeration value="UZ"/>
-      <xs:enumeration value="VA"/>
-      <xs:enumeration value="VC"/>
-      <xs:enumeration value="VE"/>
-      <xs:enumeration value="VG"/>
-      <xs:enumeration value="VI"/>
-      <xs:enumeration value="VN"/>
-      <xs:enumeration value="VU"/>
-      <xs:enumeration value="WF"/>
-      <xs:enumeration value="WS"/>
-      <xs:enumeration value="XI"/>
-      <xs:enumeration value="YE"/>
-      <xs:enumeration value="YT"/>
-      <xs:enumeration value="ZA"/>
-      <xs:enumeration value="ZM"/>
-      <xs:enumeration value="ZW"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="CountryIDType">
@@ -473,185 +21,5 @@
   </xs:complexType>
   <xs:simpleType name="CurrencyCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AFN"/>
-      <xs:enumeration value="ALL"/>
-      <xs:enumeration value="AMD"/>
-      <xs:enumeration value="ANG"/>
-      <xs:enumeration value="AOA"/>
-      <xs:enumeration value="ARS"/>
-      <xs:enumeration value="AUD"/>
-      <xs:enumeration value="AWG"/>
-      <xs:enumeration value="AZN"/>
-      <xs:enumeration value="BAM"/>
-      <xs:enumeration value="BBD"/>
-      <xs:enumeration value="BDT"/>
-      <xs:enumeration value="BGN"/>
-      <xs:enumeration value="BHD"/>
-      <xs:enumeration value="BIF"/>
-      <xs:enumeration value="BMD"/>
-      <xs:enumeration value="BND"/>
-      <xs:enumeration value="BOB"/>
-      <xs:enumeration value="BOV"/>
-      <xs:enumeration value="BRL"/>
-      <xs:enumeration value="BSD"/>
-      <xs:enumeration value="BTN"/>
-      <xs:enumeration value="BWP"/>
-      <xs:enumeration value="BYN"/>
-      <xs:enumeration value="BZD"/>
-      <xs:enumeration value="CAD"/>
-      <xs:enumeration value="CDF"/>
-      <xs:enumeration value="CHE"/>
-      <xs:enumeration value="CHF"/>
-      <xs:enumeration value="CHW"/>
-      <xs:enumeration value="CLF"/>
-      <xs:enumeration value="CLP"/>
-      <xs:enumeration value="CNY"/>
-      <xs:enumeration value="COP"/>
-      <xs:enumeration value="COU"/>
-      <xs:enumeration value="CRC"/>
-      <xs:enumeration value="CUC"/>
-      <xs:enumeration value="CUP"/>
-      <xs:enumeration value="CVE"/>
-      <xs:enumeration value="CZK"/>
-      <xs:enumeration value="DJF"/>
-      <xs:enumeration value="DKK"/>
-      <xs:enumeration value="DOP"/>
-      <xs:enumeration value="DZD"/>
-      <xs:enumeration value="EGP"/>
-      <xs:enumeration value="ERN"/>
-      <xs:enumeration value="ETB"/>
-      <xs:enumeration value="EUR"/>
-      <xs:enumeration value="FJD"/>
-      <xs:enumeration value="FKP"/>
-      <xs:enumeration value="GBP"/>
-      <xs:enumeration value="GEL"/>
-      <xs:enumeration value="GHS"/>
-      <xs:enumeration value="GIP"/>
-      <xs:enumeration value="GMD"/>
-      <xs:enumeration value="GNF"/>
-      <xs:enumeration value="GTQ"/>
-      <xs:enumeration value="GYD"/>
-      <xs:enumeration value="HKD"/>
-      <xs:enumeration value="HNL"/>
-      <xs:enumeration value="HRK"/>
-      <xs:enumeration value="HTG"/>
-      <xs:enumeration value="HUF"/>
-      <xs:enumeration value="IDR"/>
-      <xs:enumeration value="ILS"/>
-      <xs:enumeration value="INR"/>
-      <xs:enumeration value="IQD"/>
-      <xs:enumeration value="IRR"/>
-      <xs:enumeration value="ISK"/>
-      <xs:enumeration value="JMD"/>
-      <xs:enumeration value="JOD"/>
-      <xs:enumeration value="JPY"/>
-      <xs:enumeration value="KES"/>
-      <xs:enumeration value="KGS"/>
-      <xs:enumeration value="KHR"/>
-      <xs:enumeration value="KMF"/>
-      <xs:enumeration value="KPW"/>
-      <xs:enumeration value="KRW"/>
-      <xs:enumeration value="KWD"/>
-      <xs:enumeration value="KYD"/>
-      <xs:enumeration value="KZT"/>
-      <xs:enumeration value="LAK"/>
-      <xs:enumeration value="LBP"/>
-      <xs:enumeration value="LKR"/>
-      <xs:enumeration value="LRD"/>
-      <xs:enumeration value="LSL"/>
-      <xs:enumeration value="LYD"/>
-      <xs:enumeration value="MAD"/>
-      <xs:enumeration value="MDL"/>
-      <xs:enumeration value="MGA"/>
-      <xs:enumeration value="MKD"/>
-      <xs:enumeration value="MMK"/>
-      <xs:enumeration value="MNT"/>
-      <xs:enumeration value="MOP"/>
-      <xs:enumeration value="MRU"/>
-      <xs:enumeration value="MUR"/>
-      <xs:enumeration value="MVR"/>
-      <xs:enumeration value="MWK"/>
-      <xs:enumeration value="MXN"/>
-      <xs:enumeration value="MXV"/>
-      <xs:enumeration value="MYR"/>
-      <xs:enumeration value="MZN"/>
-      <xs:enumeration value="NAD"/>
-      <xs:enumeration value="NGN"/>
-      <xs:enumeration value="NIO"/>
-      <xs:enumeration value="NOK"/>
-      <xs:enumeration value="NPR"/>
-      <xs:enumeration value="NZD"/>
-      <xs:enumeration value="OMR"/>
-      <xs:enumeration value="PAB"/>
-      <xs:enumeration value="PEN"/>
-      <xs:enumeration value="PGK"/>
-      <xs:enumeration value="PHP"/>
-      <xs:enumeration value="PKR"/>
-      <xs:enumeration value="PLN"/>
-      <xs:enumeration value="PYG"/>
-      <xs:enumeration value="QAR"/>
-      <xs:enumeration value="RON"/>
-      <xs:enumeration value="RSD"/>
-      <xs:enumeration value="RUB"/>
-      <xs:enumeration value="RWF"/>
-      <xs:enumeration value="SAR"/>
-      <xs:enumeration value="SBD"/>
-      <xs:enumeration value="SCR"/>
-      <xs:enumeration value="SDG"/>
-      <xs:enumeration value="SEK"/>
-      <xs:enumeration value="SGD"/>
-      <xs:enumeration value="SHP"/>
-      <xs:enumeration value="SLL"/>
-      <xs:enumeration value="SOS"/>
-      <xs:enumeration value="SRD"/>
-      <xs:enumeration value="SSP"/>
-      <xs:enumeration value="STN"/>
-      <xs:enumeration value="SVC"/>
-      <xs:enumeration value="SYP"/>
-      <xs:enumeration value="SZL"/>
-      <xs:enumeration value="THB"/>
-      <xs:enumeration value="TJS"/>
-      <xs:enumeration value="TMT"/>
-      <xs:enumeration value="TND"/>
-      <xs:enumeration value="TOP"/>
-      <xs:enumeration value="TRY"/>
-      <xs:enumeration value="TTD"/>
-      <xs:enumeration value="TWD"/>
-      <xs:enumeration value="TZS"/>
-      <xs:enumeration value="UAH"/>
-      <xs:enumeration value="UGX"/>
-      <xs:enumeration value="USD"/>
-      <xs:enumeration value="USN"/>
-      <xs:enumeration value="UYI"/>
-      <xs:enumeration value="UYU"/>
-      <xs:enumeration value="UYW"/>
-      <xs:enumeration value="UZS"/>
-      <xs:enumeration value="VES"/>
-      <xs:enumeration value="VND"/>
-      <xs:enumeration value="VUV"/>
-      <xs:enumeration value="WST"/>
-      <xs:enumeration value="XAF"/>
-      <xs:enumeration value="XAG"/>
-      <xs:enumeration value="XAU"/>
-      <xs:enumeration value="XBA"/>
-      <xs:enumeration value="XBB"/>
-      <xs:enumeration value="XBC"/>
-      <xs:enumeration value="XBD"/>
-      <xs:enumeration value="XCD"/>
-      <xs:enumeration value="XDR"/>
-      <xs:enumeration value="XOF"/>
-      <xs:enumeration value="XPD"/>
-      <xs:enumeration value="XPF"/>
-      <xs:enumeration value="XPT"/>
-      <xs:enumeration value="XSU"/>
-      <xs:enumeration value="XTS"/>
-      <xs:enumeration value="XUA"/>
-      <xs:enumeration value="XXX"/>
-      <xs:enumeration value="YER"/>
-      <xs:enumeration value="ZAR"/>
-      <xs:enumeration value="ZMW"/>
-      <xs:enumeration value="ZWL"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="CurrencyCodeType">
@@ -661,53 +29,5 @@
   </xs:complexType>
   <xs:simpleType name="DocumentCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="50"/>
-      <xs:enumeration value="80"/>
-      <xs:enumeration value="81"/>
-      <xs:enumeration value="82"/>
-      <xs:enumeration value="83"/>
-      <xs:enumeration value="84"/>
-      <xs:enumeration value="130"/>
-      <xs:enumeration value="202"/>
-      <xs:enumeration value="203"/>
-      <xs:enumeration value="204"/>
-      <xs:enumeration value="211"/>
-      <xs:enumeration value="261"/>
-      <xs:enumeration value="262"/>
-      <xs:enumeration value="295"/>
-      <xs:enumeration value="296"/>
-      <xs:enumeration value="308"/>
-      <xs:enumeration value="325"/>
-      <xs:enumeration value="326"/>
-      <xs:enumeration value="380"/>
-      <xs:enumeration value="381"/>
-      <xs:enumeration value="383"/>
-      <xs:enumeration value="384"/>
-      <xs:enumeration value="385"/>
-      <xs:enumeration value="386"/>
-      <xs:enumeration value="387"/>
-      <xs:enumeration value="388"/>
-      <xs:enumeration value="389"/>
-      <xs:enumeration value="390"/>
-      <xs:enumeration value="393"/>
-      <xs:enumeration value="394"/>
-      <xs:enumeration value="395"/>
-      <xs:enumeration value="396"/>
-      <xs:enumeration value="420"/>
-      <xs:enumeration value="456"/>
-      <xs:enumeration value="457"/>
-      <xs:enumeration value="458"/>
-      <xs:enumeration value="527"/>
-      <xs:enumeration value="575"/>
-      <xs:enumeration value="623"/>
-      <xs:enumeration value="633"/>
-      <xs:enumeration value="751"/>
-      <xs:enumeration value="780"/>
-      <xs:enumeration value="875"/>
-      <xs:enumeration value="876"/>
-      <xs:enumeration value="877"/>
-      <xs:enumeration value="916"/>
-      <xs:enumeration value="935"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="DocumentCodeType">
@@ -733,89 +53,5 @@
   </xs:complexType>
   <xs:simpleType name="PaymentMeansCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="1"/>
-      <xs:enumeration value="2"/>
-      <xs:enumeration value="3"/>
-      <xs:enumeration value="4"/>
-      <xs:enumeration value="5"/>
-      <xs:enumeration value="6"/>
-      <xs:enumeration value="7"/>
-      <xs:enumeration value="8"/>
-      <xs:enumeration value="9"/>
-      <xs:enumeration value="10"/>
-      <xs:enumeration value="11"/>
-      <xs:enumeration value="12"/>
-      <xs:enumeration value="13"/>
-      <xs:enumeration value="14"/>
-      <xs:enumeration value="15"/>
-      <xs:enumeration value="16"/>
-      <xs:enumeration value="17"/>
-      <xs:enumeration value="18"/>
-      <xs:enumeration value="19"/>
-      <xs:enumeration value="20"/>
-      <xs:enumeration value="21"/>
-      <xs:enumeration value="22"/>
-      <xs:enumeration value="23"/>
-      <xs:enumeration value="24"/>
-      <xs:enumeration value="25"/>
-      <xs:enumeration value="26"/>
-      <xs:enumeration value="27"/>
-      <xs:enumeration value="28"/>
-      <xs:enumeration value="29"/>
-      <xs:enumeration value="30"/>
-      <xs:enumeration value="31"/>
-      <xs:enumeration value="32"/>
-      <xs:enumeration value="33"/>
-      <xs:enumeration value="34"/>
-      <xs:enumeration value="35"/>
-      <xs:enumeration value="36"/>
-      <xs:enumeration value="37"/>
-      <xs:enumeration value="38"/>
-      <xs:enumeration value="39"/>
-      <xs:enumeration value="40"/>
-      <xs:enumeration value="41"/>
-      <xs:enumeration value="42"/>
-      <xs:enumeration value="43"/>
-      <xs:enumeration value="44"/>
-      <xs:enumeration value="45"/>
-      <xs:enumeration value="46"/>
-      <xs:enumeration value="47"/>
-      <xs:enumeration value="48"/>
-      <xs:enumeration value="49"/>
-      <xs:enumeration value="50"/>
-      <xs:enumeration value="51"/>
-      <xs:enumeration value="52"/>
-      <xs:enumeration value="53"/>
-      <xs:enumeration value="54"/>
-      <xs:enumeration value="55"/>
-      <xs:enumeration value="56"/>
-      <xs:enumeration value="57"/>
-      <xs:enumeration value="58"/>
-      <xs:enumeration value="59"/>
-      <xs:enumeration value="60"/>
-      <xs:enumeration value="61"/>
-      <xs:enumeration value="62"/>
-      <xs:enumeration value="63"/>
-      <xs:enumeration value="64"/>
-      <xs:enumeration value="65"/>
-      <xs:enumeration value="66"/>
-      <xs:enumeration value="67"/>
-      <xs:enumeration value="68"/>
-      <xs:enumeration value="69"/>
-      <xs:enumeration value="70"/>
-      <xs:enumeration value="74"/>
-      <xs:enumeration value="75"/>
-      <xs:enumeration value="76"/>
-      <xs:enumeration value="77"/>
-      <xs:enumeration value="78"/>
-      <xs:enumeration value="91"/>
-      <xs:enumeration value="92"/>
-      <xs:enumeration value="93"/>
-      <xs:enumeration value="94"/>
-      <xs:enumeration value="95"/>
-      <xs:enumeration value="96"/>
-      <xs:enumeration value="97"/>
-      <xs:enumeration value="ZZZ"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="PaymentMeansCodeType">
@@ -825,823 +61,5 @@
   </xs:complexType>
   <xs:simpleType name="ReferenceCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AAA"/>
-      <xs:enumeration value="AAB"/>
-      <xs:enumeration value="AAC"/>
-      <xs:enumeration value="AAD"/>
-      <xs:enumeration value="AAE"/>
-      <xs:enumeration value="AAF"/>
-      <xs:enumeration value="AAG"/>
-      <xs:enumeration value="AAH"/>
-      <xs:enumeration value="AAI"/>
-      <xs:enumeration value="AAJ"/>
-      <xs:enumeration value="AAK"/>
-      <xs:enumeration value="AAL"/>
-      <xs:enumeration value="AAM"/>
-      <xs:enumeration value="AAN"/>
-      <xs:enumeration value="AAO"/>
-      <xs:enumeration value="AAP"/>
-      <xs:enumeration value="AAQ"/>
-      <xs:enumeration value="AAR"/>
-      <xs:enumeration value="AAS"/>
-      <xs:enumeration value="AAT"/>
-      <xs:enumeration value="AAU"/>
-      <xs:enumeration value="AAV"/>
-      <xs:enumeration value="AAW"/>
-      <xs:enumeration value="AAX"/>
-      <xs:enumeration value="AAY"/>
-      <xs:enumeration value="AAZ"/>
-      <xs:enumeration value="ABA"/>
-      <xs:enumeration value="ABB"/>
-      <xs:enumeration value="ABC"/>
-      <xs:enumeration value="ABD"/>
-      <xs:enumeration value="ABE"/>
-      <xs:enumeration value="ABF"/>
-      <xs:enumeration value="ABG"/>
-      <xs:enumeration value="ABH"/>
-      <xs:enumeration value="ABI"/>
-      <xs:enumeration value="ABJ"/>
-      <xs:enumeration value="ABK"/>
-      <xs:enumeration value="ABL"/>
-      <xs:enumeration value="ABM"/>
-      <xs:enumeration value="ABN"/>
-      <xs:enumeration value="ABO"/>
-      <xs:enumeration value="ABP"/>
-      <xs:enumeration value="ABQ"/>
-      <xs:enumeration value="ABR"/>
-      <xs:enumeration value="ABS"/>
-      <xs:enumeration value="ABT"/>
-      <xs:enumeration value="ABU"/>
-      <xs:enumeration value="ABV"/>
-      <xs:enumeration value="ABW"/>
-      <xs:enumeration value="ABX"/>
-      <xs:enumeration value="ABY"/>
-      <xs:enumeration value="ABZ"/>
-      <xs:enumeration value="AC"/>
-      <xs:enumeration value="ACA"/>
-      <xs:enumeration value="ACB"/>
-      <xs:enumeration value="ACC"/>
-      <xs:enumeration value="ACD"/>
-      <xs:enumeration value="ACE"/>
-      <xs:enumeration value="ACF"/>
-      <xs:enumeration value="ACG"/>
-      <xs:enumeration value="ACH"/>
-      <xs:enumeration value="ACI"/>
-      <xs:enumeration value="ACJ"/>
-      <xs:enumeration value="ACK"/>
-      <xs:enumeration value="ACL"/>
-      <xs:enumeration value="ACN"/>
-      <xs:enumeration value="ACO"/>
-      <xs:enumeration value="ACP"/>
-      <xs:enumeration value="ACQ"/>
-      <xs:enumeration value="ACR"/>
-      <xs:enumeration value="ACT"/>
-      <xs:enumeration value="ACU"/>
-      <xs:enumeration value="ACV"/>
-      <xs:enumeration value="ACW"/>
-      <xs:enumeration value="ACX"/>
-      <xs:enumeration value="ACY"/>
-      <xs:enumeration value="ACZ"/>
-      <xs:enumeration value="ADA"/>
-      <xs:enumeration value="ADB"/>
-      <xs:enumeration value="ADC"/>
-      <xs:enumeration value="ADD"/>
-      <xs:enumeration value="ADE"/>
-      <xs:enumeration value="ADF"/>
-      <xs:enumeration value="ADG"/>
-      <xs:enumeration value="ADI"/>
-      <xs:enumeration value="ADJ"/>
-      <xs:enumeration value="ADK"/>
-      <xs:enumeration value="ADL"/>
-      <xs:enumeration value="ADM"/>
-      <xs:enumeration value="ADN"/>
-      <xs:enumeration value="ADO"/>
-      <xs:enumeration value="ADP"/>
-      <xs:enumeration value="ADQ"/>
-      <xs:enumeration value="ADT"/>
-      <xs:enumeration value="ADU"/>
-      <xs:enumeration value="ADV"/>
-      <xs:enumeration value="ADW"/>
-      <xs:enumeration value="ADX"/>
-      <xs:enumeration value="ADY"/>
-      <xs:enumeration value="ADZ"/>
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="AEA"/>
-      <xs:enumeration value="AEB"/>
-      <xs:enumeration value="AEC"/>
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AEE"/>
-      <xs:enumeration value="AEF"/>
-      <xs:enumeration value="AEG"/>
-      <xs:enumeration value="AEH"/>
-      <xs:enumeration value="AEI"/>
-      <xs:enumeration value="AEJ"/>
-      <xs:enumeration value="AEK"/>
-      <xs:enumeration value="AEL"/>
-      <xs:enumeration value="AEM"/>
-      <xs:enumeration value="AEN"/>
-      <xs:enumeration value="AEO"/>
-      <xs:enumeration value="AEP"/>
-      <xs:enumeration value="AEQ"/>
-      <xs:enumeration value="AER"/>
-      <xs:enumeration value="AES"/>
-      <xs:enumeration value="AET"/>
-      <xs:enumeration value="AEU"/>
-      <xs:enumeration value="AEV"/>
-      <xs:enumeration value="AEW"/>
-      <xs:enumeration value="AEX"/>
-      <xs:enumeration value="AEY"/>
-      <xs:enumeration value="AEZ"/>
-      <xs:enumeration value="AF"/>
-      <xs:enumeration value="AFA"/>
-      <xs:enumeration value="AFB"/>
-      <xs:enumeration value="AFC"/>
-      <xs:enumeration value="AFD"/>
-      <xs:enumeration value="AFE"/>
-      <xs:enumeration value="AFF"/>
-      <xs:enumeration value="AFG"/>
-      <xs:enumeration value="AFH"/>
-      <xs:enumeration value="AFI"/>
-      <xs:enumeration value="AFJ"/>
-      <xs:enumeration value="AFK"/>
-      <xs:enumeration value="AFL"/>
-      <xs:enumeration value="AFM"/>
-      <xs:enumeration value="AFN"/>
-      <xs:enumeration value="AFO"/>
-      <xs:enumeration value="AFP"/>
-      <xs:enumeration value="AFQ"/>
-      <xs:enumeration value="AFR"/>
-      <xs:enumeration value="AFS"/>
-      <xs:enumeration value="AFT"/>
-      <xs:enumeration value="AFU"/>
-      <xs:enumeration value="AFV"/>
-      <xs:enumeration value="AFW"/>
-      <xs:enumeration value="AFX"/>
-      <xs:enumeration value="AFY"/>
-      <xs:enumeration value="AFZ"/>
-      <xs:enumeration value="AGA"/>
-      <xs:enumeration value="AGB"/>
-      <xs:enumeration value="AGC"/>
-      <xs:enumeration value="AGD"/>
-      <xs:enumeration value="AGE"/>
-      <xs:enumeration value="AGF"/>
-      <xs:enumeration value="AGG"/>
-      <xs:enumeration value="AGH"/>
-      <xs:enumeration value="AGI"/>
-      <xs:enumeration value="AGJ"/>
-      <xs:enumeration value="AGK"/>
-      <xs:enumeration value="AGL"/>
-      <xs:enumeration value="AGM"/>
-      <xs:enumeration value="AGN"/>
-      <xs:enumeration value="AGO"/>
-      <xs:enumeration value="AGP"/>
-      <xs:enumeration value="AGQ"/>
-      <xs:enumeration value="AGR"/>
-      <xs:enumeration value="AGS"/>
-      <xs:enumeration value="AGT"/>
-      <xs:enumeration value="AGU"/>
-      <xs:enumeration value="AGV"/>
-      <xs:enumeration value="AGW"/>
-      <xs:enumeration value="AGX"/>
-      <xs:enumeration value="AGY"/>
-      <xs:enumeration value="AGZ"/>
-      <xs:enumeration value="AHA"/>
-      <xs:enumeration value="AHB"/>
-      <xs:enumeration value="AHC"/>
-      <xs:enumeration value="AHD"/>
-      <xs:enumeration value="AHE"/>
-      <xs:enumeration value="AHF"/>
-      <xs:enumeration value="AHG"/>
-      <xs:enumeration value="AHH"/>
-      <xs:enumeration value="AHI"/>
-      <xs:enumeration value="AHJ"/>
-      <xs:enumeration value="AHK"/>
-      <xs:enumeration value="AHL"/>
-      <xs:enumeration value="AHM"/>
-      <xs:enumeration value="AHN"/>
-      <xs:enumeration value="AHO"/>
-      <xs:enumeration value="AHP"/>
-      <xs:enumeration value="AHQ"/>
-      <xs:enumeration value="AHR"/>
-      <xs:enumeration value="AHS"/>
-      <xs:enumeration value="AHT"/>
-      <xs:enumeration value="AHU"/>
-      <xs:enumeration value="AHV"/>
-      <xs:enumeration value="AHX"/>
-      <xs:enumeration value="AHY"/>
-      <xs:enumeration value="AHZ"/>
-      <xs:enumeration value="AIA"/>
-      <xs:enumeration value="AIB"/>
-      <xs:enumeration value="AIC"/>
-      <xs:enumeration value="AID"/>
-      <xs:enumeration value="AIE"/>
-      <xs:enumeration value="AIF"/>
-      <xs:enumeration value="AIG"/>
-      <xs:enumeration value="AIH"/>
-      <xs:enumeration value="AII"/>
-      <xs:enumeration value="AIJ"/>
-      <xs:enumeration value="AIK"/>
-      <xs:enumeration value="AIL"/>
-      <xs:enumeration value="AIM"/>
-      <xs:enumeration value="AIN"/>
-      <xs:enumeration value="AIO"/>
-      <xs:enumeration value="AIP"/>
-      <xs:enumeration value="AIQ"/>
-      <xs:enumeration value="AIR"/>
-      <xs:enumeration value="AIS"/>
-      <xs:enumeration value="AIT"/>
-      <xs:enumeration value="AIU"/>
-      <xs:enumeration value="AIV"/>
-      <xs:enumeration value="AIW"/>
-      <xs:enumeration value="AIX"/>
-      <xs:enumeration value="AIY"/>
-      <xs:enumeration value="AIZ"/>
-      <xs:enumeration value="AJA"/>
-      <xs:enumeration value="AJB"/>
-      <xs:enumeration value="AJC"/>
-      <xs:enumeration value="AJD"/>
-      <xs:enumeration value="AJE"/>
-      <xs:enumeration value="AJF"/>
-      <xs:enumeration value="AJG"/>
-      <xs:enumeration value="AJH"/>
-      <xs:enumeration value="AJI"/>
-      <xs:enumeration value="AJJ"/>
-      <xs:enumeration value="AJK"/>
-      <xs:enumeration value="AJL"/>
-      <xs:enumeration value="AJM"/>
-      <xs:enumeration value="AJN"/>
-      <xs:enumeration value="AJO"/>
-      <xs:enumeration value="AJP"/>
-      <xs:enumeration value="AJQ"/>
-      <xs:enumeration value="AJR"/>
-      <xs:enumeration value="AJS"/>
-      <xs:enumeration value="AJT"/>
-      <xs:enumeration value="AJU"/>
-      <xs:enumeration value="AJV"/>
-      <xs:enumeration value="AJW"/>
-      <xs:enumeration value="AJX"/>
-      <xs:enumeration value="AJY"/>
-      <xs:enumeration value="AJZ"/>
-      <xs:enumeration value="AKA"/>
-      <xs:enumeration value="AKB"/>
-      <xs:enumeration value="AKC"/>
-      <xs:enumeration value="AKD"/>
-      <xs:enumeration value="AKE"/>
-      <xs:enumeration value="AKF"/>
-      <xs:enumeration value="AKG"/>
-      <xs:enumeration value="AKH"/>
-      <xs:enumeration value="AKI"/>
-      <xs:enumeration value="AKJ"/>
-      <xs:enumeration value="AKK"/>
-      <xs:enumeration value="AKL"/>
-      <xs:enumeration value="AKM"/>
-      <xs:enumeration value="AKN"/>
-      <xs:enumeration value="AKO"/>
-      <xs:enumeration value="AKP"/>
-      <xs:enumeration value="AKQ"/>
-      <xs:enumeration value="AKR"/>
-      <xs:enumeration value="AKS"/>
-      <xs:enumeration value="AKT"/>
-      <xs:enumeration value="AKU"/>
-      <xs:enumeration value="AKV"/>
-      <xs:enumeration value="AKW"/>
-      <xs:enumeration value="AKX"/>
-      <xs:enumeration value="AKY"/>
-      <xs:enumeration value="AKZ"/>
-      <xs:enumeration value="ALA"/>
-      <xs:enumeration value="ALB"/>
-      <xs:enumeration value="ALC"/>
-      <xs:enumeration value="ALD"/>
-      <xs:enumeration value="ALE"/>
-      <xs:enumeration value="ALF"/>
-      <xs:enumeration value="ALG"/>
-      <xs:enumeration value="ALH"/>
-      <xs:enumeration value="ALI"/>
-      <xs:enumeration value="ALJ"/>
-      <xs:enumeration value="ALK"/>
-      <xs:enumeration value="ALL"/>
-      <xs:enumeration value="ALM"/>
-      <xs:enumeration value="ALN"/>
-      <xs:enumeration value="ALO"/>
-      <xs:enumeration value="ALP"/>
-      <xs:enumeration value="ALQ"/>
-      <xs:enumeration value="ALR"/>
-      <xs:enumeration value="ALS"/>
-      <xs:enumeration value="ALT"/>
-      <xs:enumeration value="ALU"/>
-      <xs:enumeration value="ALV"/>
-      <xs:enumeration value="ALW"/>
-      <xs:enumeration value="ALX"/>
-      <xs:enumeration value="ALY"/>
-      <xs:enumeration value="ALZ"/>
-      <xs:enumeration value="AMA"/>
-      <xs:enumeration value="AMB"/>
-      <xs:enumeration value="AMC"/>
-      <xs:enumeration value="AMD"/>
-      <xs:enumeration value="AME"/>
-      <xs:enumeration value="AMF"/>
-      <xs:enumeration value="AMG"/>
-      <xs:enumeration value="AMH"/>
-      <xs:enumeration value="AMI"/>
-      <xs:enumeration value="AMJ"/>
-      <xs:enumeration value="AMK"/>
-      <xs:enumeration value="AML"/>
-      <xs:enumeration value="AMM"/>
-      <xs:enumeration value="AMN"/>
-      <xs:enumeration value="AMO"/>
-      <xs:enumeration value="AMP"/>
-      <xs:enumeration value="AMQ"/>
-      <xs:enumeration value="AMR"/>
-      <xs:enumeration value="AMS"/>
-      <xs:enumeration value="AMT"/>
-      <xs:enumeration value="AMU"/>
-      <xs:enumeration value="AMV"/>
-      <xs:enumeration value="AMW"/>
-      <xs:enumeration value="AMX"/>
-      <xs:enumeration value="AMY"/>
-      <xs:enumeration value="AMZ"/>
-      <xs:enumeration value="ANA"/>
-      <xs:enumeration value="ANB"/>
-      <xs:enumeration value="ANC"/>
-      <xs:enumeration value="AND"/>
-      <xs:enumeration value="ANE"/>
-      <xs:enumeration value="ANF"/>
-      <xs:enumeration value="ANG"/>
-      <xs:enumeration value="ANH"/>
-      <xs:enumeration value="ANI"/>
-      <xs:enumeration value="ANJ"/>
-      <xs:enumeration value="ANK"/>
-      <xs:enumeration value="ANL"/>
-      <xs:enumeration value="ANM"/>
-      <xs:enumeration value="ANN"/>
-      <xs:enumeration value="ANO"/>
-      <xs:enumeration value="ANP"/>
-      <xs:enumeration value="ANQ"/>
-      <xs:enumeration value="ANR"/>
-      <xs:enumeration value="ANS"/>
-      <xs:enumeration value="ANT"/>
-      <xs:enumeration value="ANU"/>
-      <xs:enumeration value="ANV"/>
-      <xs:enumeration value="ANW"/>
-      <xs:enumeration value="ANX"/>
-      <xs:enumeration value="ANY"/>
-      <xs:enumeration value="AOA"/>
-      <xs:enumeration value="AOD"/>
-      <xs:enumeration value="AOE"/>
-      <xs:enumeration value="AOF"/>
-      <xs:enumeration value="AOG"/>
-      <xs:enumeration value="AOH"/>
-      <xs:enumeration value="AOI"/>
-      <xs:enumeration value="AOJ"/>
-      <xs:enumeration value="AOK"/>
-      <xs:enumeration value="AOL"/>
-      <xs:enumeration value="AOM"/>
-      <xs:enumeration value="AON"/>
-      <xs:enumeration value="AOO"/>
-      <xs:enumeration value="AOP"/>
-      <xs:enumeration value="AOQ"/>
-      <xs:enumeration value="AOR"/>
-      <xs:enumeration value="AOS"/>
-      <xs:enumeration value="AOT"/>
-      <xs:enumeration value="AOU"/>
-      <xs:enumeration value="AOV"/>
-      <xs:enumeration value="AOW"/>
-      <xs:enumeration value="AOX"/>
-      <xs:enumeration value="AOY"/>
-      <xs:enumeration value="AOZ"/>
-      <xs:enumeration value="AP"/>
-      <xs:enumeration value="APA"/>
-      <xs:enumeration value="APB"/>
-      <xs:enumeration value="APC"/>
-      <xs:enumeration value="APD"/>
-      <xs:enumeration value="APE"/>
-      <xs:enumeration value="APF"/>
-      <xs:enumeration value="APG"/>
-      <xs:enumeration value="APH"/>
-      <xs:enumeration value="API"/>
-      <xs:enumeration value="APJ"/>
-      <xs:enumeration value="APK"/>
-      <xs:enumeration value="APL"/>
-      <xs:enumeration value="APM"/>
-      <xs:enumeration value="APN"/>
-      <xs:enumeration value="APO"/>
-      <xs:enumeration value="APP"/>
-      <xs:enumeration value="APQ"/>
-      <xs:enumeration value="APR"/>
-      <xs:enumeration value="APS"/>
-      <xs:enumeration value="APT"/>
-      <xs:enumeration value="APU"/>
-      <xs:enumeration value="APV"/>
-      <xs:enumeration value="APW"/>
-      <xs:enumeration value="APX"/>
-      <xs:enumeration value="APY"/>
-      <xs:enumeration value="APZ"/>
-      <xs:enumeration value="AQA"/>
-      <xs:enumeration value="AQB"/>
-      <xs:enumeration value="AQC"/>
-      <xs:enumeration value="AQD"/>
-      <xs:enumeration value="AQE"/>
-      <xs:enumeration value="AQF"/>
-      <xs:enumeration value="AQG"/>
-      <xs:enumeration value="AQH"/>
-      <xs:enumeration value="AQI"/>
-      <xs:enumeration value="AQJ"/>
-      <xs:enumeration value="AQK"/>
-      <xs:enumeration value="AQL"/>
-      <xs:enumeration value="AQM"/>
-      <xs:enumeration value="AQN"/>
-      <xs:enumeration value="AQO"/>
-      <xs:enumeration value="AQP"/>
-      <xs:enumeration value="AQQ"/>
-      <xs:enumeration value="AQR"/>
-      <xs:enumeration value="AQS"/>
-      <xs:enumeration value="AQT"/>
-      <xs:enumeration value="AQU"/>
-      <xs:enumeration value="AQV"/>
-      <xs:enumeration value="AQW"/>
-      <xs:enumeration value="AQX"/>
-      <xs:enumeration value="AQY"/>
-      <xs:enumeration value="AQZ"/>
-      <xs:enumeration value="ARA"/>
-      <xs:enumeration value="ARB"/>
-      <xs:enumeration value="ARC"/>
-      <xs:enumeration value="ARD"/>
-      <xs:enumeration value="ARE"/>
-      <xs:enumeration value="ARF"/>
-      <xs:enumeration value="ARG"/>
-      <xs:enumeration value="ARH"/>
-      <xs:enumeration value="ARI"/>
-      <xs:enumeration value="ARJ"/>
-      <xs:enumeration value="ARK"/>
-      <xs:enumeration value="ARL"/>
-      <xs:enumeration value="ARM"/>
-      <xs:enumeration value="ARN"/>
-      <xs:enumeration value="ARO"/>
-      <xs:enumeration value="ARP"/>
-      <xs:enumeration value="ARQ"/>
-      <xs:enumeration value="ARR"/>
-      <xs:enumeration value="ARS"/>
-      <xs:enumeration value="ART"/>
-      <xs:enumeration value="ARU"/>
-      <xs:enumeration value="ARV"/>
-      <xs:enumeration value="ARW"/>
-      <xs:enumeration value="ARX"/>
-      <xs:enumeration value="ARY"/>
-      <xs:enumeration value="ARZ"/>
-      <xs:enumeration value="ASA"/>
-      <xs:enumeration value="ASB"/>
-      <xs:enumeration value="ASC"/>
-      <xs:enumeration value="ASD"/>
-      <xs:enumeration value="ASE"/>
-      <xs:enumeration value="ASF"/>
-      <xs:enumeration value="ASG"/>
-      <xs:enumeration value="ASH"/>
-      <xs:enumeration value="ASI"/>
-      <xs:enumeration value="ASJ"/>
-      <xs:enumeration value="ASK"/>
-      <xs:enumeration value="ASL"/>
-      <xs:enumeration value="ASM"/>
-      <xs:enumeration value="ASN"/>
-      <xs:enumeration value="ASO"/>
-      <xs:enumeration value="ASP"/>
-      <xs:enumeration value="ASQ"/>
-      <xs:enumeration value="ASR"/>
-      <xs:enumeration value="ASS"/>
-      <xs:enumeration value="AST"/>
-      <xs:enumeration value="ASU"/>
-      <xs:enumeration value="ASV"/>
-      <xs:enumeration value="ASW"/>
-      <xs:enumeration value="ASX"/>
-      <xs:enumeration value="ASY"/>
-      <xs:enumeration value="ASZ"/>
-      <xs:enumeration value="ATA"/>
-      <xs:enumeration value="ATB"/>
-      <xs:enumeration value="ATC"/>
-      <xs:enumeration value="ATD"/>
-      <xs:enumeration value="ATE"/>
-      <xs:enumeration value="ATF"/>
-      <xs:enumeration value="ATG"/>
-      <xs:enumeration value="ATH"/>
-      <xs:enumeration value="ATI"/>
-      <xs:enumeration value="ATJ"/>
-      <xs:enumeration value="ATK"/>
-      <xs:enumeration value="ATL"/>
-      <xs:enumeration value="ATM"/>
-      <xs:enumeration value="ATN"/>
-      <xs:enumeration value="ATO"/>
-      <xs:enumeration value="ATP"/>
-      <xs:enumeration value="ATQ"/>
-      <xs:enumeration value="ATR"/>
-      <xs:enumeration value="ATS"/>
-      <xs:enumeration value="ATT"/>
-      <xs:enumeration value="ATU"/>
-      <xs:enumeration value="ATV"/>
-      <xs:enumeration value="ATW"/>
-      <xs:enumeration value="ATX"/>
-      <xs:enumeration value="ATY"/>
-      <xs:enumeration value="ATZ"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="AUA"/>
-      <xs:enumeration value="AUB"/>
-      <xs:enumeration value="AUC"/>
-      <xs:enumeration value="AUD"/>
-      <xs:enumeration value="AUE"/>
-      <xs:enumeration value="AUF"/>
-      <xs:enumeration value="AUG"/>
-      <xs:enumeration value="AUH"/>
-      <xs:enumeration value="AUI"/>
-      <xs:enumeration value="AUJ"/>
-      <xs:enumeration value="AUK"/>
-      <xs:enumeration value="AUL"/>
-      <xs:enumeration value="AUM"/>
-      <xs:enumeration value="AUN"/>
-      <xs:enumeration value="AUO"/>
-      <xs:enumeration value="AUP"/>
-      <xs:enumeration value="AUQ"/>
-      <xs:enumeration value="AUR"/>
-      <xs:enumeration value="AUS"/>
-      <xs:enumeration value="AUT"/>
-      <xs:enumeration value="AUU"/>
-      <xs:enumeration value="AUV"/>
-      <xs:enumeration value="AUW"/>
-      <xs:enumeration value="AUX"/>
-      <xs:enumeration value="AUY"/>
-      <xs:enumeration value="AUZ"/>
-      <xs:enumeration value="AV"/>
-      <xs:enumeration value="AVA"/>
-      <xs:enumeration value="AVB"/>
-      <xs:enumeration value="AVC"/>
-      <xs:enumeration value="AVD"/>
-      <xs:enumeration value="AVE"/>
-      <xs:enumeration value="AVF"/>
-      <xs:enumeration value="AVG"/>
-      <xs:enumeration value="AVH"/>
-      <xs:enumeration value="AVI"/>
-      <xs:enumeration value="AVJ"/>
-      <xs:enumeration value="AVK"/>
-      <xs:enumeration value="AVL"/>
-      <xs:enumeration value="AVM"/>
-      <xs:enumeration value="AVN"/>
-      <xs:enumeration value="AVO"/>
-      <xs:enumeration value="AVP"/>
-      <xs:enumeration value="AVQ"/>
-      <xs:enumeration value="AVR"/>
-      <xs:enumeration value="AVS"/>
-      <xs:enumeration value="AVT"/>
-      <xs:enumeration value="AVU"/>
-      <xs:enumeration value="AVV"/>
-      <xs:enumeration value="AVW"/>
-      <xs:enumeration value="AVX"/>
-      <xs:enumeration value="AVY"/>
-      <xs:enumeration value="AVZ"/>
-      <xs:enumeration value="AWA"/>
-      <xs:enumeration value="AWB"/>
-      <xs:enumeration value="AWC"/>
-      <xs:enumeration value="AWD"/>
-      <xs:enumeration value="AWE"/>
-      <xs:enumeration value="AWF"/>
-      <xs:enumeration value="AWG"/>
-      <xs:enumeration value="AWH"/>
-      <xs:enumeration value="AWI"/>
-      <xs:enumeration value="AWJ"/>
-      <xs:enumeration value="AWK"/>
-      <xs:enumeration value="AWL"/>
-      <xs:enumeration value="AWM"/>
-      <xs:enumeration value="AWN"/>
-      <xs:enumeration value="AWO"/>
-      <xs:enumeration value="AWP"/>
-      <xs:enumeration value="AWQ"/>
-      <xs:enumeration value="AWR"/>
-      <xs:enumeration value="AWS"/>
-      <xs:enumeration value="AWT"/>
-      <xs:enumeration value="AWU"/>
-      <xs:enumeration value="AWV"/>
-      <xs:enumeration value="AWW"/>
-      <xs:enumeration value="AWX"/>
-      <xs:enumeration value="AWY"/>
-      <xs:enumeration value="AWZ"/>
-      <xs:enumeration value="AXA"/>
-      <xs:enumeration value="AXB"/>
-      <xs:enumeration value="AXC"/>
-      <xs:enumeration value="AXD"/>
-      <xs:enumeration value="AXE"/>
-      <xs:enumeration value="AXF"/>
-      <xs:enumeration value="AXG"/>
-      <xs:enumeration value="AXH"/>
-      <xs:enumeration value="AXI"/>
-      <xs:enumeration value="AXJ"/>
-      <xs:enumeration value="AXK"/>
-      <xs:enumeration value="AXL"/>
-      <xs:enumeration value="AXM"/>
-      <xs:enumeration value="AXN"/>
-      <xs:enumeration value="AXO"/>
-      <xs:enumeration value="AXP"/>
-      <xs:enumeration value="AXQ"/>
-      <xs:enumeration value="AXR"/>
-      <xs:enumeration value="AXS"/>
-      <xs:enumeration value="BA"/>
-      <xs:enumeration value="BC"/>
-      <xs:enumeration value="BD"/>
-      <xs:enumeration value="BE"/>
-      <xs:enumeration value="BH"/>
-      <xs:enumeration value="BM"/>
-      <xs:enumeration value="BN"/>
-      <xs:enumeration value="BO"/>
-      <xs:enumeration value="BR"/>
-      <xs:enumeration value="BT"/>
-      <xs:enumeration value="BTP"/>
-      <xs:enumeration value="BW"/>
-      <xs:enumeration value="CAS"/>
-      <xs:enumeration value="CAT"/>
-      <xs:enumeration value="CAU"/>
-      <xs:enumeration value="CAV"/>
-      <xs:enumeration value="CAW"/>
-      <xs:enumeration value="CAX"/>
-      <xs:enumeration value="CAY"/>
-      <xs:enumeration value="CAZ"/>
-      <xs:enumeration value="CBA"/>
-      <xs:enumeration value="CBB"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CEC"/>
-      <xs:enumeration value="CED"/>
-      <xs:enumeration value="CFE"/>
-      <xs:enumeration value="CFF"/>
-      <xs:enumeration value="CFO"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CH"/>
-      <xs:enumeration value="CK"/>
-      <xs:enumeration value="CKN"/>
-      <xs:enumeration value="CM"/>
-      <xs:enumeration value="CMR"/>
-      <xs:enumeration value="CN"/>
-      <xs:enumeration value="CNO"/>
-      <xs:enumeration value="COF"/>
-      <xs:enumeration value="CP"/>
-      <xs:enumeration value="CR"/>
-      <xs:enumeration value="CRN"/>
-      <xs:enumeration value="CS"/>
-      <xs:enumeration value="CST"/>
-      <xs:enumeration value="CT"/>
-      <xs:enumeration value="CU"/>
-      <xs:enumeration value="CV"/>
-      <xs:enumeration value="CW"/>
-      <xs:enumeration value="CZ"/>
-      <xs:enumeration value="DA"/>
-      <xs:enumeration value="DAN"/>
-      <xs:enumeration value="DB"/>
-      <xs:enumeration value="DI"/>
-      <xs:enumeration value="DL"/>
-      <xs:enumeration value="DM"/>
-      <xs:enumeration value="DQ"/>
-      <xs:enumeration value="DR"/>
-      <xs:enumeration value="EA"/>
-      <xs:enumeration value="EB"/>
-      <xs:enumeration value="ED"/>
-      <xs:enumeration value="EE"/>
-      <xs:enumeration value="EEP"/>
-      <xs:enumeration value="EI"/>
-      <xs:enumeration value="EN"/>
-      <xs:enumeration value="EQ"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="ERN"/>
-      <xs:enumeration value="ET"/>
-      <xs:enumeration value="EX"/>
-      <xs:enumeration value="FC"/>
-      <xs:enumeration value="FF"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="FLW"/>
-      <xs:enumeration value="FN"/>
-      <xs:enumeration value="FO"/>
-      <xs:enumeration value="FS"/>
-      <xs:enumeration value="FT"/>
-      <xs:enumeration value="FV"/>
-      <xs:enumeration value="FX"/>
-      <xs:enumeration value="GA"/>
-      <xs:enumeration value="GC"/>
-      <xs:enumeration value="GD"/>
-      <xs:enumeration value="GDN"/>
-      <xs:enumeration value="GN"/>
-      <xs:enumeration value="HS"/>
-      <xs:enumeration value="HWB"/>
-      <xs:enumeration value="IA"/>
-      <xs:enumeration value="IB"/>
-      <xs:enumeration value="ICA"/>
-      <xs:enumeration value="ICE"/>
-      <xs:enumeration value="ICO"/>
-      <xs:enumeration value="II"/>
-      <xs:enumeration value="IL"/>
-      <xs:enumeration value="INB"/>
-      <xs:enumeration value="INN"/>
-      <xs:enumeration value="INO"/>
-      <xs:enumeration value="IP"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="IT"/>
-      <xs:enumeration value="IV"/>
-      <xs:enumeration value="JB"/>
-      <xs:enumeration value="JE"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LAN"/>
-      <xs:enumeration value="LAR"/>
-      <xs:enumeration value="LB"/>
-      <xs:enumeration value="LC"/>
-      <xs:enumeration value="LI"/>
-      <xs:enumeration value="LO"/>
-      <xs:enumeration value="LRC"/>
-      <xs:enumeration value="LS"/>
-      <xs:enumeration value="MA"/>
-      <xs:enumeration value="MB"/>
-      <xs:enumeration value="MF"/>
-      <xs:enumeration value="MG"/>
-      <xs:enumeration value="MH"/>
-      <xs:enumeration value="MR"/>
-      <xs:enumeration value="MRN"/>
-      <xs:enumeration value="MS"/>
-      <xs:enumeration value="MSS"/>
-      <xs:enumeration value="MWB"/>
-      <xs:enumeration value="NA"/>
-      <xs:enumeration value="NF"/>
-      <xs:enumeration value="OH"/>
-      <xs:enumeration value="OI"/>
-      <xs:enumeration value="ON"/>
-      <xs:enumeration value="OP"/>
-      <xs:enumeration value="OR"/>
-      <xs:enumeration value="PB"/>
-      <xs:enumeration value="PC"/>
-      <xs:enumeration value="PD"/>
-      <xs:enumeration value="PE"/>
-      <xs:enumeration value="PF"/>
-      <xs:enumeration value="PI"/>
-      <xs:enumeration value="PK"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="POR"/>
-      <xs:enumeration value="PP"/>
-      <xs:enumeration value="PQ"/>
-      <xs:enumeration value="PR"/>
-      <xs:enumeration value="PS"/>
-      <xs:enumeration value="PW"/>
-      <xs:enumeration value="PY"/>
-      <xs:enumeration value="RA"/>
-      <xs:enumeration value="RC"/>
-      <xs:enumeration value="RCN"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="REN"/>
-      <xs:enumeration value="RF"/>
-      <xs:enumeration value="RR"/>
-      <xs:enumeration value="RT"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SB"/>
-      <xs:enumeration value="SD"/>
-      <xs:enumeration value="SE"/>
-      <xs:enumeration value="SEA"/>
-      <xs:enumeration value="SF"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SI"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SN"/>
-      <xs:enumeration value="SP"/>
-      <xs:enumeration value="SQ"/>
-      <xs:enumeration value="SRN"/>
-      <xs:enumeration value="SS"/>
-      <xs:enumeration value="STA"/>
-      <xs:enumeration value="SW"/>
-      <xs:enumeration value="SZ"/>
-      <xs:enumeration value="TB"/>
-      <xs:enumeration value="TCR"/>
-      <xs:enumeration value="TE"/>
-      <xs:enumeration value="TF"/>
-      <xs:enumeration value="TI"/>
-      <xs:enumeration value="TIN"/>
-      <xs:enumeration value="TL"/>
-      <xs:enumeration value="TN"/>
-      <xs:enumeration value="TP"/>
-      <xs:enumeration value="UAR"/>
-      <xs:enumeration value="UC"/>
-      <xs:enumeration value="UCN"/>
-      <xs:enumeration value="UN"/>
-      <xs:enumeration value="UO"/>
-      <xs:enumeration value="URI"/>
-      <xs:enumeration value="VA"/>
-      <xs:enumeration value="VC"/>
-      <xs:enumeration value="VGR"/>
-      <xs:enumeration value="VM"/>
-      <xs:enumeration value="VN"/>
-      <xs:enumeration value="VON"/>
-      <xs:enumeration value="VOR"/>
-      <xs:enumeration value="VP"/>
-      <xs:enumeration value="VR"/>
-      <xs:enumeration value="VS"/>
-      <xs:enumeration value="VT"/>
-      <xs:enumeration value="VV"/>
-      <xs:enumeration value="WE"/>
-      <xs:enumeration value="WM"/>
-      <xs:enumeration value="WN"/>
-      <xs:enumeration value="WR"/>
-      <xs:enumeration value="WS"/>
-      <xs:enumeration value="WY"/>
-      <xs:enumeration value="XA"/>
-      <xs:enumeration value="XC"/>
-      <xs:enumeration value="XP"/>
-      <xs:enumeration value="ZZZ"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="ReferenceCodeType">
@@ -1651,15 +69,5 @@
   </xs:complexType>
   <xs:simpleType name="TaxCategoryCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="E"/>
-      <xs:enumeration value="G"/>
-      <xs:enumeration value="K"/>
-      <xs:enumeration value="L"/>
-      <xs:enumeration value="M"/>
-      <xs:enumeration value="O"/>
-      <xs:enumeration value="S"/>
-      <xs:enumeration value="Z"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TaxCategoryCodeType">
@@ -1669,60 +77,5 @@
   </xs:complexType>
   <xs:simpleType name="TaxTypeCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AAA"/>
-      <xs:enumeration value="AAB"/>
-      <xs:enumeration value="AAC"/>
-      <xs:enumeration value="AAD"/>
-      <xs:enumeration value="AAE"/>
-      <xs:enumeration value="AAF"/>
-      <xs:enumeration value="AAG"/>
-      <xs:enumeration value="AAH"/>
-      <xs:enumeration value="AAI"/>
-      <xs:enumeration value="AAJ"/>
-      <xs:enumeration value="AAK"/>
-      <xs:enumeration value="AAL"/>
-      <xs:enumeration value="AAM"/>
-      <xs:enumeration value="ADD"/>
-      <xs:enumeration value="BOL"/>
-      <xs:enumeration value="CAP"/>
-      <xs:enumeration value="CAR"/>
-      <xs:enumeration value="COC"/>
-      <xs:enumeration value="CST"/>
-      <xs:enumeration value="CUD"/>
-      <xs:enumeration value="CVD"/>
-      <xs:enumeration value="ENV"/>
-      <xs:enumeration value="EXC"/>
-      <xs:enumeration value="EXP"/>
-      <xs:enumeration value="FET"/>
-      <xs:enumeration value="FRE"/>
-      <xs:enumeration value="GCN"/>
-      <xs:enumeration value="GST"/>
-      <xs:enumeration value="ILL"/>
-      <xs:enumeration value="IMP"/>
-      <xs:enumeration value="IND"/>
-      <xs:enumeration value="LAC"/>
-      <xs:enumeration value="LCN"/>
-      <xs:enumeration value="LDP"/>
-      <xs:enumeration value="LOC"/>
-      <xs:enumeration value="LST"/>
-      <xs:enumeration value="MCA"/>
-      <xs:enumeration value="MCD"/>
-      <xs:enumeration value="OTH"/>
-      <xs:enumeration value="PDB"/>
-      <xs:enumeration value="PDC"/>
-      <xs:enumeration value="PRF"/>
-      <xs:enumeration value="SCN"/>
-      <xs:enumeration value="SSS"/>
-      <xs:enumeration value="STT"/>
-      <xs:enumeration value="SUP"/>
-      <xs:enumeration value="SUR"/>
-      <xs:enumeration value="SWT"/>
-      <xs:enumeration value="TAC"/>
-      <xs:enumeration value="TOT"/>
-      <xs:enumeration value="TOX"/>
-      <xs:enumeration value="TTA"/>
-      <xs:enumeration value="VAD"/>
-      <xs:enumeration value="VAT"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TaxTypeCodeType">
@@ -1732,9 +85,5 @@
   </xs:complexType>
   <xs:simpleType name="TimeReferenceCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="5"/>
-      <xs:enumeration value="29"/>
-      <xs:enumeration value="72"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TimeReferenceCodeType">
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd	(revision 8504)
@@ -78,5 +78,5 @@
       <xs:element name="InvoiceCurrencyCode" type="qdt:CurrencyCodeType"/>
       <xs:element name="PayeeTradeParty" type="ram:TradePartyType" minOccurs="0"/>
-      <xs:element name="SpecifiedTradeSettlementPaymentMeans" type="ram:TradeSettlementPaymentMeansType" minOccurs="0"/>
+      <xs:element name="SpecifiedTradeSettlementPaymentMeans" type="ram:TradeSettlementPaymentMeansType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="ApplicableTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
       <xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
@@ -84,5 +84,5 @@
       <xs:element name="SpecifiedTradePaymentTerms" type="ram:TradePaymentTermsType" minOccurs="0"/>
       <xs:element name="SpecifiedTradeSettlementHeaderMonetarySummation" type="ram:TradeSettlementHeaderMonetarySummationType"/>
-      <xs:element name="InvoiceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
+      <xs:element name="InvoiceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0"/>
     </xs:sequence>
@@ -221,5 +221,5 @@
   <xs:complexType name="TradeCountryType">
     <xs:sequence>
-      <xs:element name="ID" type="qdt:CountryIDType" minOccurs="0"/>
+      <xs:element name="ID" type="qdt:CountryIDType"/>
     </xs:sequence>
   </xs:complexType>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EN16931_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd	(revision 8504)
@@ -3,6 +3,5 @@
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
-    elementFormDefault="qualified"
-    version="100.D16B">
+    elementFormDefault="qualified">
   <xs:complexType name="AmountType">
     <xs:simpleContent>
@@ -24,5 +23,5 @@
       <xs:extension base="xs:token">
         <xs:attribute name="listID" type="xs:token" use="optional"/>
-        <xs:attribute name="listVersionID" type="xs:token" use="optional"/>
+        <xs:attribute name="listVersionID" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
@@ -57,5 +56,5 @@
     <xs:simpleContent>
       <xs:extension base="xs:token">
-        <xs:attribute name="schemeID" type="xs:token" use="optional"/>
+        <xs:attribute name="schemeID" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
@@ -74,5 +73,5 @@
     <xs:simpleContent>
       <xs:extension base="xs:decimal">
-        <xs:attribute name="unitCode" type="xs:token" use="optional"/>
+        <xs:attribute name="unitCode" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd	(revision 8504)
@@ -2,19 +2,8 @@
 <xs:schema xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
-    xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
     targetNamespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
-    elementFormDefault="qualified"
-    version="100.D16B">
-  <xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
+    elementFormDefault="qualified">
   <xs:simpleType name="AccountingAccountTypeCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="1"/>
-      <xs:enumeration value="2"/>
-      <xs:enumeration value="3"/>
-      <xs:enumeration value="4"/>
-      <xs:enumeration value="5"/>
-      <xs:enumeration value="6"/>
-      <xs:enumeration value="7"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="AccountingAccountTypeCodeType">
@@ -24,202 +13,5 @@
   </xs:complexType>
   <xs:simpleType name="AllowanceChargeReasonCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AA"/>
-      <xs:enumeration value="AAA"/>
-      <xs:enumeration value="AAC"/>
-      <xs:enumeration value="AAD"/>
-      <xs:enumeration value="AAE"/>
-      <xs:enumeration value="AAF"/>
-      <xs:enumeration value="AAH"/>
-      <xs:enumeration value="AAI"/>
-      <xs:enumeration value="AAS"/>
-      <xs:enumeration value="AAT"/>
-      <xs:enumeration value="AAV"/>
-      <xs:enumeration value="AAY"/>
-      <xs:enumeration value="AAZ"/>
-      <xs:enumeration value="ABA"/>
-      <xs:enumeration value="ABB"/>
-      <xs:enumeration value="ABC"/>
-      <xs:enumeration value="ABD"/>
-      <xs:enumeration value="ABF"/>
-      <xs:enumeration value="ABK"/>
-      <xs:enumeration value="ABL"/>
-      <xs:enumeration value="ABN"/>
-      <xs:enumeration value="ABR"/>
-      <xs:enumeration value="ABS"/>
-      <xs:enumeration value="ABT"/>
-      <xs:enumeration value="ABU"/>
-      <xs:enumeration value="ACF"/>
-      <xs:enumeration value="ACG"/>
-      <xs:enumeration value="ACH"/>
-      <xs:enumeration value="ACI"/>
-      <xs:enumeration value="ACJ"/>
-      <xs:enumeration value="ACK"/>
-      <xs:enumeration value="ACL"/>
-      <xs:enumeration value="ACM"/>
-      <xs:enumeration value="ACS"/>
-      <xs:enumeration value="ADC"/>
-      <xs:enumeration value="ADE"/>
-      <xs:enumeration value="ADJ"/>
-      <xs:enumeration value="ADK"/>
-      <xs:enumeration value="ADL"/>
-      <xs:enumeration value="ADM"/>
-      <xs:enumeration value="ADN"/>
-      <xs:enumeration value="ADO"/>
-      <xs:enumeration value="ADP"/>
-      <xs:enumeration value="ADQ"/>
-      <xs:enumeration value="ADR"/>
-      <xs:enumeration value="ADT"/>
-      <xs:enumeration value="ADW"/>
-      <xs:enumeration value="ADY"/>
-      <xs:enumeration value="ADZ"/>
-      <xs:enumeration value="AEA"/>
-      <xs:enumeration value="AEB"/>
-      <xs:enumeration value="AEC"/>
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AEF"/>
-      <xs:enumeration value="AEH"/>
-      <xs:enumeration value="AEI"/>
-      <xs:enumeration value="AEJ"/>
-      <xs:enumeration value="AEK"/>
-      <xs:enumeration value="AEL"/>
-      <xs:enumeration value="AEM"/>
-      <xs:enumeration value="AEN"/>
-      <xs:enumeration value="AEO"/>
-      <xs:enumeration value="AEP"/>
-      <xs:enumeration value="AES"/>
-      <xs:enumeration value="AET"/>
-      <xs:enumeration value="AEU"/>
-      <xs:enumeration value="AEV"/>
-      <xs:enumeration value="AEW"/>
-      <xs:enumeration value="AEX"/>
-      <xs:enumeration value="AEY"/>
-      <xs:enumeration value="AEZ"/>
-      <xs:enumeration value="AJ"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CAB"/>
-      <xs:enumeration value="CAD"/>
-      <xs:enumeration value="CAE"/>
-      <xs:enumeration value="CAF"/>
-      <xs:enumeration value="CAI"/>
-      <xs:enumeration value="CAJ"/>
-      <xs:enumeration value="CAK"/>
-      <xs:enumeration value="CAL"/>
-      <xs:enumeration value="CAM"/>
-      <xs:enumeration value="CAN"/>
-      <xs:enumeration value="CAO"/>
-      <xs:enumeration value="CAP"/>
-      <xs:enumeration value="CAQ"/>
-      <xs:enumeration value="CAR"/>
-      <xs:enumeration value="CAS"/>
-      <xs:enumeration value="CAT"/>
-      <xs:enumeration value="CAU"/>
-      <xs:enumeration value="CAV"/>
-      <xs:enumeration value="CAW"/>
-      <xs:enumeration value="CAX"/>
-      <xs:enumeration value="CAY"/>
-      <xs:enumeration value="CAZ"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CS"/>
-      <xs:enumeration value="CT"/>
-      <xs:enumeration value="DAB"/>
-      <xs:enumeration value="DAC"/>
-      <xs:enumeration value="DAD"/>
-      <xs:enumeration value="DAF"/>
-      <xs:enumeration value="DAG"/>
-      <xs:enumeration value="DAH"/>
-      <xs:enumeration value="DAI"/>
-      <xs:enumeration value="DAJ"/>
-      <xs:enumeration value="DAK"/>
-      <xs:enumeration value="DAL"/>
-      <xs:enumeration value="DAM"/>
-      <xs:enumeration value="DAN"/>
-      <xs:enumeration value="DAO"/>
-      <xs:enumeration value="DAP"/>
-      <xs:enumeration value="DAQ"/>
-      <xs:enumeration value="DL"/>
-      <xs:enumeration value="EG"/>
-      <xs:enumeration value="EP"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="FAA"/>
-      <xs:enumeration value="FAB"/>
-      <xs:enumeration value="FAC"/>
-      <xs:enumeration value="FC"/>
-      <xs:enumeration value="FH"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="GAA"/>
-      <xs:enumeration value="HAA"/>
-      <xs:enumeration value="HD"/>
-      <xs:enumeration value="HH"/>
-      <xs:enumeration value="IAA"/>
-      <xs:enumeration value="IAB"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IF"/>
-      <xs:enumeration value="IR"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="KO"/>
-      <xs:enumeration value="L1"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LAA"/>
-      <xs:enumeration value="LAB"/>
-      <xs:enumeration value="LF"/>
-      <xs:enumeration value="MAE"/>
-      <xs:enumeration value="MI"/>
-      <xs:enumeration value="ML"/>
-      <xs:enumeration value="NAA"/>
-      <xs:enumeration value="OA"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PAA"/>
-      <xs:enumeration value="PC"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="RAB"/>
-      <xs:enumeration value="RAC"/>
-      <xs:enumeration value="RAD"/>
-      <xs:enumeration value="RAF"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="RF"/>
-      <xs:enumeration value="RH"/>
-      <xs:enumeration value="RV"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SAA"/>
-      <xs:enumeration value="SAD"/>
-      <xs:enumeration value="SAE"/>
-      <xs:enumeration value="SAI"/>
-      <xs:enumeration value="SG"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SU"/>
-      <xs:enumeration value="TAB"/>
-      <xs:enumeration value="TAC"/>
-      <xs:enumeration value="TT"/>
-      <xs:enumeration value="TV"/>
-      <xs:enumeration value="V1"/>
-      <xs:enumeration value="V2"/>
-      <xs:enumeration value="WH"/>
-      <xs:enumeration value="XAA"/>
-      <xs:enumeration value="YY"/>
-      <xs:enumeration value="ZZZ"/>
-      <xs:enumeration value="41"/>
-      <xs:enumeration value="42"/>
-      <xs:enumeration value="60"/>
-      <xs:enumeration value="62"/>
-      <xs:enumeration value="63"/>
-      <xs:enumeration value="64"/>
-      <xs:enumeration value="65"/>
-      <xs:enumeration value="66"/>
-      <xs:enumeration value="67"/>
-      <xs:enumeration value="68"/>
-      <xs:enumeration value="70"/>
-      <xs:enumeration value="71"/>
-      <xs:enumeration value="88"/>
-      <xs:enumeration value="95"/>
-      <xs:enumeration value="100"/>
-      <xs:enumeration value="102"/>
-      <xs:enumeration value="103"/>
-      <xs:enumeration value="104"/>
-      <xs:enumeration value="105"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="AllowanceChargeReasonCodeType">
@@ -237,257 +29,5 @@
   </xs:complexType>
   <xs:simpleType name="CountryIDContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="1A"/>
-      <xs:enumeration value="AD"/>
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="AF"/>
-      <xs:enumeration value="AG"/>
-      <xs:enumeration value="AI"/>
-      <xs:enumeration value="AL"/>
-      <xs:enumeration value="AM"/>
-      <xs:enumeration value="AO"/>
-      <xs:enumeration value="AQ"/>
-      <xs:enumeration value="AR"/>
-      <xs:enumeration value="AS"/>
-      <xs:enumeration value="AT"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="AW"/>
-      <xs:enumeration value="AX"/>
-      <xs:enumeration value="AZ"/>
-      <xs:enumeration value="BA"/>
-      <xs:enumeration value="BB"/>
-      <xs:enumeration value="BD"/>
-      <xs:enumeration value="BE"/>
-      <xs:enumeration value="BF"/>
-      <xs:enumeration value="BG"/>
-      <xs:enumeration value="BH"/>
-      <xs:enumeration value="BI"/>
-      <xs:enumeration value="BJ"/>
-      <xs:enumeration value="BL"/>
-      <xs:enumeration value="BM"/>
-      <xs:enumeration value="BN"/>
-      <xs:enumeration value="BO"/>
-      <xs:enumeration value="BQ"/>
-      <xs:enumeration value="BR"/>
-      <xs:enumeration value="BS"/>
-      <xs:enumeration value="BT"/>
-      <xs:enumeration value="BV"/>
-      <xs:enumeration value="BW"/>
-      <xs:enumeration value="BY"/>
-      <xs:enumeration value="BZ"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CC"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CF"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CH"/>
-      <xs:enumeration value="CI"/>
-      <xs:enumeration value="CK"/>
-      <xs:enumeration value="CL"/>
-      <xs:enumeration value="CM"/>
-      <xs:enumeration value="CN"/>
-      <xs:enumeration value="CO"/>
-      <xs:enumeration value="CR"/>
-      <xs:enumeration value="CU"/>
-      <xs:enumeration value="CV"/>
-      <xs:enumeration value="CW"/>
-      <xs:enumeration value="CX"/>
-      <xs:enumeration value="CY"/>
-      <xs:enumeration value="CZ"/>
-      <xs:enumeration value="DE"/>
-      <xs:enumeration value="DJ"/>
-      <xs:enumeration value="DK"/>
-      <xs:enumeration value="DM"/>
-      <xs:enumeration value="DO"/>
-      <xs:enumeration value="DZ"/>
-      <xs:enumeration value="EC"/>
-      <xs:enumeration value="EE"/>
-      <xs:enumeration value="EG"/>
-      <xs:enumeration value="EH"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="ES"/>
-      <xs:enumeration value="ET"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="FJ"/>
-      <xs:enumeration value="FK"/>
-      <xs:enumeration value="FM"/>
-      <xs:enumeration value="FO"/>
-      <xs:enumeration value="FR"/>
-      <xs:enumeration value="GA"/>
-      <xs:enumeration value="GB"/>
-      <xs:enumeration value="GD"/>
-      <xs:enumeration value="GE"/>
-      <xs:enumeration value="GF"/>
-      <xs:enumeration value="GG"/>
-      <xs:enumeration value="GH"/>
-      <xs:enumeration value="GI"/>
-      <xs:enumeration value="GL"/>
-      <xs:enumeration value="GM"/>
-      <xs:enumeration value="GN"/>
-      <xs:enumeration value="GP"/>
-      <xs:enumeration value="GQ"/>
-      <xs:enumeration value="GR"/>
-      <xs:enumeration value="GS"/>
-      <xs:enumeration value="GT"/>
-      <xs:enumeration value="GU"/>
-      <xs:enumeration value="GW"/>
-      <xs:enumeration value="GY"/>
-      <xs:enumeration value="HK"/>
-      <xs:enumeration value="HM"/>
-      <xs:enumeration value="HN"/>
-      <xs:enumeration value="HR"/>
-      <xs:enumeration value="HT"/>
-      <xs:enumeration value="HU"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IE"/>
-      <xs:enumeration value="IL"/>
-      <xs:enumeration value="IM"/>
-      <xs:enumeration value="IN"/>
-      <xs:enumeration value="IO"/>
-      <xs:enumeration value="IQ"/>
-      <xs:enumeration value="IR"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="IT"/>
-      <xs:enumeration value="JE"/>
-      <xs:enumeration value="JM"/>
-      <xs:enumeration value="JO"/>
-      <xs:enumeration value="JP"/>
-      <xs:enumeration value="KE"/>
-      <xs:enumeration value="KG"/>
-      <xs:enumeration value="KH"/>
-      <xs:enumeration value="KI"/>
-      <xs:enumeration value="KM"/>
-      <xs:enumeration value="KN"/>
-      <xs:enumeration value="KP"/>
-      <xs:enumeration value="KR"/>
-      <xs:enumeration value="KW"/>
-      <xs:enumeration value="KY"/>
-      <xs:enumeration value="KZ"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LB"/>
-      <xs:enumeration value="LC"/>
-      <xs:enumeration value="LI"/>
-      <xs:enumeration value="LK"/>
-      <xs:enumeration value="LR"/>
-      <xs:enumeration value="LS"/>
-      <xs:enumeration value="LT"/>
-      <xs:enumeration value="LU"/>
-      <xs:enumeration value="LV"/>
-      <xs:enumeration value="LY"/>
-      <xs:enumeration value="MA"/>
-      <xs:enumeration value="MC"/>
-      <xs:enumeration value="MD"/>
-      <xs:enumeration value="ME"/>
-      <xs:enumeration value="MF"/>
-      <xs:enumeration value="MG"/>
-      <xs:enumeration value="MH"/>
-      <xs:enumeration value="MK"/>
-      <xs:enumeration value="ML"/>
-      <xs:enumeration value="MM"/>
-      <xs:enumeration value="MN"/>
-      <xs:enumeration value="MO"/>
-      <xs:enumeration value="MP"/>
-      <xs:enumeration value="MQ"/>
-      <xs:enumeration value="MR"/>
-      <xs:enumeration value="MS"/>
-      <xs:enumeration value="MT"/>
-      <xs:enumeration value="MU"/>
-      <xs:enumeration value="MV"/>
-      <xs:enumeration value="MW"/>
-      <xs:enumeration value="MX"/>
-      <xs:enumeration value="MY"/>
-      <xs:enumeration value="MZ"/>
-      <xs:enumeration value="NA"/>
-      <xs:enumeration value="NC"/>
-      <xs:enumeration value="NE"/>
-      <xs:enumeration value="NF"/>
-      <xs:enumeration value="NG"/>
-      <xs:enumeration value="NI"/>
-      <xs:enumeration value="NL"/>
-      <xs:enumeration value="NO"/>
-      <xs:enumeration value="NP"/>
-      <xs:enumeration value="NR"/>
-      <xs:enumeration value="NU"/>
-      <xs:enumeration value="NZ"/>
-      <xs:enumeration value="OM"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PE"/>
-      <xs:enumeration value="PF"/>
-      <xs:enumeration value="PG"/>
-      <xs:enumeration value="PH"/>
-      <xs:enumeration value="PK"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="PM"/>
-      <xs:enumeration value="PN"/>
-      <xs:enumeration value="PR"/>
-      <xs:enumeration value="PS"/>
-      <xs:enumeration value="PT"/>
-      <xs:enumeration value="PW"/>
-      <xs:enumeration value="PY"/>
-      <xs:enumeration value="QA"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="RO"/>
-      <xs:enumeration value="RS"/>
-      <xs:enumeration value="RU"/>
-      <xs:enumeration value="RW"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SB"/>
-      <xs:enumeration value="SC"/>
-      <xs:enumeration value="SD"/>
-      <xs:enumeration value="SE"/>
-      <xs:enumeration value="SG"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SI"/>
-      <xs:enumeration value="SJ"/>
-      <xs:enumeration value="SK"/>
-      <xs:enumeration value="SL"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SN"/>
-      <xs:enumeration value="SO"/>
-      <xs:enumeration value="SR"/>
-      <xs:enumeration value="SS"/>
-      <xs:enumeration value="ST"/>
-      <xs:enumeration value="SV"/>
-      <xs:enumeration value="SX"/>
-      <xs:enumeration value="SY"/>
-      <xs:enumeration value="SZ"/>
-      <xs:enumeration value="TC"/>
-      <xs:enumeration value="TD"/>
-      <xs:enumeration value="TF"/>
-      <xs:enumeration value="TG"/>
-      <xs:enumeration value="TH"/>
-      <xs:enumeration value="TJ"/>
-      <xs:enumeration value="TK"/>
-      <xs:enumeration value="TL"/>
-      <xs:enumeration value="TM"/>
-      <xs:enumeration value="TN"/>
-      <xs:enumeration value="TO"/>
-      <xs:enumeration value="TR"/>
-      <xs:enumeration value="TT"/>
-      <xs:enumeration value="TV"/>
-      <xs:enumeration value="TW"/>
-      <xs:enumeration value="TZ"/>
-      <xs:enumeration value="UA"/>
-      <xs:enumeration value="UG"/>
-      <xs:enumeration value="UM"/>
-      <xs:enumeration value="US"/>
-      <xs:enumeration value="UY"/>
-      <xs:enumeration value="UZ"/>
-      <xs:enumeration value="VA"/>
-      <xs:enumeration value="VC"/>
-      <xs:enumeration value="VE"/>
-      <xs:enumeration value="VG"/>
-      <xs:enumeration value="VI"/>
-      <xs:enumeration value="VN"/>
-      <xs:enumeration value="VU"/>
-      <xs:enumeration value="WF"/>
-      <xs:enumeration value="WS"/>
-      <xs:enumeration value="XI"/>
-      <xs:enumeration value="YE"/>
-      <xs:enumeration value="YT"/>
-      <xs:enumeration value="ZA"/>
-      <xs:enumeration value="ZM"/>
-      <xs:enumeration value="ZW"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="CountryIDType">
@@ -497,185 +37,5 @@
   </xs:complexType>
   <xs:simpleType name="CurrencyCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AFN"/>
-      <xs:enumeration value="ALL"/>
-      <xs:enumeration value="AMD"/>
-      <xs:enumeration value="ANG"/>
-      <xs:enumeration value="AOA"/>
-      <xs:enumeration value="ARS"/>
-      <xs:enumeration value="AUD"/>
-      <xs:enumeration value="AWG"/>
-      <xs:enumeration value="AZN"/>
-      <xs:enumeration value="BAM"/>
-      <xs:enumeration value="BBD"/>
-      <xs:enumeration value="BDT"/>
-      <xs:enumeration value="BGN"/>
-      <xs:enumeration value="BHD"/>
-      <xs:enumeration value="BIF"/>
-      <xs:enumeration value="BMD"/>
-      <xs:enumeration value="BND"/>
-      <xs:enumeration value="BOB"/>
-      <xs:enumeration value="BOV"/>
-      <xs:enumeration value="BRL"/>
-      <xs:enumeration value="BSD"/>
-      <xs:enumeration value="BTN"/>
-      <xs:enumeration value="BWP"/>
-      <xs:enumeration value="BYN"/>
-      <xs:enumeration value="BZD"/>
-      <xs:enumeration value="CAD"/>
-      <xs:enumeration value="CDF"/>
-      <xs:enumeration value="CHE"/>
-      <xs:enumeration value="CHF"/>
-      <xs:enumeration value="CHW"/>
-      <xs:enumeration value="CLF"/>
-      <xs:enumeration value="CLP"/>
-      <xs:enumeration value="CNY"/>
-      <xs:enumeration value="COP"/>
-      <xs:enumeration value="COU"/>
-      <xs:enumeration value="CRC"/>
-      <xs:enumeration value="CUC"/>
-      <xs:enumeration value="CUP"/>
-      <xs:enumeration value="CVE"/>
-      <xs:enumeration value="CZK"/>
-      <xs:enumeration value="DJF"/>
-      <xs:enumeration value="DKK"/>
-      <xs:enumeration value="DOP"/>
-      <xs:enumeration value="DZD"/>
-      <xs:enumeration value="EGP"/>
-      <xs:enumeration value="ERN"/>
-      <xs:enumeration value="ETB"/>
-      <xs:enumeration value="EUR"/>
-      <xs:enumeration value="FJD"/>
-      <xs:enumeration value="FKP"/>
-      <xs:enumeration value="GBP"/>
-      <xs:enumeration value="GEL"/>
-      <xs:enumeration value="GHS"/>
-      <xs:enumeration value="GIP"/>
-      <xs:enumeration value="GMD"/>
-      <xs:enumeration value="GNF"/>
-      <xs:enumeration value="GTQ"/>
-      <xs:enumeration value="GYD"/>
-      <xs:enumeration value="HKD"/>
-      <xs:enumeration value="HNL"/>
-      <xs:enumeration value="HRK"/>
-      <xs:enumeration value="HTG"/>
-      <xs:enumeration value="HUF"/>
-      <xs:enumeration value="IDR"/>
-      <xs:enumeration value="ILS"/>
-      <xs:enumeration value="INR"/>
-      <xs:enumeration value="IQD"/>
-      <xs:enumeration value="IRR"/>
-      <xs:enumeration value="ISK"/>
-      <xs:enumeration value="JMD"/>
-      <xs:enumeration value="JOD"/>
-      <xs:enumeration value="JPY"/>
-      <xs:enumeration value="KES"/>
-      <xs:enumeration value="KGS"/>
-      <xs:enumeration value="KHR"/>
-      <xs:enumeration value="KMF"/>
-      <xs:enumeration value="KPW"/>
-      <xs:enumeration value="KRW"/>
-      <xs:enumeration value="KWD"/>
-      <xs:enumeration value="KYD"/>
-      <xs:enumeration value="KZT"/>
-      <xs:enumeration value="LAK"/>
-      <xs:enumeration value="LBP"/>
-      <xs:enumeration value="LKR"/>
-      <xs:enumeration value="LRD"/>
-      <xs:enumeration value="LSL"/>
-      <xs:enumeration value="LYD"/>
-      <xs:enumeration value="MAD"/>
-      <xs:enumeration value="MDL"/>
-      <xs:enumeration value="MGA"/>
-      <xs:enumeration value="MKD"/>
-      <xs:enumeration value="MMK"/>
-      <xs:enumeration value="MNT"/>
-      <xs:enumeration value="MOP"/>
-      <xs:enumeration value="MRU"/>
-      <xs:enumeration value="MUR"/>
-      <xs:enumeration value="MVR"/>
-      <xs:enumeration value="MWK"/>
-      <xs:enumeration value="MXN"/>
-      <xs:enumeration value="MXV"/>
-      <xs:enumeration value="MYR"/>
-      <xs:enumeration value="MZN"/>
-      <xs:enumeration value="NAD"/>
-      <xs:enumeration value="NGN"/>
-      <xs:enumeration value="NIO"/>
-      <xs:enumeration value="NOK"/>
-      <xs:enumeration value="NPR"/>
-      <xs:enumeration value="NZD"/>
-      <xs:enumeration value="OMR"/>
-      <xs:enumeration value="PAB"/>
-      <xs:enumeration value="PEN"/>
-      <xs:enumeration value="PGK"/>
-      <xs:enumeration value="PHP"/>
-      <xs:enumeration value="PKR"/>
-      <xs:enumeration value="PLN"/>
-      <xs:enumeration value="PYG"/>
-      <xs:enumeration value="QAR"/>
-      <xs:enumeration value="RON"/>
-      <xs:enumeration value="RSD"/>
-      <xs:enumeration value="RUB"/>
-      <xs:enumeration value="RWF"/>
-      <xs:enumeration value="SAR"/>
-      <xs:enumeration value="SBD"/>
-      <xs:enumeration value="SCR"/>
-      <xs:enumeration value="SDG"/>
-      <xs:enumeration value="SEK"/>
-      <xs:enumeration value="SGD"/>
-      <xs:enumeration value="SHP"/>
-      <xs:enumeration value="SLL"/>
-      <xs:enumeration value="SOS"/>
-      <xs:enumeration value="SRD"/>
-      <xs:enumeration value="SSP"/>
-      <xs:enumeration value="STN"/>
-      <xs:enumeration value="SVC"/>
-      <xs:enumeration value="SYP"/>
-      <xs:enumeration value="SZL"/>
-      <xs:enumeration value="THB"/>
-      <xs:enumeration value="TJS"/>
-      <xs:enumeration value="TMT"/>
-      <xs:enumeration value="TND"/>
-      <xs:enumeration value="TOP"/>
-      <xs:enumeration value="TRY"/>
-      <xs:enumeration value="TTD"/>
-      <xs:enumeration value="TWD"/>
-      <xs:enumeration value="TZS"/>
-      <xs:enumeration value="UAH"/>
-      <xs:enumeration value="UGX"/>
-      <xs:enumeration value="USD"/>
-      <xs:enumeration value="USN"/>
-      <xs:enumeration value="UYI"/>
-      <xs:enumeration value="UYU"/>
-      <xs:enumeration value="UYW"/>
-      <xs:enumeration value="UZS"/>
-      <xs:enumeration value="VES"/>
-      <xs:enumeration value="VND"/>
-      <xs:enumeration value="VUV"/>
-      <xs:enumeration value="WST"/>
-      <xs:enumeration value="XAF"/>
-      <xs:enumeration value="XAG"/>
-      <xs:enumeration value="XAU"/>
-      <xs:enumeration value="XBA"/>
-      <xs:enumeration value="XBB"/>
-      <xs:enumeration value="XBC"/>
-      <xs:enumeration value="XBD"/>
-      <xs:enumeration value="XCD"/>
-      <xs:enumeration value="XDR"/>
-      <xs:enumeration value="XOF"/>
-      <xs:enumeration value="XPD"/>
-      <xs:enumeration value="XPF"/>
-      <xs:enumeration value="XPT"/>
-      <xs:enumeration value="XSU"/>
-      <xs:enumeration value="XTS"/>
-      <xs:enumeration value="XUA"/>
-      <xs:enumeration value="XXX"/>
-      <xs:enumeration value="YER"/>
-      <xs:enumeration value="ZAR"/>
-      <xs:enumeration value="ZMW"/>
-      <xs:enumeration value="ZWL"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="CurrencyCodeType">
@@ -685,19 +45,5 @@
   </xs:complexType>
   <xs:simpleType name="DeliveryTermsCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="1"/>
-      <xs:enumeration value="2"/>
-      <xs:enumeration value="CFR"/>
-      <xs:enumeration value="CIF"/>
-      <xs:enumeration value="CIP"/>
-      <xs:enumeration value="CPT"/>
-      <xs:enumeration value="DAP"/>
-      <xs:enumeration value="DAT"/>
-      <xs:enumeration value="DDP"/>
-      <xs:enumeration value="EXW"/>
-      <xs:enumeration value="FAS"/>
-      <xs:enumeration value="FCA"/>
-      <xs:enumeration value="FOB"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="DeliveryTermsCodeType">
@@ -707,801 +53,5 @@
   </xs:complexType>
   <xs:simpleType name="DocumentCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="1"/>
-      <xs:enumeration value="2"/>
-      <xs:enumeration value="3"/>
-      <xs:enumeration value="4"/>
-      <xs:enumeration value="5"/>
-      <xs:enumeration value="6"/>
-      <xs:enumeration value="7"/>
-      <xs:enumeration value="8"/>
-      <xs:enumeration value="9"/>
-      <xs:enumeration value="10"/>
-      <xs:enumeration value="11"/>
-      <xs:enumeration value="12"/>
-      <xs:enumeration value="13"/>
-      <xs:enumeration value="14"/>
-      <xs:enumeration value="15"/>
-      <xs:enumeration value="16"/>
-      <xs:enumeration value="17"/>
-      <xs:enumeration value="18"/>
-      <xs:enumeration value="19"/>
-      <xs:enumeration value="20"/>
-      <xs:enumeration value="21"/>
-      <xs:enumeration value="22"/>
-      <xs:enumeration value="23"/>
-      <xs:enumeration value="24"/>
-      <xs:enumeration value="25"/>
-      <xs:enumeration value="26"/>
-      <xs:enumeration value="27"/>
-      <xs:enumeration value="28"/>
-      <xs:enumeration value="29"/>
-      <xs:enumeration value="30"/>
-      <xs:enumeration value="31"/>
-      <xs:enumeration value="32"/>
-      <xs:enumeration value="33"/>
-      <xs:enumeration value="34"/>
-      <xs:enumeration value="35"/>
-      <xs:enumeration value="36"/>
-      <xs:enumeration value="37"/>
-      <xs:enumeration value="38"/>
-      <xs:enumeration value="39"/>
-      <xs:enumeration value="40"/>
-      <xs:enumeration value="41"/>
-      <xs:enumeration value="42"/>
-      <xs:enumeration value="43"/>
-      <xs:enumeration value="44"/>
-      <xs:enumeration value="45"/>
-      <xs:enumeration value="46"/>
-      <xs:enumeration value="47"/>
-      <xs:enumeration value="48"/>
-      <xs:enumeration value="49"/>
-      <xs:enumeration value="50"/>
-      <xs:enumeration value="51"/>
-      <xs:enumeration value="52"/>
-      <xs:enumeration value="53"/>
-      <xs:enumeration value="54"/>
-      <xs:enumeration value="55"/>
-      <xs:enumeration value="56"/>
-      <xs:enumeration value="57"/>
-      <xs:enumeration value="58"/>
-      <xs:enumeration value="59"/>
-      <xs:enumeration value="60"/>
-      <xs:enumeration value="61"/>
-      <xs:enumeration value="62"/>
-      <xs:enumeration value="63"/>
-      <xs:enumeration value="64"/>
-      <xs:enumeration value="65"/>
-      <xs:enumeration value="66"/>
-      <xs:enumeration value="67"/>
-      <xs:enumeration value="68"/>
-      <xs:enumeration value="69"/>
-      <xs:enumeration value="70"/>
-      <xs:enumeration value="71"/>
-      <xs:enumeration value="72"/>
-      <xs:enumeration value="73"/>
-      <xs:enumeration value="74"/>
-      <xs:enumeration value="75"/>
-      <xs:enumeration value="76"/>
-      <xs:enumeration value="77"/>
-      <xs:enumeration value="78"/>
-      <xs:enumeration value="79"/>
-      <xs:enumeration value="80"/>
-      <xs:enumeration value="81"/>
-      <xs:enumeration value="82"/>
-      <xs:enumeration value="83"/>
-      <xs:enumeration value="84"/>
-      <xs:enumeration value="85"/>
-      <xs:enumeration value="86"/>
-      <xs:enumeration value="87"/>
-      <xs:enumeration value="88"/>
-      <xs:enumeration value="89"/>
-      <xs:enumeration value="90"/>
-      <xs:enumeration value="91"/>
-      <xs:enumeration value="92"/>
-      <xs:enumeration value="93"/>
-      <xs:enumeration value="94"/>
-      <xs:enumeration value="95"/>
-      <xs:enumeration value="96"/>
-      <xs:enumeration value="97"/>
-      <xs:enumeration value="98"/>
-      <xs:enumeration value="99"/>
-      <xs:enumeration value="100"/>
-      <xs:enumeration value="101"/>
-      <xs:enumeration value="102"/>
-      <xs:enumeration value="103"/>
-      <xs:enumeration value="104"/>
-      <xs:enumeration value="105"/>
-      <xs:enumeration value="106"/>
-      <xs:enumeration value="107"/>
-      <xs:enumeration value="108"/>
-      <xs:enumeration value="109"/>
-      <xs:enumeration value="110"/>
-      <xs:enumeration value="111"/>
-      <xs:enumeration value="112"/>
-      <xs:enumeration value="113"/>
-      <xs:enumeration value="114"/>
-      <xs:enumeration value="115"/>
-      <xs:enumeration value="116"/>
-      <xs:enumeration value="117"/>
-      <xs:enumeration value="118"/>
-      <xs:enumeration value="119"/>
-      <xs:enumeration value="120"/>
-      <xs:enumeration value="121"/>
-      <xs:enumeration value="122"/>
-      <xs:enumeration value="123"/>
-      <xs:enumeration value="124"/>
-      <xs:enumeration value="125"/>
-      <xs:enumeration value="126"/>
-      <xs:enumeration value="127"/>
-      <xs:enumeration value="128"/>
-      <xs:enumeration value="129"/>
-      <xs:enumeration value="130"/>
-      <xs:enumeration value="131"/>
-      <xs:enumeration value="132"/>
-      <xs:enumeration value="133"/>
-      <xs:enumeration value="134"/>
-      <xs:enumeration value="135"/>
-      <xs:enumeration value="136"/>
-      <xs:enumeration value="137"/>
-      <xs:enumeration value="138"/>
-      <xs:enumeration value="139"/>
-      <xs:enumeration value="140"/>
-      <xs:enumeration value="141"/>
-      <xs:enumeration value="142"/>
-      <xs:enumeration value="143"/>
-      <xs:enumeration value="144"/>
-      <xs:enumeration value="145"/>
-      <xs:enumeration value="146"/>
-      <xs:enumeration value="147"/>
-      <xs:enumeration value="148"/>
-      <xs:enumeration value="149"/>
-      <xs:enumeration value="150"/>
-      <xs:enumeration value="151"/>
-      <xs:enumeration value="152"/>
-      <xs:enumeration value="153"/>
-      <xs:enumeration value="154"/>
-      <xs:enumeration value="155"/>
-      <xs:enumeration value="156"/>
-      <xs:enumeration value="157"/>
-      <xs:enumeration value="158"/>
-      <xs:enumeration value="159"/>
-      <xs:enumeration value="160"/>
-      <xs:enumeration value="161"/>
-      <xs:enumeration value="162"/>
-      <xs:enumeration value="163"/>
-      <xs:enumeration value="164"/>
-      <xs:enumeration value="165"/>
-      <xs:enumeration value="166"/>
-      <xs:enumeration value="167"/>
-      <xs:enumeration value="168"/>
-      <xs:enumeration value="169"/>
-      <xs:enumeration value="170"/>
-      <xs:enumeration value="171"/>
-      <xs:enumeration value="172"/>
-      <xs:enumeration value="173"/>
-      <xs:enumeration value="174"/>
-      <xs:enumeration value="175"/>
-      <xs:enumeration value="176"/>
-      <xs:enumeration value="177"/>
-      <xs:enumeration value="178"/>
-      <xs:enumeration value="179"/>
-      <xs:enumeration value="180"/>
-      <xs:enumeration value="181"/>
-      <xs:enumeration value="182"/>
-      <xs:enumeration value="183"/>
-      <xs:enumeration value="184"/>
-      <xs:enumeration value="185"/>
-      <xs:enumeration value="186"/>
-      <xs:enumeration value="187"/>
-      <xs:enumeration value="188"/>
-      <xs:enumeration value="189"/>
-      <xs:enumeration value="190"/>
-      <xs:enumeration value="191"/>
-      <xs:enumeration value="192"/>
-      <xs:enumeration value="193"/>
-      <xs:enumeration value="194"/>
-      <xs:enumeration value="195"/>
-      <xs:enumeration value="196"/>
-      <xs:enumeration value="197"/>
-      <xs:enumeration value="198"/>
-      <xs:enumeration value="199"/>
-      <xs:enumeration value="200"/>
-      <xs:enumeration value="201"/>
-      <xs:enumeration value="202"/>
-      <xs:enumeration value="203"/>
-      <xs:enumeration value="204"/>
-      <xs:enumeration value="205"/>
-      <xs:enumeration value="206"/>
-      <xs:enumeration value="207"/>
-      <xs:enumeration value="208"/>
-      <xs:enumeration value="209"/>
-      <xs:enumeration value="210"/>
-      <xs:enumeration value="211"/>
-      <xs:enumeration value="212"/>
-      <xs:enumeration value="213"/>
-      <xs:enumeration value="214"/>
-      <xs:enumeration value="215"/>
-      <xs:enumeration value="216"/>
-      <xs:enumeration value="217"/>
-      <xs:enumeration value="218"/>
-      <xs:enumeration value="219"/>
-      <xs:enumeration value="220"/>
-      <xs:enumeration value="221"/>
-      <xs:enumeration value="222"/>
-      <xs:enumeration value="223"/>
-      <xs:enumeration value="224"/>
-      <xs:enumeration value="225"/>
-      <xs:enumeration value="226"/>
-      <xs:enumeration value="227"/>
-      <xs:enumeration value="228"/>
-      <xs:enumeration value="229"/>
-      <xs:enumeration value="230"/>
-      <xs:enumeration value="231"/>
-      <xs:enumeration value="232"/>
-      <xs:enumeration value="233"/>
-      <xs:enumeration value="234"/>
-      <xs:enumeration value="235"/>
-      <xs:enumeration value="236"/>
-      <xs:enumeration value="237"/>
-      <xs:enumeration value="238"/>
-      <xs:enumeration value="239"/>
-      <xs:enumeration value="240"/>
-      <xs:enumeration value="241"/>
-      <xs:enumeration value="242"/>
-      <xs:enumeration value="243"/>
-      <xs:enumeration value="244"/>
-      <xs:enumeration value="245"/>
-      <xs:enumeration value="246"/>
-      <xs:enumeration value="247"/>
-      <xs:enumeration value="248"/>
-      <xs:enumeration value="249"/>
-      <xs:enumeration value="250"/>
-      <xs:enumeration value="251"/>
-      <xs:enumeration value="252"/>
-      <xs:enumeration value="253"/>
-      <xs:enumeration value="254"/>
-      <xs:enumeration value="255"/>
-      <xs:enumeration value="256"/>
-      <xs:enumeration value="257"/>
-      <xs:enumeration value="258"/>
-      <xs:enumeration value="259"/>
-      <xs:enumeration value="260"/>
-      <xs:enumeration value="261"/>
-      <xs:enumeration value="262"/>
-      <xs:enumeration value="263"/>
-      <xs:enumeration value="264"/>
-      <xs:enumeration value="265"/>
-      <xs:enumeration value="266"/>
-      <xs:enumeration value="267"/>
-      <xs:enumeration value="268"/>
-      <xs:enumeration value="269"/>
-      <xs:enumeration value="270"/>
-      <xs:enumeration value="271"/>
-      <xs:enumeration value="272"/>
-      <xs:enumeration value="273"/>
-      <xs:enumeration value="274"/>
-      <xs:enumeration value="275"/>
-      <xs:enumeration value="276"/>
-      <xs:enumeration value="277"/>
-      <xs:enumeration value="278"/>
-      <xs:enumeration value="279"/>
-      <xs:enumeration value="280"/>
-      <xs:enumeration value="281"/>
-      <xs:enumeration value="282"/>
-      <xs:enumeration value="283"/>
-      <xs:enumeration value="284"/>
-      <xs:enumeration value="285"/>
-      <xs:enumeration value="286"/>
-      <xs:enumeration value="287"/>
-      <xs:enumeration value="288"/>
-      <xs:enumeration value="289"/>
-      <xs:enumeration value="290"/>
-      <xs:enumeration value="291"/>
-      <xs:enumeration value="292"/>
-      <xs:enumeration value="293"/>
-      <xs:enumeration value="294"/>
-      <xs:enumeration value="295"/>
-      <xs:enumeration value="296"/>
-      <xs:enumeration value="297"/>
-      <xs:enumeration value="298"/>
-      <xs:enumeration value="299"/>
-      <xs:enumeration value="300"/>
-      <xs:enumeration value="301"/>
-      <xs:enumeration value="302"/>
-      <xs:enumeration value="303"/>
-      <xs:enumeration value="304"/>
-      <xs:enumeration value="305"/>
-      <xs:enumeration value="306"/>
-      <xs:enumeration value="307"/>
-      <xs:enumeration value="308"/>
-      <xs:enumeration value="309"/>
-      <xs:enumeration value="310"/>
-      <xs:enumeration value="311"/>
-      <xs:enumeration value="312"/>
-      <xs:enumeration value="313"/>
-      <xs:enumeration value="314"/>
-      <xs:enumeration value="315"/>
-      <xs:enumeration value="316"/>
-      <xs:enumeration value="317"/>
-      <xs:enumeration value="318"/>
-      <xs:enumeration value="319"/>
-      <xs:enumeration value="320"/>
-      <xs:enumeration value="321"/>
-      <xs:enumeration value="322"/>
-      <xs:enumeration value="323"/>
-      <xs:enumeration value="324"/>
-      <xs:enumeration value="325"/>
-      <xs:enumeration value="326"/>
-      <xs:enumeration value="327"/>
-      <xs:enumeration value="328"/>
-      <xs:enumeration value="329"/>
-      <xs:enumeration value="330"/>
-      <xs:enumeration value="331"/>
-      <xs:enumeration value="332"/>
-      <xs:enumeration value="333"/>
-      <xs:enumeration value="334"/>
-      <xs:enumeration value="335"/>
-      <xs:enumeration value="336"/>
-      <xs:enumeration value="337"/>
-      <xs:enumeration value="338"/>
-      <xs:enumeration value="339"/>
-      <xs:enumeration value="340"/>
-      <xs:enumeration value="341"/>
-      <xs:enumeration value="342"/>
-      <xs:enumeration value="343"/>
-      <xs:enumeration value="344"/>
-      <xs:enumeration value="345"/>
-      <xs:enumeration value="346"/>
-      <xs:enumeration value="347"/>
-      <xs:enumeration value="348"/>
-      <xs:enumeration value="349"/>
-      <xs:enumeration value="350"/>
-      <xs:enumeration value="351"/>
-      <xs:enumeration value="352"/>
-      <xs:enumeration value="353"/>
-      <xs:enumeration value="354"/>
-      <xs:enumeration value="355"/>
-      <xs:enumeration value="356"/>
-      <xs:enumeration value="357"/>
-      <xs:enumeration value="358"/>
-      <xs:enumeration value="359"/>
-      <xs:enumeration value="360"/>
-      <xs:enumeration value="361"/>
-      <xs:enumeration value="362"/>
-      <xs:enumeration value="363"/>
-      <xs:enumeration value="364"/>
-      <xs:enumeration value="365"/>
-      <xs:enumeration value="366"/>
-      <xs:enumeration value="367"/>
-      <xs:enumeration value="368"/>
-      <xs:enumeration value="369"/>
-      <xs:enumeration value="370"/>
-      <xs:enumeration value="371"/>
-      <xs:enumeration value="372"/>
-      <xs:enumeration value="373"/>
-      <xs:enumeration value="374"/>
-      <xs:enumeration value="375"/>
-      <xs:enumeration value="376"/>
-      <xs:enumeration value="377"/>
-      <xs:enumeration value="378"/>
-      <xs:enumeration value="379"/>
-      <xs:enumeration value="380"/>
-      <xs:enumeration value="381"/>
-      <xs:enumeration value="382"/>
-      <xs:enumeration value="383"/>
-      <xs:enumeration value="384"/>
-      <xs:enumeration value="385"/>
-      <xs:enumeration value="386"/>
-      <xs:enumeration value="387"/>
-      <xs:enumeration value="388"/>
-      <xs:enumeration value="389"/>
-      <xs:enumeration value="390"/>
-      <xs:enumeration value="391"/>
-      <xs:enumeration value="392"/>
-      <xs:enumeration value="393"/>
-      <xs:enumeration value="394"/>
-      <xs:enumeration value="395"/>
-      <xs:enumeration value="396"/>
-      <xs:enumeration value="397"/>
-      <xs:enumeration value="398"/>
-      <xs:enumeration value="399"/>
-      <xs:enumeration value="400"/>
-      <xs:enumeration value="401"/>
-      <xs:enumeration value="402"/>
-      <xs:enumeration value="403"/>
-      <xs:enumeration value="404"/>
-      <xs:enumeration value="405"/>
-      <xs:enumeration value="406"/>
-      <xs:enumeration value="407"/>
-      <xs:enumeration value="408"/>
-      <xs:enumeration value="409"/>
-      <xs:enumeration value="410"/>
-      <xs:enumeration value="411"/>
-      <xs:enumeration value="412"/>
-      <xs:enumeration value="413"/>
-      <xs:enumeration value="414"/>
-      <xs:enumeration value="415"/>
-      <xs:enumeration value="416"/>
-      <xs:enumeration value="417"/>
-      <xs:enumeration value="418"/>
-      <xs:enumeration value="419"/>
-      <xs:enumeration value="420"/>
-      <xs:enumeration value="421"/>
-      <xs:enumeration value="422"/>
-      <xs:enumeration value="423"/>
-      <xs:enumeration value="424"/>
-      <xs:enumeration value="425"/>
-      <xs:enumeration value="426"/>
-      <xs:enumeration value="427"/>
-      <xs:enumeration value="428"/>
-      <xs:enumeration value="429"/>
-      <xs:enumeration value="430"/>
-      <xs:enumeration value="431"/>
-      <xs:enumeration value="432"/>
-      <xs:enumeration value="433"/>
-      <xs:enumeration value="434"/>
-      <xs:enumeration value="435"/>
-      <xs:enumeration value="436"/>
-      <xs:enumeration value="437"/>
-      <xs:enumeration value="438"/>
-      <xs:enumeration value="439"/>
-      <xs:enumeration value="440"/>
-      <xs:enumeration value="441"/>
-      <xs:enumeration value="442"/>
-      <xs:enumeration value="443"/>
-      <xs:enumeration value="444"/>
-      <xs:enumeration value="445"/>
-      <xs:enumeration value="446"/>
-      <xs:enumeration value="447"/>
-      <xs:enumeration value="448"/>
-      <xs:enumeration value="449"/>
-      <xs:enumeration value="450"/>
-      <xs:enumeration value="451"/>
-      <xs:enumeration value="452"/>
-      <xs:enumeration value="453"/>
-      <xs:enumeration value="454"/>
-      <xs:enumeration value="455"/>
-      <xs:enumeration value="456"/>
-      <xs:enumeration value="457"/>
-      <xs:enumeration value="458"/>
-      <xs:enumeration value="459"/>
-      <xs:enumeration value="460"/>
-      <xs:enumeration value="461"/>
-      <xs:enumeration value="462"/>
-      <xs:enumeration value="463"/>
-      <xs:enumeration value="464"/>
-      <xs:enumeration value="465"/>
-      <xs:enumeration value="466"/>
-      <xs:enumeration value="467"/>
-      <xs:enumeration value="468"/>
-      <xs:enumeration value="469"/>
-      <xs:enumeration value="470"/>
-      <xs:enumeration value="481"/>
-      <xs:enumeration value="482"/>
-      <xs:enumeration value="483"/>
-      <xs:enumeration value="484"/>
-      <xs:enumeration value="485"/>
-      <xs:enumeration value="486"/>
-      <xs:enumeration value="487"/>
-      <xs:enumeration value="488"/>
-      <xs:enumeration value="489"/>
-      <xs:enumeration value="490"/>
-      <xs:enumeration value="491"/>
-      <xs:enumeration value="493"/>
-      <xs:enumeration value="494"/>
-      <xs:enumeration value="495"/>
-      <xs:enumeration value="496"/>
-      <xs:enumeration value="497"/>
-      <xs:enumeration value="498"/>
-      <xs:enumeration value="499"/>
-      <xs:enumeration value="520"/>
-      <xs:enumeration value="521"/>
-      <xs:enumeration value="522"/>
-      <xs:enumeration value="523"/>
-      <xs:enumeration value="524"/>
-      <xs:enumeration value="525"/>
-      <xs:enumeration value="526"/>
-      <xs:enumeration value="527"/>
-      <xs:enumeration value="528"/>
-      <xs:enumeration value="529"/>
-      <xs:enumeration value="530"/>
-      <xs:enumeration value="531"/>
-      <xs:enumeration value="532"/>
-      <xs:enumeration value="533"/>
-      <xs:enumeration value="534"/>
-      <xs:enumeration value="535"/>
-      <xs:enumeration value="536"/>
-      <xs:enumeration value="537"/>
-      <xs:enumeration value="538"/>
-      <xs:enumeration value="539"/>
-      <xs:enumeration value="550"/>
-      <xs:enumeration value="551"/>
-      <xs:enumeration value="552"/>
-      <xs:enumeration value="553"/>
-      <xs:enumeration value="554"/>
-      <xs:enumeration value="575"/>
-      <xs:enumeration value="576"/>
-      <xs:enumeration value="577"/>
-      <xs:enumeration value="578"/>
-      <xs:enumeration value="579"/>
-      <xs:enumeration value="580"/>
-      <xs:enumeration value="581"/>
-      <xs:enumeration value="582"/>
-      <xs:enumeration value="583"/>
-      <xs:enumeration value="584"/>
-      <xs:enumeration value="585"/>
-      <xs:enumeration value="586"/>
-      <xs:enumeration value="587"/>
-      <xs:enumeration value="588"/>
-      <xs:enumeration value="589"/>
-      <xs:enumeration value="610"/>
-      <xs:enumeration value="621"/>
-      <xs:enumeration value="622"/>
-      <xs:enumeration value="623"/>
-      <xs:enumeration value="624"/>
-      <xs:enumeration value="625"/>
-      <xs:enumeration value="626"/>
-      <xs:enumeration value="627"/>
-      <xs:enumeration value="628"/>
-      <xs:enumeration value="629"/>
-      <xs:enumeration value="630"/>
-      <xs:enumeration value="631"/>
-      <xs:enumeration value="632"/>
-      <xs:enumeration value="633"/>
-      <xs:enumeration value="634"/>
-      <xs:enumeration value="635"/>
-      <xs:enumeration value="636"/>
-      <xs:enumeration value="637"/>
-      <xs:enumeration value="638"/>
-      <xs:enumeration value="639"/>
-      <xs:enumeration value="640"/>
-      <xs:enumeration value="641"/>
-      <xs:enumeration value="642"/>
-      <xs:enumeration value="643"/>
-      <xs:enumeration value="644"/>
-      <xs:enumeration value="645"/>
-      <xs:enumeration value="646"/>
-      <xs:enumeration value="647"/>
-      <xs:enumeration value="648"/>
-      <xs:enumeration value="649"/>
-      <xs:enumeration value="650"/>
-      <xs:enumeration value="651"/>
-      <xs:enumeration value="652"/>
-      <xs:enumeration value="653"/>
-      <xs:enumeration value="654"/>
-      <xs:enumeration value="655"/>
-      <xs:enumeration value="656"/>
-      <xs:enumeration value="657"/>
-      <xs:enumeration value="658"/>
-      <xs:enumeration value="659"/>
-      <xs:enumeration value="700"/>
-      <xs:enumeration value="701"/>
-      <xs:enumeration value="702"/>
-      <xs:enumeration value="703"/>
-      <xs:enumeration value="704"/>
-      <xs:enumeration value="705"/>
-      <xs:enumeration value="706"/>
-      <xs:enumeration value="707"/>
-      <xs:enumeration value="708"/>
-      <xs:enumeration value="709"/>
-      <xs:enumeration value="710"/>
-      <xs:enumeration value="711"/>
-      <xs:enumeration value="712"/>
-      <xs:enumeration value="713"/>
-      <xs:enumeration value="714"/>
-      <xs:enumeration value="715"/>
-      <xs:enumeration value="716"/>
-      <xs:enumeration value="717"/>
-      <xs:enumeration value="718"/>
-      <xs:enumeration value="719"/>
-      <xs:enumeration value="720"/>
-      <xs:enumeration value="721"/>
-      <xs:enumeration value="722"/>
-      <xs:enumeration value="723"/>
-      <xs:enumeration value="724"/>
-      <xs:enumeration value="725"/>
-      <xs:enumeration value="726"/>
-      <xs:enumeration value="727"/>
-      <xs:enumeration value="728"/>
-      <xs:enumeration value="729"/>
-      <xs:enumeration value="730"/>
-      <xs:enumeration value="731"/>
-      <xs:enumeration value="732"/>
-      <xs:enumeration value="733"/>
-      <xs:enumeration value="734"/>
-      <xs:enumeration value="735"/>
-      <xs:enumeration value="736"/>
-      <xs:enumeration value="737"/>
-      <xs:enumeration value="738"/>
-      <xs:enumeration value="739"/>
-      <xs:enumeration value="740"/>
-      <xs:enumeration value="741"/>
-      <xs:enumeration value="742"/>
-      <xs:enumeration value="743"/>
-      <xs:enumeration value="744"/>
-      <xs:enumeration value="745"/>
-      <xs:enumeration value="746"/>
-      <xs:enumeration value="747"/>
-      <xs:enumeration value="748"/>
-      <xs:enumeration value="749"/>
-      <xs:enumeration value="750"/>
-      <xs:enumeration value="751"/>
-      <xs:enumeration value="752"/>
-      <xs:enumeration value="753"/>
-      <xs:enumeration value="754"/>
-      <xs:enumeration value="755"/>
-      <xs:enumeration value="756"/>
-      <xs:enumeration value="757"/>
-      <xs:enumeration value="758"/>
-      <xs:enumeration value="759"/>
-      <xs:enumeration value="760"/>
-      <xs:enumeration value="761"/>
-      <xs:enumeration value="762"/>
-      <xs:enumeration value="763"/>
-      <xs:enumeration value="764"/>
-      <xs:enumeration value="765"/>
-      <xs:enumeration value="766"/>
-      <xs:enumeration value="767"/>
-      <xs:enumeration value="768"/>
-      <xs:enumeration value="769"/>
-      <xs:enumeration value="770"/>
-      <xs:enumeration value="771"/>
-      <xs:enumeration value="772"/>
-      <xs:enumeration value="773"/>
-      <xs:enumeration value="774"/>
-      <xs:enumeration value="775"/>
-      <xs:enumeration value="776"/>
-      <xs:enumeration value="777"/>
-      <xs:enumeration value="778"/>
-      <xs:enumeration value="779"/>
-      <xs:enumeration value="780"/>
-      <xs:enumeration value="781"/>
-      <xs:enumeration value="782"/>
-      <xs:enumeration value="783"/>
-      <xs:enumeration value="784"/>
-      <xs:enumeration value="785"/>
-      <xs:enumeration value="786"/>
-      <xs:enumeration value="787"/>
-      <xs:enumeration value="788"/>
-      <xs:enumeration value="789"/>
-      <xs:enumeration value="790"/>
-      <xs:enumeration value="791"/>
-      <xs:enumeration value="792"/>
-      <xs:enumeration value="793"/>
-      <xs:enumeration value="794"/>
-      <xs:enumeration value="795"/>
-      <xs:enumeration value="796"/>
-      <xs:enumeration value="797"/>
-      <xs:enumeration value="798"/>
-      <xs:enumeration value="799"/>
-      <xs:enumeration value="810"/>
-      <xs:enumeration value="811"/>
-      <xs:enumeration value="812"/>
-      <xs:enumeration value="813"/>
-      <xs:enumeration value="814"/>
-      <xs:enumeration value="815"/>
-      <xs:enumeration value="816"/>
-      <xs:enumeration value="817"/>
-      <xs:enumeration value="818"/>
-      <xs:enumeration value="819"/>
-      <xs:enumeration value="820"/>
-      <xs:enumeration value="821"/>
-      <xs:enumeration value="822"/>
-      <xs:enumeration value="823"/>
-      <xs:enumeration value="824"/>
-      <xs:enumeration value="825"/>
-      <xs:enumeration value="826"/>
-      <xs:enumeration value="827"/>
-      <xs:enumeration value="828"/>
-      <xs:enumeration value="829"/>
-      <xs:enumeration value="830"/>
-      <xs:enumeration value="831"/>
-      <xs:enumeration value="832"/>
-      <xs:enumeration value="833"/>
-      <xs:enumeration value="834"/>
-      <xs:enumeration value="835"/>
-      <xs:enumeration value="836"/>
-      <xs:enumeration value="837"/>
-      <xs:enumeration value="838"/>
-      <xs:enumeration value="839"/>
-      <xs:enumeration value="840"/>
-      <xs:enumeration value="841"/>
-      <xs:enumeration value="842"/>
-      <xs:enumeration value="843"/>
-      <xs:enumeration value="844"/>
-      <xs:enumeration value="845"/>
-      <xs:enumeration value="846"/>
-      <xs:enumeration value="847"/>
-      <xs:enumeration value="848"/>
-      <xs:enumeration value="849"/>
-      <xs:enumeration value="850"/>
-      <xs:enumeration value="851"/>
-      <xs:enumeration value="852"/>
-      <xs:enumeration value="853"/>
-      <xs:enumeration value="854"/>
-      <xs:enumeration value="855"/>
-      <xs:enumeration value="856"/>
-      <xs:enumeration value="857"/>
-      <xs:enumeration value="858"/>
-      <xs:enumeration value="859"/>
-      <xs:enumeration value="860"/>
-      <xs:enumeration value="861"/>
-      <xs:enumeration value="862"/>
-      <xs:enumeration value="863"/>
-      <xs:enumeration value="864"/>
-      <xs:enumeration value="865"/>
-      <xs:enumeration value="866"/>
-      <xs:enumeration value="867"/>
-      <xs:enumeration value="868"/>
-      <xs:enumeration value="869"/>
-      <xs:enumeration value="870"/>
-      <xs:enumeration value="871"/>
-      <xs:enumeration value="872"/>
-      <xs:enumeration value="873"/>
-      <xs:enumeration value="874"/>
-      <xs:enumeration value="875"/>
-      <xs:enumeration value="876"/>
-      <xs:enumeration value="877"/>
-      <xs:enumeration value="878"/>
-      <xs:enumeration value="879"/>
-      <xs:enumeration value="890"/>
-      <xs:enumeration value="891"/>
-      <xs:enumeration value="892"/>
-      <xs:enumeration value="893"/>
-      <xs:enumeration value="894"/>
-      <xs:enumeration value="895"/>
-      <xs:enumeration value="896"/>
-      <xs:enumeration value="901"/>
-      <xs:enumeration value="910"/>
-      <xs:enumeration value="911"/>
-      <xs:enumeration value="913"/>
-      <xs:enumeration value="914"/>
-      <xs:enumeration value="915"/>
-      <xs:enumeration value="916"/>
-      <xs:enumeration value="917"/>
-      <xs:enumeration value="925"/>
-      <xs:enumeration value="926"/>
-      <xs:enumeration value="927"/>
-      <xs:enumeration value="929"/>
-      <xs:enumeration value="930"/>
-      <xs:enumeration value="931"/>
-      <xs:enumeration value="932"/>
-      <xs:enumeration value="933"/>
-      <xs:enumeration value="934"/>
-      <xs:enumeration value="935"/>
-      <xs:enumeration value="936"/>
-      <xs:enumeration value="937"/>
-      <xs:enumeration value="938"/>
-      <xs:enumeration value="940"/>
-      <xs:enumeration value="941"/>
-      <xs:enumeration value="950"/>
-      <xs:enumeration value="951"/>
-      <xs:enumeration value="952"/>
-      <xs:enumeration value="953"/>
-      <xs:enumeration value="954"/>
-      <xs:enumeration value="955"/>
-      <xs:enumeration value="960"/>
-      <xs:enumeration value="961"/>
-      <xs:enumeration value="962"/>
-      <xs:enumeration value="963"/>
-      <xs:enumeration value="964"/>
-      <xs:enumeration value="965"/>
-      <xs:enumeration value="966"/>
-      <xs:enumeration value="970"/>
-      <xs:enumeration value="971"/>
-      <xs:enumeration value="972"/>
-      <xs:enumeration value="974"/>
-      <xs:enumeration value="975"/>
-      <xs:enumeration value="976"/>
-      <xs:enumeration value="977"/>
-      <xs:enumeration value="978"/>
-      <xs:enumeration value="979"/>
-      <xs:enumeration value="990"/>
-      <xs:enumeration value="991"/>
-      <xs:enumeration value="995"/>
-      <xs:enumeration value="996"/>
-      <xs:enumeration value="998"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="DocumentCodeType">
@@ -1543,89 +93,5 @@
   </xs:complexType>
   <xs:simpleType name="PaymentMeansCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="1"/>
-      <xs:enumeration value="2"/>
-      <xs:enumeration value="3"/>
-      <xs:enumeration value="4"/>
-      <xs:enumeration value="5"/>
-      <xs:enumeration value="6"/>
-      <xs:enumeration value="7"/>
-      <xs:enumeration value="8"/>
-      <xs:enumeration value="9"/>
-      <xs:enumeration value="10"/>
-      <xs:enumeration value="11"/>
-      <xs:enumeration value="12"/>
-      <xs:enumeration value="13"/>
-      <xs:enumeration value="14"/>
-      <xs:enumeration value="15"/>
-      <xs:enumeration value="16"/>
-      <xs:enumeration value="17"/>
-      <xs:enumeration value="18"/>
-      <xs:enumeration value="19"/>
-      <xs:enumeration value="20"/>
-      <xs:enumeration value="21"/>
-      <xs:enumeration value="22"/>
-      <xs:enumeration value="23"/>
-      <xs:enumeration value="24"/>
-      <xs:enumeration value="25"/>
-      <xs:enumeration value="26"/>
-      <xs:enumeration value="27"/>
-      <xs:enumeration value="28"/>
-      <xs:enumeration value="29"/>
-      <xs:enumeration value="30"/>
-      <xs:enumeration value="31"/>
-      <xs:enumeration value="32"/>
-      <xs:enumeration value="33"/>
-      <xs:enumeration value="34"/>
-      <xs:enumeration value="35"/>
-      <xs:enumeration value="36"/>
-      <xs:enumeration value="37"/>
-      <xs:enumeration value="38"/>
-      <xs:enumeration value="39"/>
-      <xs:enumeration value="40"/>
-      <xs:enumeration value="41"/>
-      <xs:enumeration value="42"/>
-      <xs:enumeration value="43"/>
-      <xs:enumeration value="44"/>
-      <xs:enumeration value="45"/>
-      <xs:enumeration value="46"/>
-      <xs:enumeration value="47"/>
-      <xs:enumeration value="48"/>
-      <xs:enumeration value="49"/>
-      <xs:enumeration value="50"/>
-      <xs:enumeration value="51"/>
-      <xs:enumeration value="52"/>
-      <xs:enumeration value="53"/>
-      <xs:enumeration value="54"/>
-      <xs:enumeration value="55"/>
-      <xs:enumeration value="56"/>
-      <xs:enumeration value="57"/>
-      <xs:enumeration value="58"/>
-      <xs:enumeration value="59"/>
-      <xs:enumeration value="60"/>
-      <xs:enumeration value="61"/>
-      <xs:enumeration value="62"/>
-      <xs:enumeration value="63"/>
-      <xs:enumeration value="64"/>
-      <xs:enumeration value="65"/>
-      <xs:enumeration value="66"/>
-      <xs:enumeration value="67"/>
-      <xs:enumeration value="68"/>
-      <xs:enumeration value="69"/>
-      <xs:enumeration value="70"/>
-      <xs:enumeration value="74"/>
-      <xs:enumeration value="75"/>
-      <xs:enumeration value="76"/>
-      <xs:enumeration value="77"/>
-      <xs:enumeration value="78"/>
-      <xs:enumeration value="91"/>
-      <xs:enumeration value="92"/>
-      <xs:enumeration value="93"/>
-      <xs:enumeration value="94"/>
-      <xs:enumeration value="95"/>
-      <xs:enumeration value="96"/>
-      <xs:enumeration value="97"/>
-      <xs:enumeration value="ZZZ"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="PaymentMeansCodeType">
@@ -1635,823 +101,5 @@
   </xs:complexType>
   <xs:simpleType name="ReferenceCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AAA"/>
-      <xs:enumeration value="AAB"/>
-      <xs:enumeration value="AAC"/>
-      <xs:enumeration value="AAD"/>
-      <xs:enumeration value="AAE"/>
-      <xs:enumeration value="AAF"/>
-      <xs:enumeration value="AAG"/>
-      <xs:enumeration value="AAH"/>
-      <xs:enumeration value="AAI"/>
-      <xs:enumeration value="AAJ"/>
-      <xs:enumeration value="AAK"/>
-      <xs:enumeration value="AAL"/>
-      <xs:enumeration value="AAM"/>
-      <xs:enumeration value="AAN"/>
-      <xs:enumeration value="AAO"/>
-      <xs:enumeration value="AAP"/>
-      <xs:enumeration value="AAQ"/>
-      <xs:enumeration value="AAR"/>
-      <xs:enumeration value="AAS"/>
-      <xs:enumeration value="AAT"/>
-      <xs:enumeration value="AAU"/>
-      <xs:enumeration value="AAV"/>
-      <xs:enumeration value="AAW"/>
-      <xs:enumeration value="AAX"/>
-      <xs:enumeration value="AAY"/>
-      <xs:enumeration value="AAZ"/>
-      <xs:enumeration value="ABA"/>
-      <xs:enumeration value="ABB"/>
-      <xs:enumeration value="ABC"/>
-      <xs:enumeration value="ABD"/>
-      <xs:enumeration value="ABE"/>
-      <xs:enumeration value="ABF"/>
-      <xs:enumeration value="ABG"/>
-      <xs:enumeration value="ABH"/>
-      <xs:enumeration value="ABI"/>
-      <xs:enumeration value="ABJ"/>
-      <xs:enumeration value="ABK"/>
-      <xs:enumeration value="ABL"/>
-      <xs:enumeration value="ABM"/>
-      <xs:enumeration value="ABN"/>
-      <xs:enumeration value="ABO"/>
-      <xs:enumeration value="ABP"/>
-      <xs:enumeration value="ABQ"/>
-      <xs:enumeration value="ABR"/>
-      <xs:enumeration value="ABS"/>
-      <xs:enumeration value="ABT"/>
-      <xs:enumeration value="ABU"/>
-      <xs:enumeration value="ABV"/>
-      <xs:enumeration value="ABW"/>
-      <xs:enumeration value="ABX"/>
-      <xs:enumeration value="ABY"/>
-      <xs:enumeration value="ABZ"/>
-      <xs:enumeration value="AC"/>
-      <xs:enumeration value="ACA"/>
-      <xs:enumeration value="ACB"/>
-      <xs:enumeration value="ACC"/>
-      <xs:enumeration value="ACD"/>
-      <xs:enumeration value="ACE"/>
-      <xs:enumeration value="ACF"/>
-      <xs:enumeration value="ACG"/>
-      <xs:enumeration value="ACH"/>
-      <xs:enumeration value="ACI"/>
-      <xs:enumeration value="ACJ"/>
-      <xs:enumeration value="ACK"/>
-      <xs:enumeration value="ACL"/>
-      <xs:enumeration value="ACN"/>
-      <xs:enumeration value="ACO"/>
-      <xs:enumeration value="ACP"/>
-      <xs:enumeration value="ACQ"/>
-      <xs:enumeration value="ACR"/>
-      <xs:enumeration value="ACT"/>
-      <xs:enumeration value="ACU"/>
-      <xs:enumeration value="ACV"/>
-      <xs:enumeration value="ACW"/>
-      <xs:enumeration value="ACX"/>
-      <xs:enumeration value="ACY"/>
-      <xs:enumeration value="ACZ"/>
-      <xs:enumeration value="ADA"/>
-      <xs:enumeration value="ADB"/>
-      <xs:enumeration value="ADC"/>
-      <xs:enumeration value="ADD"/>
-      <xs:enumeration value="ADE"/>
-      <xs:enumeration value="ADF"/>
-      <xs:enumeration value="ADG"/>
-      <xs:enumeration value="ADI"/>
-      <xs:enumeration value="ADJ"/>
-      <xs:enumeration value="ADK"/>
-      <xs:enumeration value="ADL"/>
-      <xs:enumeration value="ADM"/>
-      <xs:enumeration value="ADN"/>
-      <xs:enumeration value="ADO"/>
-      <xs:enumeration value="ADP"/>
-      <xs:enumeration value="ADQ"/>
-      <xs:enumeration value="ADT"/>
-      <xs:enumeration value="ADU"/>
-      <xs:enumeration value="ADV"/>
-      <xs:enumeration value="ADW"/>
-      <xs:enumeration value="ADX"/>
-      <xs:enumeration value="ADY"/>
-      <xs:enumeration value="ADZ"/>
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="AEA"/>
-      <xs:enumeration value="AEB"/>
-      <xs:enumeration value="AEC"/>
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AEE"/>
-      <xs:enumeration value="AEF"/>
-      <xs:enumeration value="AEG"/>
-      <xs:enumeration value="AEH"/>
-      <xs:enumeration value="AEI"/>
-      <xs:enumeration value="AEJ"/>
-      <xs:enumeration value="AEK"/>
-      <xs:enumeration value="AEL"/>
-      <xs:enumeration value="AEM"/>
-      <xs:enumeration value="AEN"/>
-      <xs:enumeration value="AEO"/>
-      <xs:enumeration value="AEP"/>
-      <xs:enumeration value="AEQ"/>
-      <xs:enumeration value="AER"/>
-      <xs:enumeration value="AES"/>
-      <xs:enumeration value="AET"/>
-      <xs:enumeration value="AEU"/>
-      <xs:enumeration value="AEV"/>
-      <xs:enumeration value="AEW"/>
-      <xs:enumeration value="AEX"/>
-      <xs:enumeration value="AEY"/>
-      <xs:enumeration value="AEZ"/>
-      <xs:enumeration value="AF"/>
-      <xs:enumeration value="AFA"/>
-      <xs:enumeration value="AFB"/>
-      <xs:enumeration value="AFC"/>
-      <xs:enumeration value="AFD"/>
-      <xs:enumeration value="AFE"/>
-      <xs:enumeration value="AFF"/>
-      <xs:enumeration value="AFG"/>
-      <xs:enumeration value="AFH"/>
-      <xs:enumeration value="AFI"/>
-      <xs:enumeration value="AFJ"/>
-      <xs:enumeration value="AFK"/>
-      <xs:enumeration value="AFL"/>
-      <xs:enumeration value="AFM"/>
-      <xs:enumeration value="AFN"/>
-      <xs:enumeration value="AFO"/>
-      <xs:enumeration value="AFP"/>
-      <xs:enumeration value="AFQ"/>
-      <xs:enumeration value="AFR"/>
-      <xs:enumeration value="AFS"/>
-      <xs:enumeration value="AFT"/>
-      <xs:enumeration value="AFU"/>
-      <xs:enumeration value="AFV"/>
-      <xs:enumeration value="AFW"/>
-      <xs:enumeration value="AFX"/>
-      <xs:enumeration value="AFY"/>
-      <xs:enumeration value="AFZ"/>
-      <xs:enumeration value="AGA"/>
-      <xs:enumeration value="AGB"/>
-      <xs:enumeration value="AGC"/>
-      <xs:enumeration value="AGD"/>
-      <xs:enumeration value="AGE"/>
-      <xs:enumeration value="AGF"/>
-      <xs:enumeration value="AGG"/>
-      <xs:enumeration value="AGH"/>
-      <xs:enumeration value="AGI"/>
-      <xs:enumeration value="AGJ"/>
-      <xs:enumeration value="AGK"/>
-      <xs:enumeration value="AGL"/>
-      <xs:enumeration value="AGM"/>
-      <xs:enumeration value="AGN"/>
-      <xs:enumeration value="AGO"/>
-      <xs:enumeration value="AGP"/>
-      <xs:enumeration value="AGQ"/>
-      <xs:enumeration value="AGR"/>
-      <xs:enumeration value="AGS"/>
-      <xs:enumeration value="AGT"/>
-      <xs:enumeration value="AGU"/>
-      <xs:enumeration value="AGV"/>
-      <xs:enumeration value="AGW"/>
-      <xs:enumeration value="AGX"/>
-      <xs:enumeration value="AGY"/>
-      <xs:enumeration value="AGZ"/>
-      <xs:enumeration value="AHA"/>
-      <xs:enumeration value="AHB"/>
-      <xs:enumeration value="AHC"/>
-      <xs:enumeration value="AHD"/>
-      <xs:enumeration value="AHE"/>
-      <xs:enumeration value="AHF"/>
-      <xs:enumeration value="AHG"/>
-      <xs:enumeration value="AHH"/>
-      <xs:enumeration value="AHI"/>
-      <xs:enumeration value="AHJ"/>
-      <xs:enumeration value="AHK"/>
-      <xs:enumeration value="AHL"/>
-      <xs:enumeration value="AHM"/>
-      <xs:enumeration value="AHN"/>
-      <xs:enumeration value="AHO"/>
-      <xs:enumeration value="AHP"/>
-      <xs:enumeration value="AHQ"/>
-      <xs:enumeration value="AHR"/>
-      <xs:enumeration value="AHS"/>
-      <xs:enumeration value="AHT"/>
-      <xs:enumeration value="AHU"/>
-      <xs:enumeration value="AHV"/>
-      <xs:enumeration value="AHX"/>
-      <xs:enumeration value="AHY"/>
-      <xs:enumeration value="AHZ"/>
-      <xs:enumeration value="AIA"/>
-      <xs:enumeration value="AIB"/>
-      <xs:enumeration value="AIC"/>
-      <xs:enumeration value="AID"/>
-      <xs:enumeration value="AIE"/>
-      <xs:enumeration value="AIF"/>
-      <xs:enumeration value="AIG"/>
-      <xs:enumeration value="AIH"/>
-      <xs:enumeration value="AII"/>
-      <xs:enumeration value="AIJ"/>
-      <xs:enumeration value="AIK"/>
-      <xs:enumeration value="AIL"/>
-      <xs:enumeration value="AIM"/>
-      <xs:enumeration value="AIN"/>
-      <xs:enumeration value="AIO"/>
-      <xs:enumeration value="AIP"/>
-      <xs:enumeration value="AIQ"/>
-      <xs:enumeration value="AIR"/>
-      <xs:enumeration value="AIS"/>
-      <xs:enumeration value="AIT"/>
-      <xs:enumeration value="AIU"/>
-      <xs:enumeration value="AIV"/>
-      <xs:enumeration value="AIW"/>
-      <xs:enumeration value="AIX"/>
-      <xs:enumeration value="AIY"/>
-      <xs:enumeration value="AIZ"/>
-      <xs:enumeration value="AJA"/>
-      <xs:enumeration value="AJB"/>
-      <xs:enumeration value="AJC"/>
-      <xs:enumeration value="AJD"/>
-      <xs:enumeration value="AJE"/>
-      <xs:enumeration value="AJF"/>
-      <xs:enumeration value="AJG"/>
-      <xs:enumeration value="AJH"/>
-      <xs:enumeration value="AJI"/>
-      <xs:enumeration value="AJJ"/>
-      <xs:enumeration value="AJK"/>
-      <xs:enumeration value="AJL"/>
-      <xs:enumeration value="AJM"/>
-      <xs:enumeration value="AJN"/>
-      <xs:enumeration value="AJO"/>
-      <xs:enumeration value="AJP"/>
-      <xs:enumeration value="AJQ"/>
-      <xs:enumeration value="AJR"/>
-      <xs:enumeration value="AJS"/>
-      <xs:enumeration value="AJT"/>
-      <xs:enumeration value="AJU"/>
-      <xs:enumeration value="AJV"/>
-      <xs:enumeration value="AJW"/>
-      <xs:enumeration value="AJX"/>
-      <xs:enumeration value="AJY"/>
-      <xs:enumeration value="AJZ"/>
-      <xs:enumeration value="AKA"/>
-      <xs:enumeration value="AKB"/>
-      <xs:enumeration value="AKC"/>
-      <xs:enumeration value="AKD"/>
-      <xs:enumeration value="AKE"/>
-      <xs:enumeration value="AKF"/>
-      <xs:enumeration value="AKG"/>
-      <xs:enumeration value="AKH"/>
-      <xs:enumeration value="AKI"/>
-      <xs:enumeration value="AKJ"/>
-      <xs:enumeration value="AKK"/>
-      <xs:enumeration value="AKL"/>
-      <xs:enumeration value="AKM"/>
-      <xs:enumeration value="AKN"/>
-      <xs:enumeration value="AKO"/>
-      <xs:enumeration value="AKP"/>
-      <xs:enumeration value="AKQ"/>
-      <xs:enumeration value="AKR"/>
-      <xs:enumeration value="AKS"/>
-      <xs:enumeration value="AKT"/>
-      <xs:enumeration value="AKU"/>
-      <xs:enumeration value="AKV"/>
-      <xs:enumeration value="AKW"/>
-      <xs:enumeration value="AKX"/>
-      <xs:enumeration value="AKY"/>
-      <xs:enumeration value="AKZ"/>
-      <xs:enumeration value="ALA"/>
-      <xs:enumeration value="ALB"/>
-      <xs:enumeration value="ALC"/>
-      <xs:enumeration value="ALD"/>
-      <xs:enumeration value="ALE"/>
-      <xs:enumeration value="ALF"/>
-      <xs:enumeration value="ALG"/>
-      <xs:enumeration value="ALH"/>
-      <xs:enumeration value="ALI"/>
-      <xs:enumeration value="ALJ"/>
-      <xs:enumeration value="ALK"/>
-      <xs:enumeration value="ALL"/>
-      <xs:enumeration value="ALM"/>
-      <xs:enumeration value="ALN"/>
-      <xs:enumeration value="ALO"/>
-      <xs:enumeration value="ALP"/>
-      <xs:enumeration value="ALQ"/>
-      <xs:enumeration value="ALR"/>
-      <xs:enumeration value="ALS"/>
-      <xs:enumeration value="ALT"/>
-      <xs:enumeration value="ALU"/>
-      <xs:enumeration value="ALV"/>
-      <xs:enumeration value="ALW"/>
-      <xs:enumeration value="ALX"/>
-      <xs:enumeration value="ALY"/>
-      <xs:enumeration value="ALZ"/>
-      <xs:enumeration value="AMA"/>
-      <xs:enumeration value="AMB"/>
-      <xs:enumeration value="AMC"/>
-      <xs:enumeration value="AMD"/>
-      <xs:enumeration value="AME"/>
-      <xs:enumeration value="AMF"/>
-      <xs:enumeration value="AMG"/>
-      <xs:enumeration value="AMH"/>
-      <xs:enumeration value="AMI"/>
-      <xs:enumeration value="AMJ"/>
-      <xs:enumeration value="AMK"/>
-      <xs:enumeration value="AML"/>
-      <xs:enumeration value="AMM"/>
-      <xs:enumeration value="AMN"/>
-      <xs:enumeration value="AMO"/>
-      <xs:enumeration value="AMP"/>
-      <xs:enumeration value="AMQ"/>
-      <xs:enumeration value="AMR"/>
-      <xs:enumeration value="AMS"/>
-      <xs:enumeration value="AMT"/>
-      <xs:enumeration value="AMU"/>
-      <xs:enumeration value="AMV"/>
-      <xs:enumeration value="AMW"/>
-      <xs:enumeration value="AMX"/>
-      <xs:enumeration value="AMY"/>
-      <xs:enumeration value="AMZ"/>
-      <xs:enumeration value="ANA"/>
-      <xs:enumeration value="ANB"/>
-      <xs:enumeration value="ANC"/>
-      <xs:enumeration value="AND"/>
-      <xs:enumeration value="ANE"/>
-      <xs:enumeration value="ANF"/>
-      <xs:enumeration value="ANG"/>
-      <xs:enumeration value="ANH"/>
-      <xs:enumeration value="ANI"/>
-      <xs:enumeration value="ANJ"/>
-      <xs:enumeration value="ANK"/>
-      <xs:enumeration value="ANL"/>
-      <xs:enumeration value="ANM"/>
-      <xs:enumeration value="ANN"/>
-      <xs:enumeration value="ANO"/>
-      <xs:enumeration value="ANP"/>
-      <xs:enumeration value="ANQ"/>
-      <xs:enumeration value="ANR"/>
-      <xs:enumeration value="ANS"/>
-      <xs:enumeration value="ANT"/>
-      <xs:enumeration value="ANU"/>
-      <xs:enumeration value="ANV"/>
-      <xs:enumeration value="ANW"/>
-      <xs:enumeration value="ANX"/>
-      <xs:enumeration value="ANY"/>
-      <xs:enumeration value="AOA"/>
-      <xs:enumeration value="AOD"/>
-      <xs:enumeration value="AOE"/>
-      <xs:enumeration value="AOF"/>
-      <xs:enumeration value="AOG"/>
-      <xs:enumeration value="AOH"/>
-      <xs:enumeration value="AOI"/>
-      <xs:enumeration value="AOJ"/>
-      <xs:enumeration value="AOK"/>
-      <xs:enumeration value="AOL"/>
-      <xs:enumeration value="AOM"/>
-      <xs:enumeration value="AON"/>
-      <xs:enumeration value="AOO"/>
-      <xs:enumeration value="AOP"/>
-      <xs:enumeration value="AOQ"/>
-      <xs:enumeration value="AOR"/>
-      <xs:enumeration value="AOS"/>
-      <xs:enumeration value="AOT"/>
-      <xs:enumeration value="AOU"/>
-      <xs:enumeration value="AOV"/>
-      <xs:enumeration value="AOW"/>
-      <xs:enumeration value="AOX"/>
-      <xs:enumeration value="AOY"/>
-      <xs:enumeration value="AOZ"/>
-      <xs:enumeration value="AP"/>
-      <xs:enumeration value="APA"/>
-      <xs:enumeration value="APB"/>
-      <xs:enumeration value="APC"/>
-      <xs:enumeration value="APD"/>
-      <xs:enumeration value="APE"/>
-      <xs:enumeration value="APF"/>
-      <xs:enumeration value="APG"/>
-      <xs:enumeration value="APH"/>
-      <xs:enumeration value="API"/>
-      <xs:enumeration value="APJ"/>
-      <xs:enumeration value="APK"/>
-      <xs:enumeration value="APL"/>
-      <xs:enumeration value="APM"/>
-      <xs:enumeration value="APN"/>
-      <xs:enumeration value="APO"/>
-      <xs:enumeration value="APP"/>
-      <xs:enumeration value="APQ"/>
-      <xs:enumeration value="APR"/>
-      <xs:enumeration value="APS"/>
-      <xs:enumeration value="APT"/>
-      <xs:enumeration value="APU"/>
-      <xs:enumeration value="APV"/>
-      <xs:enumeration value="APW"/>
-      <xs:enumeration value="APX"/>
-      <xs:enumeration value="APY"/>
-      <xs:enumeration value="APZ"/>
-      <xs:enumeration value="AQA"/>
-      <xs:enumeration value="AQB"/>
-      <xs:enumeration value="AQC"/>
-      <xs:enumeration value="AQD"/>
-      <xs:enumeration value="AQE"/>
-      <xs:enumeration value="AQF"/>
-      <xs:enumeration value="AQG"/>
-      <xs:enumeration value="AQH"/>
-      <xs:enumeration value="AQI"/>
-      <xs:enumeration value="AQJ"/>
-      <xs:enumeration value="AQK"/>
-      <xs:enumeration value="AQL"/>
-      <xs:enumeration value="AQM"/>
-      <xs:enumeration value="AQN"/>
-      <xs:enumeration value="AQO"/>
-      <xs:enumeration value="AQP"/>
-      <xs:enumeration value="AQQ"/>
-      <xs:enumeration value="AQR"/>
-      <xs:enumeration value="AQS"/>
-      <xs:enumeration value="AQT"/>
-      <xs:enumeration value="AQU"/>
-      <xs:enumeration value="AQV"/>
-      <xs:enumeration value="AQW"/>
-      <xs:enumeration value="AQX"/>
-      <xs:enumeration value="AQY"/>
-      <xs:enumeration value="AQZ"/>
-      <xs:enumeration value="ARA"/>
-      <xs:enumeration value="ARB"/>
-      <xs:enumeration value="ARC"/>
-      <xs:enumeration value="ARD"/>
-      <xs:enumeration value="ARE"/>
-      <xs:enumeration value="ARF"/>
-      <xs:enumeration value="ARG"/>
-      <xs:enumeration value="ARH"/>
-      <xs:enumeration value="ARI"/>
-      <xs:enumeration value="ARJ"/>
-      <xs:enumeration value="ARK"/>
-      <xs:enumeration value="ARL"/>
-      <xs:enumeration value="ARM"/>
-      <xs:enumeration value="ARN"/>
-      <xs:enumeration value="ARO"/>
-      <xs:enumeration value="ARP"/>
-      <xs:enumeration value="ARQ"/>
-      <xs:enumeration value="ARR"/>
-      <xs:enumeration value="ARS"/>
-      <xs:enumeration value="ART"/>
-      <xs:enumeration value="ARU"/>
-      <xs:enumeration value="ARV"/>
-      <xs:enumeration value="ARW"/>
-      <xs:enumeration value="ARX"/>
-      <xs:enumeration value="ARY"/>
-      <xs:enumeration value="ARZ"/>
-      <xs:enumeration value="ASA"/>
-      <xs:enumeration value="ASB"/>
-      <xs:enumeration value="ASC"/>
-      <xs:enumeration value="ASD"/>
-      <xs:enumeration value="ASE"/>
-      <xs:enumeration value="ASF"/>
-      <xs:enumeration value="ASG"/>
-      <xs:enumeration value="ASH"/>
-      <xs:enumeration value="ASI"/>
-      <xs:enumeration value="ASJ"/>
-      <xs:enumeration value="ASK"/>
-      <xs:enumeration value="ASL"/>
-      <xs:enumeration value="ASM"/>
-      <xs:enumeration value="ASN"/>
-      <xs:enumeration value="ASO"/>
-      <xs:enumeration value="ASP"/>
-      <xs:enumeration value="ASQ"/>
-      <xs:enumeration value="ASR"/>
-      <xs:enumeration value="ASS"/>
-      <xs:enumeration value="AST"/>
-      <xs:enumeration value="ASU"/>
-      <xs:enumeration value="ASV"/>
-      <xs:enumeration value="ASW"/>
-      <xs:enumeration value="ASX"/>
-      <xs:enumeration value="ASY"/>
-      <xs:enumeration value="ASZ"/>
-      <xs:enumeration value="ATA"/>
-      <xs:enumeration value="ATB"/>
-      <xs:enumeration value="ATC"/>
-      <xs:enumeration value="ATD"/>
-      <xs:enumeration value="ATE"/>
-      <xs:enumeration value="ATF"/>
-      <xs:enumeration value="ATG"/>
-      <xs:enumeration value="ATH"/>
-      <xs:enumeration value="ATI"/>
-      <xs:enumeration value="ATJ"/>
-      <xs:enumeration value="ATK"/>
-      <xs:enumeration value="ATL"/>
-      <xs:enumeration value="ATM"/>
-      <xs:enumeration value="ATN"/>
-      <xs:enumeration value="ATO"/>
-      <xs:enumeration value="ATP"/>
-      <xs:enumeration value="ATQ"/>
-      <xs:enumeration value="ATR"/>
-      <xs:enumeration value="ATS"/>
-      <xs:enumeration value="ATT"/>
-      <xs:enumeration value="ATU"/>
-      <xs:enumeration value="ATV"/>
-      <xs:enumeration value="ATW"/>
-      <xs:enumeration value="ATX"/>
-      <xs:enumeration value="ATY"/>
-      <xs:enumeration value="ATZ"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="AUA"/>
-      <xs:enumeration value="AUB"/>
-      <xs:enumeration value="AUC"/>
-      <xs:enumeration value="AUD"/>
-      <xs:enumeration value="AUE"/>
-      <xs:enumeration value="AUF"/>
-      <xs:enumeration value="AUG"/>
-      <xs:enumeration value="AUH"/>
-      <xs:enumeration value="AUI"/>
-      <xs:enumeration value="AUJ"/>
-      <xs:enumeration value="AUK"/>
-      <xs:enumeration value="AUL"/>
-      <xs:enumeration value="AUM"/>
-      <xs:enumeration value="AUN"/>
-      <xs:enumeration value="AUO"/>
-      <xs:enumeration value="AUP"/>
-      <xs:enumeration value="AUQ"/>
-      <xs:enumeration value="AUR"/>
-      <xs:enumeration value="AUS"/>
-      <xs:enumeration value="AUT"/>
-      <xs:enumeration value="AUU"/>
-      <xs:enumeration value="AUV"/>
-      <xs:enumeration value="AUW"/>
-      <xs:enumeration value="AUX"/>
-      <xs:enumeration value="AUY"/>
-      <xs:enumeration value="AUZ"/>
-      <xs:enumeration value="AV"/>
-      <xs:enumeration value="AVA"/>
-      <xs:enumeration value="AVB"/>
-      <xs:enumeration value="AVC"/>
-      <xs:enumeration value="AVD"/>
-      <xs:enumeration value="AVE"/>
-      <xs:enumeration value="AVF"/>
-      <xs:enumeration value="AVG"/>
-      <xs:enumeration value="AVH"/>
-      <xs:enumeration value="AVI"/>
-      <xs:enumeration value="AVJ"/>
-      <xs:enumeration value="AVK"/>
-      <xs:enumeration value="AVL"/>
-      <xs:enumeration value="AVM"/>
-      <xs:enumeration value="AVN"/>
-      <xs:enumeration value="AVO"/>
-      <xs:enumeration value="AVP"/>
-      <xs:enumeration value="AVQ"/>
-      <xs:enumeration value="AVR"/>
-      <xs:enumeration value="AVS"/>
-      <xs:enumeration value="AVT"/>
-      <xs:enumeration value="AVU"/>
-      <xs:enumeration value="AVV"/>
-      <xs:enumeration value="AVW"/>
-      <xs:enumeration value="AVX"/>
-      <xs:enumeration value="AVY"/>
-      <xs:enumeration value="AVZ"/>
-      <xs:enumeration value="AWA"/>
-      <xs:enumeration value="AWB"/>
-      <xs:enumeration value="AWC"/>
-      <xs:enumeration value="AWD"/>
-      <xs:enumeration value="AWE"/>
-      <xs:enumeration value="AWF"/>
-      <xs:enumeration value="AWG"/>
-      <xs:enumeration value="AWH"/>
-      <xs:enumeration value="AWI"/>
-      <xs:enumeration value="AWJ"/>
-      <xs:enumeration value="AWK"/>
-      <xs:enumeration value="AWL"/>
-      <xs:enumeration value="AWM"/>
-      <xs:enumeration value="AWN"/>
-      <xs:enumeration value="AWO"/>
-      <xs:enumeration value="AWP"/>
-      <xs:enumeration value="AWQ"/>
-      <xs:enumeration value="AWR"/>
-      <xs:enumeration value="AWS"/>
-      <xs:enumeration value="AWT"/>
-      <xs:enumeration value="AWU"/>
-      <xs:enumeration value="AWV"/>
-      <xs:enumeration value="AWW"/>
-      <xs:enumeration value="AWX"/>
-      <xs:enumeration value="AWY"/>
-      <xs:enumeration value="AWZ"/>
-      <xs:enumeration value="AXA"/>
-      <xs:enumeration value="AXB"/>
-      <xs:enumeration value="AXC"/>
-      <xs:enumeration value="AXD"/>
-      <xs:enumeration value="AXE"/>
-      <xs:enumeration value="AXF"/>
-      <xs:enumeration value="AXG"/>
-      <xs:enumeration value="AXH"/>
-      <xs:enumeration value="AXI"/>
-      <xs:enumeration value="AXJ"/>
-      <xs:enumeration value="AXK"/>
-      <xs:enumeration value="AXL"/>
-      <xs:enumeration value="AXM"/>
-      <xs:enumeration value="AXN"/>
-      <xs:enumeration value="AXO"/>
-      <xs:enumeration value="AXP"/>
-      <xs:enumeration value="AXQ"/>
-      <xs:enumeration value="AXR"/>
-      <xs:enumeration value="AXS"/>
-      <xs:enumeration value="BA"/>
-      <xs:enumeration value="BC"/>
-      <xs:enumeration value="BD"/>
-      <xs:enumeration value="BE"/>
-      <xs:enumeration value="BH"/>
-      <xs:enumeration value="BM"/>
-      <xs:enumeration value="BN"/>
-      <xs:enumeration value="BO"/>
-      <xs:enumeration value="BR"/>
-      <xs:enumeration value="BT"/>
-      <xs:enumeration value="BTP"/>
-      <xs:enumeration value="BW"/>
-      <xs:enumeration value="CAS"/>
-      <xs:enumeration value="CAT"/>
-      <xs:enumeration value="CAU"/>
-      <xs:enumeration value="CAV"/>
-      <xs:enumeration value="CAW"/>
-      <xs:enumeration value="CAX"/>
-      <xs:enumeration value="CAY"/>
-      <xs:enumeration value="CAZ"/>
-      <xs:enumeration value="CBA"/>
-      <xs:enumeration value="CBB"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CEC"/>
-      <xs:enumeration value="CED"/>
-      <xs:enumeration value="CFE"/>
-      <xs:enumeration value="CFF"/>
-      <xs:enumeration value="CFO"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CH"/>
-      <xs:enumeration value="CK"/>
-      <xs:enumeration value="CKN"/>
-      <xs:enumeration value="CM"/>
-      <xs:enumeration value="CMR"/>
-      <xs:enumeration value="CN"/>
-      <xs:enumeration value="CNO"/>
-      <xs:enumeration value="COF"/>
-      <xs:enumeration value="CP"/>
-      <xs:enumeration value="CR"/>
-      <xs:enumeration value="CRN"/>
-      <xs:enumeration value="CS"/>
-      <xs:enumeration value="CST"/>
-      <xs:enumeration value="CT"/>
-      <xs:enumeration value="CU"/>
-      <xs:enumeration value="CV"/>
-      <xs:enumeration value="CW"/>
-      <xs:enumeration value="CZ"/>
-      <xs:enumeration value="DA"/>
-      <xs:enumeration value="DAN"/>
-      <xs:enumeration value="DB"/>
-      <xs:enumeration value="DI"/>
-      <xs:enumeration value="DL"/>
-      <xs:enumeration value="DM"/>
-      <xs:enumeration value="DQ"/>
-      <xs:enumeration value="DR"/>
-      <xs:enumeration value="EA"/>
-      <xs:enumeration value="EB"/>
-      <xs:enumeration value="ED"/>
-      <xs:enumeration value="EE"/>
-      <xs:enumeration value="EEP"/>
-      <xs:enumeration value="EI"/>
-      <xs:enumeration value="EN"/>
-      <xs:enumeration value="EQ"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="ERN"/>
-      <xs:enumeration value="ET"/>
-      <xs:enumeration value="EX"/>
-      <xs:enumeration value="FC"/>
-      <xs:enumeration value="FF"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="FLW"/>
-      <xs:enumeration value="FN"/>
-      <xs:enumeration value="FO"/>
-      <xs:enumeration value="FS"/>
-      <xs:enumeration value="FT"/>
-      <xs:enumeration value="FV"/>
-      <xs:enumeration value="FX"/>
-      <xs:enumeration value="GA"/>
-      <xs:enumeration value="GC"/>
-      <xs:enumeration value="GD"/>
-      <xs:enumeration value="GDN"/>
-      <xs:enumeration value="GN"/>
-      <xs:enumeration value="HS"/>
-      <xs:enumeration value="HWB"/>
-      <xs:enumeration value="IA"/>
-      <xs:enumeration value="IB"/>
-      <xs:enumeration value="ICA"/>
-      <xs:enumeration value="ICE"/>
-      <xs:enumeration value="ICO"/>
-      <xs:enumeration value="II"/>
-      <xs:enumeration value="IL"/>
-      <xs:enumeration value="INB"/>
-      <xs:enumeration value="INN"/>
-      <xs:enumeration value="INO"/>
-      <xs:enumeration value="IP"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="IT"/>
-      <xs:enumeration value="IV"/>
-      <xs:enumeration value="JB"/>
-      <xs:enumeration value="JE"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LAN"/>
-      <xs:enumeration value="LAR"/>
-      <xs:enumeration value="LB"/>
-      <xs:enumeration value="LC"/>
-      <xs:enumeration value="LI"/>
-      <xs:enumeration value="LO"/>
-      <xs:enumeration value="LRC"/>
-      <xs:enumeration value="LS"/>
-      <xs:enumeration value="MA"/>
-      <xs:enumeration value="MB"/>
-      <xs:enumeration value="MF"/>
-      <xs:enumeration value="MG"/>
-      <xs:enumeration value="MH"/>
-      <xs:enumeration value="MR"/>
-      <xs:enumeration value="MRN"/>
-      <xs:enumeration value="MS"/>
-      <xs:enumeration value="MSS"/>
-      <xs:enumeration value="MWB"/>
-      <xs:enumeration value="NA"/>
-      <xs:enumeration value="NF"/>
-      <xs:enumeration value="OH"/>
-      <xs:enumeration value="OI"/>
-      <xs:enumeration value="ON"/>
-      <xs:enumeration value="OP"/>
-      <xs:enumeration value="OR"/>
-      <xs:enumeration value="PB"/>
-      <xs:enumeration value="PC"/>
-      <xs:enumeration value="PD"/>
-      <xs:enumeration value="PE"/>
-      <xs:enumeration value="PF"/>
-      <xs:enumeration value="PI"/>
-      <xs:enumeration value="PK"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="POR"/>
-      <xs:enumeration value="PP"/>
-      <xs:enumeration value="PQ"/>
-      <xs:enumeration value="PR"/>
-      <xs:enumeration value="PS"/>
-      <xs:enumeration value="PW"/>
-      <xs:enumeration value="PY"/>
-      <xs:enumeration value="RA"/>
-      <xs:enumeration value="RC"/>
-      <xs:enumeration value="RCN"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="REN"/>
-      <xs:enumeration value="RF"/>
-      <xs:enumeration value="RR"/>
-      <xs:enumeration value="RT"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SB"/>
-      <xs:enumeration value="SD"/>
-      <xs:enumeration value="SE"/>
-      <xs:enumeration value="SEA"/>
-      <xs:enumeration value="SF"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SI"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SN"/>
-      <xs:enumeration value="SP"/>
-      <xs:enumeration value="SQ"/>
-      <xs:enumeration value="SRN"/>
-      <xs:enumeration value="SS"/>
-      <xs:enumeration value="STA"/>
-      <xs:enumeration value="SW"/>
-      <xs:enumeration value="SZ"/>
-      <xs:enumeration value="TB"/>
-      <xs:enumeration value="TCR"/>
-      <xs:enumeration value="TE"/>
-      <xs:enumeration value="TF"/>
-      <xs:enumeration value="TI"/>
-      <xs:enumeration value="TIN"/>
-      <xs:enumeration value="TL"/>
-      <xs:enumeration value="TN"/>
-      <xs:enumeration value="TP"/>
-      <xs:enumeration value="UAR"/>
-      <xs:enumeration value="UC"/>
-      <xs:enumeration value="UCN"/>
-      <xs:enumeration value="UN"/>
-      <xs:enumeration value="UO"/>
-      <xs:enumeration value="URI"/>
-      <xs:enumeration value="VA"/>
-      <xs:enumeration value="VC"/>
-      <xs:enumeration value="VGR"/>
-      <xs:enumeration value="VM"/>
-      <xs:enumeration value="VN"/>
-      <xs:enumeration value="VON"/>
-      <xs:enumeration value="VOR"/>
-      <xs:enumeration value="VP"/>
-      <xs:enumeration value="VR"/>
-      <xs:enumeration value="VS"/>
-      <xs:enumeration value="VT"/>
-      <xs:enumeration value="VV"/>
-      <xs:enumeration value="WE"/>
-      <xs:enumeration value="WM"/>
-      <xs:enumeration value="WN"/>
-      <xs:enumeration value="WR"/>
-      <xs:enumeration value="WS"/>
-      <xs:enumeration value="WY"/>
-      <xs:enumeration value="XA"/>
-      <xs:enumeration value="XC"/>
-      <xs:enumeration value="XP"/>
-      <xs:enumeration value="ZZZ"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="ReferenceCodeType">
@@ -2461,27 +109,5 @@
   </xs:complexType>
   <xs:simpleType name="TaxCategoryCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="A"/>
-      <xs:enumeration value="AA"/>
-      <xs:enumeration value="AB"/>
-      <xs:enumeration value="AC"/>
-      <xs:enumeration value="AD"/>
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="B"/>
-      <xs:enumeration value="C"/>
-      <xs:enumeration value="D"/>
-      <xs:enumeration value="E"/>
-      <xs:enumeration value="F"/>
-      <xs:enumeration value="G"/>
-      <xs:enumeration value="H"/>
-      <xs:enumeration value="I"/>
-      <xs:enumeration value="J"/>
-      <xs:enumeration value="K"/>
-      <xs:enumeration value="L"/>
-      <xs:enumeration value="M"/>
-      <xs:enumeration value="O"/>
-      <xs:enumeration value="S"/>
-      <xs:enumeration value="Z"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TaxCategoryCodeType">
@@ -2491,60 +117,5 @@
   </xs:complexType>
   <xs:simpleType name="TaxTypeCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AAA"/>
-      <xs:enumeration value="AAB"/>
-      <xs:enumeration value="AAC"/>
-      <xs:enumeration value="AAD"/>
-      <xs:enumeration value="AAE"/>
-      <xs:enumeration value="AAF"/>
-      <xs:enumeration value="AAG"/>
-      <xs:enumeration value="AAH"/>
-      <xs:enumeration value="AAI"/>
-      <xs:enumeration value="AAJ"/>
-      <xs:enumeration value="AAK"/>
-      <xs:enumeration value="AAL"/>
-      <xs:enumeration value="AAM"/>
-      <xs:enumeration value="ADD"/>
-      <xs:enumeration value="BOL"/>
-      <xs:enumeration value="CAP"/>
-      <xs:enumeration value="CAR"/>
-      <xs:enumeration value="COC"/>
-      <xs:enumeration value="CST"/>
-      <xs:enumeration value="CUD"/>
-      <xs:enumeration value="CVD"/>
-      <xs:enumeration value="ENV"/>
-      <xs:enumeration value="EXC"/>
-      <xs:enumeration value="EXP"/>
-      <xs:enumeration value="FET"/>
-      <xs:enumeration value="FRE"/>
-      <xs:enumeration value="GCN"/>
-      <xs:enumeration value="GST"/>
-      <xs:enumeration value="ILL"/>
-      <xs:enumeration value="IMP"/>
-      <xs:enumeration value="IND"/>
-      <xs:enumeration value="LAC"/>
-      <xs:enumeration value="LCN"/>
-      <xs:enumeration value="LDP"/>
-      <xs:enumeration value="LOC"/>
-      <xs:enumeration value="LST"/>
-      <xs:enumeration value="MCA"/>
-      <xs:enumeration value="MCD"/>
-      <xs:enumeration value="OTH"/>
-      <xs:enumeration value="PDB"/>
-      <xs:enumeration value="PDC"/>
-      <xs:enumeration value="PRF"/>
-      <xs:enumeration value="SCN"/>
-      <xs:enumeration value="SSS"/>
-      <xs:enumeration value="STT"/>
-      <xs:enumeration value="SUP"/>
-      <xs:enumeration value="SUR"/>
-      <xs:enumeration value="SWT"/>
-      <xs:enumeration value="TAC"/>
-      <xs:enumeration value="TOT"/>
-      <xs:enumeration value="TOX"/>
-      <xs:enumeration value="TTA"/>
-      <xs:enumeration value="VAD"/>
-      <xs:enumeration value="VAT"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TaxTypeCodeType">
@@ -2554,9 +125,5 @@
   </xs:complexType>
   <xs:simpleType name="TimeReferenceCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="5"/>
-      <xs:enumeration value="29"/>
-      <xs:enumeration value="72"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="TimeReferenceCodeType">
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd	(revision 8504)
@@ -13,4 +13,5 @@
       <xs:element name="FormattedReceivedDateTime" type="qdt:FormattedDateTimeType" minOccurs="0"/>
       <xs:element name="IncludedTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
+      <xs:element name="InvoiceSpecifiedReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
     </xs:sequence>
   </xs:complexType>
@@ -60,5 +61,5 @@
       <xs:element name="IssueDateTime" type="udt:DateTimeType"/>
       <xs:element name="CopyIndicator" type="udt:IndicatorType" minOccurs="0"/>
-      <xs:element name="LanguageID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="LanguageID" type="udt:IDType" minOccurs="0"/>
       <xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="EffectiveSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/>
@@ -116,5 +117,5 @@
       <xs:element name="SpecifiedTradePaymentTerms" type="ram:TradePaymentTermsType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="SpecifiedTradeSettlementHeaderMonetarySummation" type="ram:TradeSettlementHeaderMonetarySummationType"/>
-      <xs:element name="InvoiceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
+      <xs:element name="InvoiceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="SpecifiedAdvancePayment" type="ram:AdvancePaymentType" minOccurs="0" maxOccurs="unbounded"/>
@@ -130,4 +131,5 @@
   <xs:complexType name="LineTradeAgreementType">
     <xs:sequence>
+      <xs:element name="SellerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
       <xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
       <xs:element name="QuotationReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/>
@@ -167,5 +169,5 @@
       <xs:element name="Description" type="udt:TextType"/>
       <xs:element name="AppliedAmount" type="udt:AmountType"/>
-      <xs:element name="AppliedTradeTax" type="ram:TradeTaxType" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="AppliedTradeTax" type="ram:TradeTaxType" maxOccurs="unbounded"/>
     </xs:sequence>
   </xs:complexType>
@@ -178,5 +180,5 @@
     <xs:sequence>
       <xs:element name="ContentCode" type="udt:CodeType" minOccurs="0"/>
-      <xs:element name="Content" type="udt:TextType"/>
+      <xs:element name="Content" type="udt:TextType" minOccurs="0"/>
       <xs:element name="SubjectCode" type="udt:CodeType" minOccurs="0"/>
     </xs:sequence>
@@ -208,5 +210,5 @@
       <xs:element name="LineID" type="udt:IDType" minOccurs="0"/>
       <xs:element name="TypeCode" type="qdt:DocumentCodeType" minOccurs="0"/>
-      <xs:element name="Name" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="Name" type="udt:TextType" minOccurs="0"/>
       <xs:element name="AttachmentBinaryObject" type="udt:BinaryObjectType" minOccurs="0"/>
       <xs:element name="ReferenceTypeCode" type="qdt:ReferenceCodeType" minOccurs="0"/>
@@ -280,5 +282,5 @@
       <xs:element name="CityName" type="udt:TextType" minOccurs="0"/>
       <xs:element name="CountryID" type="qdt:CountryIDType"/>
-      <xs:element name="CountrySubDivisionName" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="CountrySubDivisionName" type="udt:TextType" minOccurs="0"/>
     </xs:sequence>
   </xs:complexType>
@@ -308,5 +310,5 @@
   <xs:complexType name="TradeCountryType">
     <xs:sequence>
-      <xs:element name="ID" type="qdt:CountryIDType" minOccurs="0"/>
+      <xs:element name="ID" type="qdt:CountryIDType"/>
     </xs:sequence>
   </xs:complexType>
@@ -335,5 +337,5 @@
       <xs:element name="PostalTradeAddress" type="ram:TradeAddressType" minOccurs="0"/>
       <xs:element name="URIUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/>
-      <xs:element name="SpecifiedTaxRegistration" type="ram:TaxRegistrationType" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="SpecifiedTaxRegistration" type="ram:TaxRegistrationType" minOccurs="0" maxOccurs="2"/>
     </xs:sequence>
   </xs:complexType>
@@ -387,6 +389,11 @@
       <xs:element name="SellerAssignedID" type="udt:IDType" minOccurs="0"/>
       <xs:element name="BuyerAssignedID" type="udt:IDType" minOccurs="0"/>
+      <xs:element name="IndustryAssignedID" type="udt:IDType" minOccurs="0"/>
+      <xs:element name="ModelID" type="udt:IDType" minOccurs="0"/>
       <xs:element name="Name" type="udt:TextType"/>
       <xs:element name="Description" type="udt:TextType" minOccurs="0"/>
+      <xs:element name="BatchID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:element name="BrandName" type="udt:TextType" minOccurs="0"/>
+      <xs:element name="ModelName" type="udt:TextType" minOccurs="0"/>
       <xs:element name="ApplicableProductCharacteristic" type="ram:ProductCharacteristicType" minOccurs="0" maxOccurs="unbounded"/>
       <xs:element name="DesignatedProductClassification" type="ram:ProductClassificationType" minOccurs="0" maxOccurs="unbounded"/>
@@ -407,8 +414,8 @@
       <xs:element name="ChargeTotalAmount" type="udt:AmountType" minOccurs="0"/>
       <xs:element name="AllowanceTotalAmount" type="udt:AmountType" minOccurs="0"/>
-      <xs:element name="TaxBasisTotalAmount" type="udt:AmountType" maxOccurs="2"/>
+      <xs:element name="TaxBasisTotalAmount" type="udt:AmountType"/>
       <xs:element name="TaxTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="2"/>
       <xs:element name="RoundingAmount" type="udt:AmountType" minOccurs="0"/>
-      <xs:element name="GrandTotalAmount" type="udt:AmountType" maxOccurs="2"/>
+      <xs:element name="GrandTotalAmount" type="udt:AmountType"/>
       <xs:element name="TotalPrepaidAmount" type="udt:AmountType" minOccurs="0"/>
       <xs:element name="DuePayableAmount" type="udt:AmountType"/>
@@ -438,5 +445,5 @@
     <xs:sequence>
       <xs:element name="CalculatedAmount" type="udt:AmountType" minOccurs="0"/>
-      <xs:element name="TypeCode" type="qdt:TaxTypeCodeType" minOccurs="0"/>
+      <xs:element name="TypeCode" type="qdt:TaxTypeCodeType"/>
       <xs:element name="ExemptionReason" type="udt:TextType" minOccurs="0"/>
       <xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_EXTENDED_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd	(revision 8504)
@@ -3,6 +3,5 @@
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
-    elementFormDefault="qualified"
-    version="100.D16B">
+    elementFormDefault="qualified">
   <xs:complexType name="AmountType">
     <xs:simpleContent>
@@ -24,5 +23,5 @@
       <xs:extension base="xs:token">
         <xs:attribute name="listID" type="xs:token" use="optional"/>
-        <xs:attribute name="listVersionID" type="xs:token" use="optional"/>
+        <xs:attribute name="listVersionID" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
@@ -57,5 +56,5 @@
     <xs:simpleContent>
       <xs:extension base="xs:token">
-        <xs:attribute name="schemeID" type="xs:token" use="optional"/>
+        <xs:attribute name="schemeID" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
@@ -69,5 +68,5 @@
     <xs:simpleContent>
       <xs:extension base="xs:decimal">
-        <xs:attribute name="unitCode" type="xs:token" use="optional"/>
+        <xs:attribute name="unitCode" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
@@ -86,5 +85,5 @@
     <xs:simpleContent>
       <xs:extension base="xs:decimal">
-        <xs:attribute name="unitCode" type="xs:token" use="optional"/>
+        <xs:attribute name="unitCode" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_QualifiedDataType_100.xsd	(revision 8504)
@@ -2,263 +2,8 @@
 <xs:schema xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
-    xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
     targetNamespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
-    elementFormDefault="qualified"
-    version="100.D16B">
-  <xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" schemaLocation="FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd"/>
+    elementFormDefault="qualified">
   <xs:simpleType name="CountryIDContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="1A"/>
-      <xs:enumeration value="AD"/>
-      <xs:enumeration value="AE"/>
-      <xs:enumeration value="AF"/>
-      <xs:enumeration value="AG"/>
-      <xs:enumeration value="AI"/>
-      <xs:enumeration value="AL"/>
-      <xs:enumeration value="AM"/>
-      <xs:enumeration value="AO"/>
-      <xs:enumeration value="AQ"/>
-      <xs:enumeration value="AR"/>
-      <xs:enumeration value="AS"/>
-      <xs:enumeration value="AT"/>
-      <xs:enumeration value="AU"/>
-      <xs:enumeration value="AW"/>
-      <xs:enumeration value="AX"/>
-      <xs:enumeration value="AZ"/>
-      <xs:enumeration value="BA"/>
-      <xs:enumeration value="BB"/>
-      <xs:enumeration value="BD"/>
-      <xs:enumeration value="BE"/>
-      <xs:enumeration value="BF"/>
-      <xs:enumeration value="BG"/>
-      <xs:enumeration value="BH"/>
-      <xs:enumeration value="BI"/>
-      <xs:enumeration value="BJ"/>
-      <xs:enumeration value="BL"/>
-      <xs:enumeration value="BM"/>
-      <xs:enumeration value="BN"/>
-      <xs:enumeration value="BO"/>
-      <xs:enumeration value="BQ"/>
-      <xs:enumeration value="BR"/>
-      <xs:enumeration value="BS"/>
-      <xs:enumeration value="BT"/>
-      <xs:enumeration value="BV"/>
-      <xs:enumeration value="BW"/>
-      <xs:enumeration value="BY"/>
-      <xs:enumeration value="BZ"/>
-      <xs:enumeration value="CA"/>
-      <xs:enumeration value="CC"/>
-      <xs:enumeration value="CD"/>
-      <xs:enumeration value="CF"/>
-      <xs:enumeration value="CG"/>
-      <xs:enumeration value="CH"/>
-      <xs:enumeration value="CI"/>
-      <xs:enumeration value="CK"/>
-      <xs:enumeration value="CL"/>
-      <xs:enumeration value="CM"/>
-      <xs:enumeration value="CN"/>
-      <xs:enumeration value="CO"/>
-      <xs:enumeration value="CR"/>
-      <xs:enumeration value="CU"/>
-      <xs:enumeration value="CV"/>
-      <xs:enumeration value="CW"/>
-      <xs:enumeration value="CX"/>
-      <xs:enumeration value="CY"/>
-      <xs:enumeration value="CZ"/>
-      <xs:enumeration value="DE"/>
-      <xs:enumeration value="DJ"/>
-      <xs:enumeration value="DK"/>
-      <xs:enumeration value="DM"/>
-      <xs:enumeration value="DO"/>
-      <xs:enumeration value="DZ"/>
-      <xs:enumeration value="EC"/>
-      <xs:enumeration value="EE"/>
-      <xs:enumeration value="EG"/>
-      <xs:enumeration value="EH"/>
-      <xs:enumeration value="ER"/>
-      <xs:enumeration value="ES"/>
-      <xs:enumeration value="ET"/>
-      <xs:enumeration value="FI"/>
-      <xs:enumeration value="FJ"/>
-      <xs:enumeration value="FK"/>
-      <xs:enumeration value="FM"/>
-      <xs:enumeration value="FO"/>
-      <xs:enumeration value="FR"/>
-      <xs:enumeration value="GA"/>
-      <xs:enumeration value="GB"/>
-      <xs:enumeration value="GD"/>
-      <xs:enumeration value="GE"/>
-      <xs:enumeration value="GF"/>
-      <xs:enumeration value="GG"/>
-      <xs:enumeration value="GH"/>
-      <xs:enumeration value="GI"/>
-      <xs:enumeration value="GL"/>
-      <xs:enumeration value="GM"/>
-      <xs:enumeration value="GN"/>
-      <xs:enumeration value="GP"/>
-      <xs:enumeration value="GQ"/>
-      <xs:enumeration value="GR"/>
-      <xs:enumeration value="GS"/>
-      <xs:enumeration value="GT"/>
-      <xs:enumeration value="GU"/>
-      <xs:enumeration value="GW"/>
-      <xs:enumeration value="GY"/>
-      <xs:enumeration value="HK"/>
-      <xs:enumeration value="HM"/>
-      <xs:enumeration value="HN"/>
-      <xs:enumeration value="HR"/>
-      <xs:enumeration value="HT"/>
-      <xs:enumeration value="HU"/>
-      <xs:enumeration value="ID"/>
-      <xs:enumeration value="IE"/>
-      <xs:enumeration value="IL"/>
-      <xs:enumeration value="IM"/>
-      <xs:enumeration value="IN"/>
-      <xs:enumeration value="IO"/>
-      <xs:enumeration value="IQ"/>
-      <xs:enumeration value="IR"/>
-      <xs:enumeration value="IS"/>
-      <xs:enumeration value="IT"/>
-      <xs:enumeration value="JE"/>
-      <xs:enumeration value="JM"/>
-      <xs:enumeration value="JO"/>
-      <xs:enumeration value="JP"/>
-      <xs:enumeration value="KE"/>
-      <xs:enumeration value="KG"/>
-      <xs:enumeration value="KH"/>
-      <xs:enumeration value="KI"/>
-      <xs:enumeration value="KM"/>
-      <xs:enumeration value="KN"/>
-      <xs:enumeration value="KP"/>
-      <xs:enumeration value="KR"/>
-      <xs:enumeration value="KW"/>
-      <xs:enumeration value="KY"/>
-      <xs:enumeration value="KZ"/>
-      <xs:enumeration value="LA"/>
-      <xs:enumeration value="LB"/>
-      <xs:enumeration value="LC"/>
-      <xs:enumeration value="LI"/>
-      <xs:enumeration value="LK"/>
-      <xs:enumeration value="LR"/>
-      <xs:enumeration value="LS"/>
-      <xs:enumeration value="LT"/>
-      <xs:enumeration value="LU"/>
-      <xs:enumeration value="LV"/>
-      <xs:enumeration value="LY"/>
-      <xs:enumeration value="MA"/>
-      <xs:enumeration value="MC"/>
-      <xs:enumeration value="MD"/>
-      <xs:enumeration value="ME"/>
-      <xs:enumeration value="MF"/>
-      <xs:enumeration value="MG"/>
-      <xs:enumeration value="MH"/>
-      <xs:enumeration value="MK"/>
-      <xs:enumeration value="ML"/>
-      <xs:enumeration value="MM"/>
-      <xs:enumeration value="MN"/>
-      <xs:enumeration value="MO"/>
-      <xs:enumeration value="MP"/>
-      <xs:enumeration value="MQ"/>
-      <xs:enumeration value="MR"/>
-      <xs:enumeration value="MS"/>
-      <xs:enumeration value="MT"/>
-      <xs:enumeration value="MU"/>
-      <xs:enumeration value="MV"/>
-      <xs:enumeration value="MW"/>
-      <xs:enumeration value="MX"/>
-      <xs:enumeration value="MY"/>
-      <xs:enumeration value="MZ"/>
-      <xs:enumeration value="NA"/>
-      <xs:enumeration value="NC"/>
-      <xs:enumeration value="NE"/>
-      <xs:enumeration value="NF"/>
-      <xs:enumeration value="NG"/>
-      <xs:enumeration value="NI"/>
-      <xs:enumeration value="NL"/>
-      <xs:enumeration value="NO"/>
-      <xs:enumeration value="NP"/>
-      <xs:enumeration value="NR"/>
-      <xs:enumeration value="NU"/>
-      <xs:enumeration value="NZ"/>
-      <xs:enumeration value="OM"/>
-      <xs:enumeration value="PA"/>
-      <xs:enumeration value="PE"/>
-      <xs:enumeration value="PF"/>
-      <xs:enumeration value="PG"/>
-      <xs:enumeration value="PH"/>
-      <xs:enumeration value="PK"/>
-      <xs:enumeration value="PL"/>
-      <xs:enumeration value="PM"/>
-      <xs:enumeration value="PN"/>
-      <xs:enumeration value="PR"/>
-      <xs:enumeration value="PS"/>
-      <xs:enumeration value="PT"/>
-      <xs:enumeration value="PW"/>
-      <xs:enumeration value="PY"/>
-      <xs:enumeration value="QA"/>
-      <xs:enumeration value="RE"/>
-      <xs:enumeration value="RO"/>
-      <xs:enumeration value="RS"/>
-      <xs:enumeration value="RU"/>
-      <xs:enumeration value="RW"/>
-      <xs:enumeration value="SA"/>
-      <xs:enumeration value="SB"/>
-      <xs:enumeration value="SC"/>
-      <xs:enumeration value="SD"/>
-      <xs:enumeration value="SE"/>
-      <xs:enumeration value="SG"/>
-      <xs:enumeration value="SH"/>
-      <xs:enumeration value="SI"/>
-      <xs:enumeration value="SJ"/>
-      <xs:enumeration value="SK"/>
-      <xs:enumeration value="SL"/>
-      <xs:enumeration value="SM"/>
-      <xs:enumeration value="SN"/>
-      <xs:enumeration value="SO"/>
-      <xs:enumeration value="SR"/>
-      <xs:enumeration value="SS"/>
-      <xs:enumeration value="ST"/>
-      <xs:enumeration value="SV"/>
-      <xs:enumeration value="SX"/>
-      <xs:enumeration value="SY"/>
-      <xs:enumeration value="SZ"/>
-      <xs:enumeration value="TC"/>
-      <xs:enumeration value="TD"/>
-      <xs:enumeration value="TF"/>
-      <xs:enumeration value="TG"/>
-      <xs:enumeration value="TH"/>
-      <xs:enumeration value="TJ"/>
-      <xs:enumeration value="TK"/>
-      <xs:enumeration value="TL"/>
-      <xs:enumeration value="TM"/>
-      <xs:enumeration value="TN"/>
-      <xs:enumeration value="TO"/>
-      <xs:enumeration value="TR"/>
-      <xs:enumeration value="TT"/>
-      <xs:enumeration value="TV"/>
-      <xs:enumeration value="TW"/>
-      <xs:enumeration value="TZ"/>
-      <xs:enumeration value="UA"/>
-      <xs:enumeration value="UG"/>
-      <xs:enumeration value="UM"/>
-      <xs:enumeration value="US"/>
-      <xs:enumeration value="UY"/>
-      <xs:enumeration value="UZ"/>
-      <xs:enumeration value="VA"/>
-      <xs:enumeration value="VC"/>
-      <xs:enumeration value="VE"/>
-      <xs:enumeration value="VG"/>
-      <xs:enumeration value="VI"/>
-      <xs:enumeration value="VN"/>
-      <xs:enumeration value="VU"/>
-      <xs:enumeration value="WF"/>
-      <xs:enumeration value="WS"/>
-      <xs:enumeration value="XI"/>
-      <xs:enumeration value="YE"/>
-      <xs:enumeration value="YT"/>
-      <xs:enumeration value="ZA"/>
-      <xs:enumeration value="ZM"/>
-      <xs:enumeration value="ZW"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="CountryIDType">
@@ -268,185 +13,5 @@
   </xs:complexType>
   <xs:simpleType name="CurrencyCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="AED"/>
-      <xs:enumeration value="AFN"/>
-      <xs:enumeration value="ALL"/>
-      <xs:enumeration value="AMD"/>
-      <xs:enumeration value="ANG"/>
-      <xs:enumeration value="AOA"/>
-      <xs:enumeration value="ARS"/>
-      <xs:enumeration value="AUD"/>
-      <xs:enumeration value="AWG"/>
-      <xs:enumeration value="AZN"/>
-      <xs:enumeration value="BAM"/>
-      <xs:enumeration value="BBD"/>
-      <xs:enumeration value="BDT"/>
-      <xs:enumeration value="BGN"/>
-      <xs:enumeration value="BHD"/>
-      <xs:enumeration value="BIF"/>
-      <xs:enumeration value="BMD"/>
-      <xs:enumeration value="BND"/>
-      <xs:enumeration value="BOB"/>
-      <xs:enumeration value="BOV"/>
-      <xs:enumeration value="BRL"/>
-      <xs:enumeration value="BSD"/>
-      <xs:enumeration value="BTN"/>
-      <xs:enumeration value="BWP"/>
-      <xs:enumeration value="BYN"/>
-      <xs:enumeration value="BZD"/>
-      <xs:enumeration value="CAD"/>
-      <xs:enumeration value="CDF"/>
-      <xs:enumeration value="CHE"/>
-      <xs:enumeration value="CHF"/>
-      <xs:enumeration value="CHW"/>
-      <xs:enumeration value="CLF"/>
-      <xs:enumeration value="CLP"/>
-      <xs:enumeration value="CNY"/>
-      <xs:enumeration value="COP"/>
-      <xs:enumeration value="COU"/>
-      <xs:enumeration value="CRC"/>
-      <xs:enumeration value="CUC"/>
-      <xs:enumeration value="CUP"/>
-      <xs:enumeration value="CVE"/>
-      <xs:enumeration value="CZK"/>
-      <xs:enumeration value="DJF"/>
-      <xs:enumeration value="DKK"/>
-      <xs:enumeration value="DOP"/>
-      <xs:enumeration value="DZD"/>
-      <xs:enumeration value="EGP"/>
-      <xs:enumeration value="ERN"/>
-      <xs:enumeration value="ETB"/>
-      <xs:enumeration value="EUR"/>
-      <xs:enumeration value="FJD"/>
-      <xs:enumeration value="FKP"/>
-      <xs:enumeration value="GBP"/>
-      <xs:enumeration value="GEL"/>
-      <xs:enumeration value="GHS"/>
-      <xs:enumeration value="GIP"/>
-      <xs:enumeration value="GMD"/>
-      <xs:enumeration value="GNF"/>
-      <xs:enumeration value="GTQ"/>
-      <xs:enumeration value="GYD"/>
-      <xs:enumeration value="HKD"/>
-      <xs:enumeration value="HNL"/>
-      <xs:enumeration value="HRK"/>
-      <xs:enumeration value="HTG"/>
-      <xs:enumeration value="HUF"/>
-      <xs:enumeration value="IDR"/>
-      <xs:enumeration value="ILS"/>
-      <xs:enumeration value="INR"/>
-      <xs:enumeration value="IQD"/>
-      <xs:enumeration value="IRR"/>
-      <xs:enumeration value="ISK"/>
-      <xs:enumeration value="JMD"/>
-      <xs:enumeration value="JOD"/>
-      <xs:enumeration value="JPY"/>
-      <xs:enumeration value="KES"/>
-      <xs:enumeration value="KGS"/>
-      <xs:enumeration value="KHR"/>
-      <xs:enumeration value="KMF"/>
-      <xs:enumeration value="KPW"/>
-      <xs:enumeration value="KRW"/>
-      <xs:enumeration value="KWD"/>
-      <xs:enumeration value="KYD"/>
-      <xs:enumeration value="KZT"/>
-      <xs:enumeration value="LAK"/>
-      <xs:enumeration value="LBP"/>
-      <xs:enumeration value="LKR"/>
-      <xs:enumeration value="LRD"/>
-      <xs:enumeration value="LSL"/>
-      <xs:enumeration value="LYD"/>
-      <xs:enumeration value="MAD"/>
-      <xs:enumeration value="MDL"/>
-      <xs:enumeration value="MGA"/>
-      <xs:enumeration value="MKD"/>
-      <xs:enumeration value="MMK"/>
-      <xs:enumeration value="MNT"/>
-      <xs:enumeration value="MOP"/>
-      <xs:enumeration value="MRU"/>
-      <xs:enumeration value="MUR"/>
-      <xs:enumeration value="MVR"/>
-      <xs:enumeration value="MWK"/>
-      <xs:enumeration value="MXN"/>
-      <xs:enumeration value="MXV"/>
-      <xs:enumeration value="MYR"/>
-      <xs:enumeration value="MZN"/>
-      <xs:enumeration value="NAD"/>
-      <xs:enumeration value="NGN"/>
-      <xs:enumeration value="NIO"/>
-      <xs:enumeration value="NOK"/>
-      <xs:enumeration value="NPR"/>
-      <xs:enumeration value="NZD"/>
-      <xs:enumeration value="OMR"/>
-      <xs:enumeration value="PAB"/>
-      <xs:enumeration value="PEN"/>
-      <xs:enumeration value="PGK"/>
-      <xs:enumeration value="PHP"/>
-      <xs:enumeration value="PKR"/>
-      <xs:enumeration value="PLN"/>
-      <xs:enumeration value="PYG"/>
-      <xs:enumeration value="QAR"/>
-      <xs:enumeration value="RON"/>
-      <xs:enumeration value="RSD"/>
-      <xs:enumeration value="RUB"/>
-      <xs:enumeration value="RWF"/>
-      <xs:enumeration value="SAR"/>
-      <xs:enumeration value="SBD"/>
-      <xs:enumeration value="SCR"/>
-      <xs:enumeration value="SDG"/>
-      <xs:enumeration value="SEK"/>
-      <xs:enumeration value="SGD"/>
-      <xs:enumeration value="SHP"/>
-      <xs:enumeration value="SLL"/>
-      <xs:enumeration value="SOS"/>
-      <xs:enumeration value="SRD"/>
-      <xs:enumeration value="SSP"/>
-      <xs:enumeration value="STN"/>
-      <xs:enumeration value="SVC"/>
-      <xs:enumeration value="SYP"/>
-      <xs:enumeration value="SZL"/>
-      <xs:enumeration value="THB"/>
-      <xs:enumeration value="TJS"/>
-      <xs:enumeration value="TMT"/>
-      <xs:enumeration value="TND"/>
-      <xs:enumeration value="TOP"/>
-      <xs:enumeration value="TRY"/>
-      <xs:enumeration value="TTD"/>
-      <xs:enumeration value="TWD"/>
-      <xs:enumeration value="TZS"/>
-      <xs:enumeration value="UAH"/>
-      <xs:enumeration value="UGX"/>
-      <xs:enumeration value="USD"/>
-      <xs:enumeration value="USN"/>
-      <xs:enumeration value="UYI"/>
-      <xs:enumeration value="UYU"/>
-      <xs:enumeration value="UYW"/>
-      <xs:enumeration value="UZS"/>
-      <xs:enumeration value="VES"/>
-      <xs:enumeration value="VND"/>
-      <xs:enumeration value="VUV"/>
-      <xs:enumeration value="WST"/>
-      <xs:enumeration value="XAF"/>
-      <xs:enumeration value="XAG"/>
-      <xs:enumeration value="XAU"/>
-      <xs:enumeration value="XBA"/>
-      <xs:enumeration value="XBB"/>
-      <xs:enumeration value="XBC"/>
-      <xs:enumeration value="XBD"/>
-      <xs:enumeration value="XCD"/>
-      <xs:enumeration value="XDR"/>
-      <xs:enumeration value="XOF"/>
-      <xs:enumeration value="XPD"/>
-      <xs:enumeration value="XPF"/>
-      <xs:enumeration value="XPT"/>
-      <xs:enumeration value="XSU"/>
-      <xs:enumeration value="XTS"/>
-      <xs:enumeration value="XUA"/>
-      <xs:enumeration value="XXX"/>
-      <xs:enumeration value="YER"/>
-      <xs:enumeration value="ZAR"/>
-      <xs:enumeration value="ZMW"/>
-      <xs:enumeration value="ZWL"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="CurrencyCodeType">
@@ -456,51 +21,5 @@
   </xs:complexType>
   <xs:simpleType name="DocumentCodeContentType">
-    <xs:restriction base="xs:token">
-      <xs:enumeration value="80"/>
-      <xs:enumeration value="81"/>
-      <xs:enumeration value="82"/>
-      <xs:enumeration value="83"/>
-      <xs:enumeration value="84"/>
-      <xs:enumeration value="130"/>
-      <xs:enumeration value="202"/>
-      <xs:enumeration value="203"/>
-      <xs:enumeration value="204"/>
-      <xs:enumeration value="211"/>
-      <xs:enumeration value="261"/>
-      <xs:enumeration value="262"/>
-      <xs:enumeration value="295"/>
-      <xs:enumeration value="296"/>
-      <xs:enumeration value="308"/>
-      <xs:enumeration value="325"/>
-      <xs:enumeration value="326"/>
-      <xs:enumeration value="380"/>
-      <xs:enumeration value="381"/>
-      <xs:enumeration value="383"/>
-      <xs:enumeration value="384"/>
-      <xs:enumeration value="385"/>
-      <xs:enumeration value="386"/>
-      <xs:enumeration value="387"/>
-      <xs:enumeration value="388"/>
-      <xs:enumeration value="389"/>
-      <xs:enumeration value="390"/>
-      <xs:enumeration value="393"/>
-      <xs:enumeration value="394"/>
-      <xs:enumeration value="395"/>
-      <xs:enumeration value="396"/>
-      <xs:enumeration value="420"/>
-      <xs:enumeration value="456"/>
-      <xs:enumeration value="457"/>
-      <xs:enumeration value="458"/>
-      <xs:enumeration value="527"/>
-      <xs:enumeration value="575"/>
-      <xs:enumeration value="623"/>
-      <xs:enumeration value="633"/>
-      <xs:enumeration value="751"/>
-      <xs:enumeration value="780"/>
-      <xs:enumeration value="875"/>
-      <xs:enumeration value="876"/>
-      <xs:enumeration value="877"/>
-      <xs:enumeration value="935"/>
-    </xs:restriction>
+    <xs:restriction base="xs:token"/>
   </xs:simpleType>
   <xs:complexType name="DocumentCodeType">
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_100.xsd	(revision 8504)
@@ -79,5 +79,5 @@
     <xs:sequence>
       <xs:element name="TaxBasisTotalAmount" type="udt:AmountType"/>
-      <xs:element name="TaxTotalAmount" type="udt:AmountType" minOccurs="0"/>
+      <xs:element name="TaxTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="2"/>
       <xs:element name="GrandTotalAmount" type="udt:AmountType"/>
       <xs:element name="DuePayableAmount" type="udt:AmountType"/>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/FACTUR-X_MINIMUM_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_100.xsd	(revision 8504)
@@ -3,6 +3,5 @@
     xmlns:xs="http://www.w3.org/2001/XMLSchema"
     targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
-    elementFormDefault="qualified"
-    version="100.D16B">
+    elementFormDefault="qualified">
   <xs:complexType name="AmountType">
     <xs:simpleContent>
@@ -28,5 +27,5 @@
     <xs:simpleContent>
       <xs:extension base="xs:token">
-        <xs:attribute name="schemeID" type="xs:token" use="optional"/>
+        <xs:attribute name="schemeID" type="xs:token"/>
       </xs:extension>
     </xs:simpleContent>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC-WL.sch
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC-WL.sch	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC-WL.sch	(revision 8504)
@@ -1,5765 +1,1485 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<schema xmlns="http://purl.oclc.org/dsdl/schematron" schemaVersion="iso">
-    <title>Schema for FACTUR-X; 1.0; ACCOUNTING INFORMATION, No XML Invoice, (BASIC WITHOUT LINE)</title>
-    <ns uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" prefix="rsm"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" prefix="qdt"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" prefix="ram"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" prefix="udt"/>
-    <pattern>
-        <rule context="//ram:AdditionalReferencedDocument">
-            <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
-                Each Additional supporting document (BG-24) shall contain a Supporting document reference (BT-122).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="(ram:BasisAmount)">
-                Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).</assert>
-            <assert test="(ram:CalculatedAmount)">
-                Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).</assert>
-            <assert test="(ram:CategoryCode)">
-                Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).</assert>
-            <assert test="(ram:RateApplicablePercent) or (ram:CategoryCode = &apos;O&apos;)">
-                Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.</assert>
-            <assert test="((ram:TaxPointDate) and not (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and not (ram:DueDateTypeCode))">
-                Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.</assert>
-            <assert test="ram:CalculatedAmount = round(ram:BasisAmount * ram:RateApplicablePercent) div 100 +0 or not (ram:RateApplicablePercent)">
-                VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2.</assert>
-            <assert test="string-length(substring-after(ram:CalculatedAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;Z&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amount (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âZero rated".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" shall equal 0 (zero).</assert>
-            <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.=&apos;S&apos;]">
-            <assert test="../ram:CalculatedAmount = round(../ram:BasisAmount * ../ram:RateApplicablePercent) div 100 +0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
-            <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
-                If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).</assert>
-            <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
-                If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).</assert>
-            <assert test="(ram:CategoryTradeTax/ram:CategoryCode)">
-                Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).</assert>
-            <assert test="true()">
-                Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Document level charge (BG-21) shall have a Document level charge amount (BT-99).</assert>
-            <assert test="(ram:CategoryTradeTax/ram:CategoryCode)">
-                Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).</assert>
-            <assert test="true()">
-                Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level charge amount (BT-92) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level charge base amount (BT-93) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableProductCharacteristic">
-            <assert test="(ram:Description) and (ram:Value)">
-                Each Item attribute (BG-32) shall contain an Item attribute name (BT-160) and an Item attribute value (BT-161).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableTradeSettlementFinancialCard">
-            <assert test="string-length(ram:ID)&lt;=6 and string-length(ram:ID)&gt;=4">
-                The last 4 to 6 digits of the Payment card primary account number (BT-87) shall be present if Payment card information (BG-18) is provided in the Invoice.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:IncludedSupplyChainTradeLineItem">
-            <assert test="(ram:AssociatedDocumentLineDocument/ram:LineID!=&apos;&apos;)">
-                Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).</assert>
-            <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)">
-                Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).</assert>
-            <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)">
-                An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).</assert>
-            <assert test="(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)">
-                Each Invoice line (BG-25) shall have an Invoice line net amount (BT-131).</assert>
-            <assert test="(ram:SpecifiedTradeProduct/ram:Name!=&apos;&apos;)">
-                Each Invoice line (BG-25) shall contain the Item name (BT-153).</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)">
-                Each Invoice line (BG-25) shall contain the Item net price (BT-146).</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount) &gt;= 0">
-                The Item net price (BT-146) shall NOT be negative.</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount &gt;= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)">
-                The Item gross price (BT-148) shall NOT be negative.</assert>
-            <assert test="ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID!=&apos;&apos; or not (ram:SpecifiedTradeProduct/ram:GlobalID)">
-                The Item standard identifier (BT-157) shall have a Scheme identifier</assert>
-            <assert test="(ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode/@listID!=&apos;&apos;) or not (ram:SpecifiedTradeProduct/ram:DesignatedProductClassification)">
-                The Item classification identifier (BT-158) shall have a Scheme identifier</assert>
-            <assert test="(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode)">
-                Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).</assert>
-            <assert test="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-                An Invoice shall at least have one VAT breakdown group (BG-23).</assert>
-            <assert test="string-length(substring-after(ram:SpecifiedTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line net amount (BT-131) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:PayeeTradeParty">
-            <assert test="(ram:Name) and (not(ram:Name = ../ram:SellerTradeParty/ram:Name) and not(ram:ID = ../ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))">
-                The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SellerTaxRepresentativeTradeParty">
-            <assert test="(ram:Name)">
-                The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:PostalTradeAddress)">
-                The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:PostalTradeAddress/ram:CountryID)">
-                The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]!=&apos;&apos;)">
-                Each Seller tax representative party (BG-11) shall have a Seller tax representative VAT identifier (BT-63).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SellerTradeParty">
-            <assert test="(ram:ID) or (ram:GlobalID) or (ram:SpecifiedLegalOrganization/ram:ID) or (ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;])">
-                In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod">
-            <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
-                If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).</assert>
-            <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
-                If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = &apos;false&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Invoice line allowance (BG-27) shall have an Invoice line allowance amount (BT-136).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).</assert>
-            <assert test="true()">
-                Invoice line allowance reason code (BT-140) and Invoice line allowance reason (BT-139) shall indicate the same type of allowance reason.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line allowance amount (BT-136) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line allowance base amount (BT-137) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = &apos;true&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Invoice line charge (BG-28) shall have an Invoice line charge amount (BT-141).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line charge (BG-28) shall have an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145).</assert>
-            <assert test="true()">
-                Invoice line charge reason code (BT-145) and Invoice line charge reason (BT144) shall indicate the same type of charge reason.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line charge amount (BT-141) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line charge base amount (BT-142) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]">
-            <assert test="contains(&apos; EL AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CX CY CZ DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW &apos;, concat(&apos; &apos;, substring(.,1,2), &apos; &apos;))">
-                The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix âELâ.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT", the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                A Document level allowance (BG-20) where VAT category code (BT-95) is "Not subject to VAT" shall not contain a Document level allowance VAT rate (BT-96).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT", the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                A Document level charge (BG-21) where the VAT category code (BT-102) is "Not subject to VAT" shall not contain a Document level charge VAT rate (BT-103).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Zero rated" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation">
-            <assert test="(ram:TaxBasisTotalAmount)">
-                An Invoice shall have the Invoice total amount without VAT (BT-109).</assert>
-            <assert test="(ram:GrandTotalAmount)">
-                An Invoice shall have the Invoice total amount with VAT (BT-112).</assert>
-            <assert test="(ram:DuePayableAmount)">
-                An Invoice shall have the Amount due for payment (BT-115).</assert>
-            <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:ActualAmount)* 10 * 10 ) div 100)">
-                Sum of allowances on document level (BT-107) = S Document level allowance amount (BT-92).</assert>
-            <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;])and not (ram:ChargeTotalAmount)) or ram:ChargeTotalAmount = &#13;&#10;((round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:ActualAmount)* 10 * 10 ) div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100))">
-                Sum of charges on document level (BT-108) = S Document level charge amount (BT-99).</assert>
-            <assert test="(ram:GrandTotalAmount = round(ram:TaxBasisTotalAmount*100 + ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]*100 +0) div 100) or ((ram:GrandTotalAmount = ram:TaxBasisTotalAmount) and not (ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]))">
-                Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).</assert>
-            <assert test="string-length(substring-after(ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2.</assert>
-            <assert test="string-length(substring-after(ram:AllowanceTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.</assert>
-            <assert test="string-length(substring-after(ram:ChargeTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2.</assert>
-            <assert test="string-length(substring-after(ram:TaxBasisTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.</assert>
-            <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]">
-                The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.</assert>
-            <assert test="string-length(substring-after(ram:GrandTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.</assert>
-            <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]">
-                The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.</assert>
-            <assert test="string-length(substring-after(ram:TotalPrepaidAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Paid amount (BT-113) is 2.</assert>
-            <assert test="string-length(substring-after(ram:RoundingAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Rounding amount (BT-114) is 2.</assert>
-            <assert test="string-length(substring-after(ram:DuePayableAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.</assert>
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))">
-                If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided.</assert>
-            <assert test="(ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 - ram:AllowanceTotalAmount*100 + ram:ChargeTotalAmount*100) div 100)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 - ram:AllowanceTotalAmount*100) div 100)) and not (ram:ChargeTotalAmount)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 + ram:ChargeTotalAmount*100) div 100)) and not (ram:AllowanceTotalAmount)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount * 100) div 100)) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))">
-                Invoice total amount without VAT (BT-109) = S Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).</assert>
-            <assert test="(ram:DuePayableAmount = (round(ram:GrandTotalAmount*100 - ram:TotalPrepaidAmount*100 + ram:RoundingAmount*100) div 100)) or ((ram:DuePayableAmount = ram:GrandTotalAmount + ram:RoundingAmount) and not (ram:TotalPrepaidAmount)) or ((ram:DuePayableAmount = (round(ram:GrandTotalAmount*100 - ram:TotalPrepaidAmount*100) div 100)) and not (ram:RoundingAmount)) or ((ram:DuePayableAmount = (round(ram:GrandTotalAmount*100) div 100)) and not (ram:TotalPrepaidAmount) and not (ram:RoundingAmount))">
-                Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).</assert>
-            <assert test="(ram:LineTotalAmount)">
-                An Invoice shall have the Sum of Invoice line net amount (BT-106).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]">
-            <assert test=". = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount)*10*10)div 100)">
-                Invoice total VAT amount (BT-110) = S VAT category tax amount (BT-117).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementPaymentMeans">
-            <assert test="(ram:TypeCode)">
-                A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode=&apos;30&apos; or ram:TypeCode=&apos;58&apos;]/ram:PayerPartyDebtorFinancialAccount">
-            <assert test="(ram:IBANID) or (ram:ProprietaryID)">
-                A Payment account identifier (BT-84) shall be present if Credit transfer (BG-16) information is provided in the Invoice.</assert>
-            <assert test="(ram:IBANID) or (ram:ProprietaryID)">
-                If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;AE&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âReverse charge".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âReverse chargeâ shall be 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;E&apos;]">
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) In a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;G&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âExport outside the EU".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âExport outside the EUâ shall be 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.= &apos;K&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âIntra-community supply".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).</assert>
-            <assert test="(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString) or (../../ram:BillingSpecifiedPeriod/ram:StartDateTime) or (../../ram:BillingSpecifiedPeriod/ram:EndDateTime)">
-                In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.</assert>
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
-                In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Deliver to country code (BT-80) shall not be blank.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;L&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100)">
-                For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IGIC", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is âIGICâ and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
-            <assert test="true()">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IGIC" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;M&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100)">
-                For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IPSI", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is âIPSIâ and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
-            <assert test="true()">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IPSI" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;O&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âNot subject to VAT".</assert>
-            <assert test="ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âNot subject to VATâ shall be 0 (zero).</assert>
-            <assert test="(ram:ExemptionReason) or (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).</assert>
-            <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain other VAT breakdown groups (BG-23).</assert>
-            <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is not "Not subject to VAT".</assert>
-            <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".</assert>
-            <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level charges (BG-21) where Document level charge VAT category code (BT-102) is not "Not subject to VAT".</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT", the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intracommunity supply" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" the invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" the Invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-46).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                An Invoice line (BG-25) where the VAT category code (BT-151) is "Not subject to VAT" shall not contain an Invoiced item VAT rate (BT-152).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" the Invoiced item VAT rate (BT-152) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Zero rated" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice">
-            <assert test="(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID != &apos;&apos;)">
-                An Invoice shall have a Specification identifier (BT-24).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:ID !=&apos;&apos;)">
-                An Invoice shall have an Invoice number (BT-1).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format=&apos;102&apos;]!=&apos;&apos;)">
-                An Invoice shall have an Invoice issue date (BT-2).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:TypeCode!=&apos;&apos;)">
-                An Invoice shall have an Invoice type code (BT-3).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode!=&apos;&apos;)">
-                An Invoice shall have an Invoice currency code (BT-5).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name!=&apos;&apos;)">
-                An Invoice shall contain the Seller name (BT-27).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name!=&apos;&apos;)">
-                An Invoice shall contain the Buyer name (BT-44).</assert>
-            <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress">
-                An Invoice shall contain the Seller postal address (BG-5).</assert>
-            <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
-                The Seller postal address (BG-5) shall contain a Seller country code (BT-40).</assert>
-            <assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID/@schemeID!=&apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)">
-                The Seller electronic address (BT-34) shall have a Scheme identifier.</assert>
-            <assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID/@schemeID!=&apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)">
-                The Buyer electronic address (BT-49) shall have a Scheme identifier.</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âStandard ratedâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âZero ratedâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExempt from VATâ shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âReverse chargeâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIntra-community supplyâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Intra-community supply".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExport outside the EUâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU".</assert>
-            <assert test="not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or (     count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;])=1 and     (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;] or    //ram:CategoryTradeTax[ram:CategoryCode=&apos;O&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âNot subject to VATâ shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIGICâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC".</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIPSIâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IPSI".</assert>
-            <assert test="(number(//ram:DuePayableAmount) &gt; 0 and ((//ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime) or (//ram:SpecifiedTradePaymentTerms/ram:Description))) or not(number(//ram:DuePayableAmount)&gt;0)">
-                In case the Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.</assert>
-            <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress">
-                An Invoice shall contain the Buyer postal address (BG-8).</assert>
-            <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
-                The Buyer postal address shall contain a Buyer country code (BT-55).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:CategoryCode">
-            <report test="true()">
-                Element 'ram:CategoryCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ControlRequirementIndicator">
-            <report test="true()">
-                Element 'ram:ControlRequirementIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote">
-            <assert test="count(ram:Content)=1">
-                Element 'ram:Content' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode">
-            <report test="true()">
-                Element 'ram:ContentCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Content[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Content[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Subject">
-            <report test="true()">
-                Element 'ram:Subject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode">
-            <let name="codeValue3" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
-                Value of 'ram:SubjectCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID">
-            <report test="true()">
-                Element 'ram:LanguageID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Purpose">
-            <report test="true()">
-                Element 'ram:Purpose' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:RevisionDateTime">
-            <report test="true()">
-                Element 'ram:RevisionDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
-            <let name="codeValue1" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=1]/enumeration[@value=$codeValue1]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:VersionID">
-            <report test="true()">
-                Element 'ram:VersionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext">
-            <assert test="count(ram:BusinessProcessSpecifiedDocumentContextParameter)&lt;=1">
-                Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GuidelineSpecifiedDocumentContextParameter)=1">
-                Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:ApplicationSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:ApplicationSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BIMSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:BIMSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:SpecifiedDocumentVersion">
-            <report test="true()">
-                Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:Value">
-            <report test="true()">
-                Element 'ram:Value' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:SpecifiedDocumentVersion">
-            <report test="true()">
-                Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:Value">
-            <report test="true()">
-                Element 'ram:Value' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:MessageStandardSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:MessageStandardSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:ScenarioSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:ScenarioSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:SpecifiedTransactionID">
-            <report test="true()">
-                Element 'ram:SpecifiedTransactionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:SubsetSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:SubsetSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:TestIndicator">
-            <report test="true()">
-                Element 'ram:TestIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement">
-            <assert test="count(ram:SellerTradeParty)=1">
-                Element 'ram:SellerTradeParty' must occur exactly 1 times.</assert>
-            <assert test="count(ram:BuyerTradeParty)=1">
-                Element 'ram:BuyerTradeParty' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ApplicableTradeDeliveryTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradeDeliveryTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerAgentTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAssignedAccountantTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerAssignedAccountantTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerRequisitionerTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerRequisitionerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerTaxRepresentativeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
-                Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue8" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue9" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
-            <report test="true()">
-                Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue10" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue6" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:DemandForecastReferencedDocument">
-            <report test="true()">
-                Element 'ram:DemandForecastReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:OrderResponseReferencedDocument">
-            <report test="true()">
-                Element 'ram:OrderResponseReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PriceListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PriceListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty">
-            <report test="true()">
-                Element 'ram:ProductEndUserTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PromotionalDealReferencedDocument">
-            <report test="true()">
-                Element 'ram:PromotionalDealReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PurchaseConditionsReferencedDocument">
-            <report test="true()">
-                Element 'ram:PurchaseConditionsReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument">
-            <report test="true()">
-                Element 'ram:QuotationReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:Reference">
-            <report test="true()">
-                Element 'ram:Reference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:RequisitionerReferencedDocument">
-            <report test="true()">
-                Element 'ram:RequisitionerReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty">
-            <report test="true()">
-                Element 'ram:SalesAgentTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerAssignedAccountantTradeParty">
-            <report test="true()">
-                Element 'ram:SellerAssignedAccountantTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:SellerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:SpecifiedTaxRegistration)=1">
-                Element 'ram:SpecifiedTaxRegistration' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization">
-            <report test="true()">
-                Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue11" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue4" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue5" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue7" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue6" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject">
-            <report test="true()">
-                Element 'ram:SpecifiedProcuringProject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SupplyInstructionReferencedDocument">
-            <report test="true()">
-                Element 'ram:SupplyInstructionReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:UltimateCustomerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery">
-            <assert test="(ram:ShipToTradeParty/ram:PostalTradeAddress and ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;) or not (ram:ShipToTradeParty/ram:PostalTradeAddress)">
-                Each Deliver to address (BG-15) shall contain a Deliver to country code (BT-80).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:DescriptionBinaryObject">
-            <report test="true()">
-                Element 'ram:DescriptionBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:EarliestOccurrenceDateTime">
-            <report test="true()">
-                Element 'ram:EarliestOccurrenceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:LatestOccurrenceDateTime">
-            <report test="true()">
-                Element 'ram:LatestOccurrenceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceLogisticsLocation">
-            <report test="true()">
-                Element 'ram:OccurrenceLogisticsLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:OccurrenceSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:UnitQuantity">
-            <report test="true()">
-                Element 'ram:UnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDespatchSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualDespatchSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualPickUpSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualPickUpSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualReceiptSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualReceiptSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ConsumptionReportReferencedDocument">
-            <report test="true()">
-                Element 'ram:ConsumptionReportReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument">
-            <report test="true()">
-                Element 'ram:DeliveryNoteReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:PackingListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PackingListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:PreviousDeliverySupplyChainEvent">
-            <report test="true()">
-                Element 'ram:PreviousDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument">
-            <report test="true()">
-                Element 'ram:ReceivingAdviceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment">
-            <report test="true()">
-                Element 'ram:RelatedSupplyChainConsignment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty">
-            <report test="true()">
-                Element 'ram:ShipFromTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GlobalID)&lt;=1">
-                Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization">
-            <report test="true()">
-                Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration">
-            <report test="true()">
-                Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty">
-            <report test="true()">
-                Element 'ram:UltimateShipToTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
-            <assert test="count(ram:PaymentReference)&lt;=1">
-                Element 'ram:PaymentReference' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:InvoiceCurrencyCode)=1">
-                Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ApplicableTradeTax)&gt;=1">
-                Element 'ram:ApplicableTradeTax' must occur at least 1 times.</assert>
-            <assert test="count(ram:SpecifiedTradePaymentTerms)&lt;=1">
-                Element 'ram:SpecifiedTradePaymentTerms' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:SpecifiedTradeSettlementHeaderMonetarySummation)=1">
-                Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="count(ram:CalculatedAmount)=1">
-                Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:BasisAmount)=1">
-                Element 'ram:BasisAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
-            <let name="codeValue17" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
-            <let name="codeValue18" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
-                Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode">
-            <let name="codeValue16" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=16]/enumeration[@value=$codeValue16]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:CompleteDateTime">
-            <report test="true()">
-                Element 'ram:CompleteDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:ContinuousIndicator">
-            <report test="true()">
-                Element 'ram:ContinuousIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:DurationMeasure">
-            <report test="true()">
-                Element 'ram:DurationMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:InclusiveIndicator">
-            <report test="true()">
-                Element 'ram:InclusiveIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:OpenIndicator">
-            <report test="true()">
-                Element 'ram:OpenIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:SeasonCode">
-            <report test="true()">
-                Element 'ram:SeasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateFlexibilityCode">
-            <report test="true()">
-                Element 'ram:StartDateFlexibilityCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditReason">
-            <report test="true()">
-                Element 'ram:CreditReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditReasonCode">
-            <report test="true()">
-                Element 'ram:CreditReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceIssuerID">
-            <report test="true()">
-                Element 'ram:CreditorReferenceIssuerID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceType">
-            <report test="true()">
-                Element 'ram:CreditorReferenceType' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:CreditorReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:DuePayableAmount">
-            <report test="true()">
-                Element 'ram:DuePayableAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:FactoringAgreementReferencedDocument">
-            <report test="true()">
-                Element 'ram:FactoringAgreementReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:FactoringListReferencedDocument">
-            <report test="true()">
-                Element 'ram:FactoringListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:InvoiceApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceDateTime">
-            <report test="true()">
-                Element 'ram:InvoiceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceIssuerReference">
-            <report test="true()">
-                Element 'ram:InvoiceIssuerReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument">
-            <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
-                Each Preceding Invoice reference (BG-3) shall contain a Preceding Invoice reference (BT-25).</assert>
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue22" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty">
-            <report test="true()">
-                Element 'ram:InvoiceeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty">
-            <report test="true()">
-                Element 'ram:InvoicerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:LetterOfCreditReferencedDocument">
-            <report test="true()">
-                Element 'ram:LetterOfCreditReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:NextInvoiceDateTime">
-            <report test="true()">
-                Element 'ram:NextInvoiceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayableSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PayableSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GlobalID)&lt;=1">
-                Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue14" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
-            <report test="true()">
-                Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration">
-            <report test="true()">
-                Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty">
-            <report test="true()">
-                Element 'ram:PayerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:PaymentApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentCurrencyCode">
-            <report test="true()">
-                Element 'ram:PaymentCurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentReference[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentReference[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ProFormaInvoiceReferencedDocument">
-            <report test="true()">
-                Element 'ram:ProFormaInvoiceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PurchaseSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PurchaseSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:AmountTypeCode">
-            <report test="true()">
-                Element 'ram:AmountTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:CostReferenceDimensionPattern">
-            <report test="true()">
-                Element 'ram:CostReferenceDimensionPattern' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:SetTriggerCode">
-            <report test="true()">
-                Element 'ram:SetTriggerCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SalesSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SalesSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment">
-            <report test="true()">
-                Element 'ram:SpecifiedAdvancePayment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedFinancialAdjustment">
-            <report test="true()">
-                Element 'ram:SpecifiedFinancialAdjustment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge">
-            <report test="true()">
-                Element 'ram:SpecifiedLogisticsServiceCharge' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge">
-            <assert test="count(ram:ChargeIndicator)=1">
-                Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ActualAmount)=1">
-                Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryTradeTax)=1">
-                Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CalculationPercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculatedAmount">
-            <report test="true()">
-                Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode">
-            <let name="codeValue20" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:DueDateTypeCode">
-            <report test="true()">
-                Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ExemptionReason">
-            <report test="true()">
-                Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ExemptionReasonCode">
-            <report test="true()">
-                Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode">
-            <let name="codeValue19" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator/udt:IndicatorString">
-            <report test="true()">
-                Element 'udt:IndicatorString' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:PrepaidIndicator">
-            <report test="true()">
-                Element 'ram:PrepaidIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms">
-            <assert test="count(ram:DirectDebitMandateID)&lt;=1">
-                Element 'ram:DirectDebitMandateID' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradePaymentDiscountTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradePaymentPenaltyTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:FromEventCode">
-            <report test="true()">
-                Element 'ram:FromEventCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:InstructionTypeCode">
-            <report test="true()">
-                Element 'ram:InstructionTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount">
-            <report test="true()">
-                Element 'ram:PartialPaymentAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentPercent">
-            <report test="true()">
-                Element 'ram:PartialPaymentPercent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty">
-            <report test="true()">
-                Element 'ram:PayeeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PaymentMeansID">
-            <report test="true()">
-                Element 'ram:PaymentMeansID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:SettlementPeriodMeasure">
-            <report test="true()">
-                Element 'ram:SettlementPeriodMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementFinancialCard">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeSettlementFinancialCard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation">
-            <assert test="count(ram:LineTotalAmount)=1">
-                Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ChargeTotalAmount)&lt;=1">
-                Element 'ram:ChargeTotalAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:AllowanceTotalAmount)&lt;=1">
-                Element 'ram:AllowanceTotalAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:TaxBasisTotalAmount)=1">
-                Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TaxTotalAmount)&lt;=1">
-                Element 'ram:TaxTotalAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GrandTotalAmount)=1">
-                Element 'ram:GrandTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TotalPrepaidAmount)&lt;=1">
-                Element 'ram:TotalPrepaidAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:DuePayableAmount)=1">
-                Element 'ram:DuePayableAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:DuePayableAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrossLineTotalAmount">
-            <report test="true()">
-                Element 'ram:GrossLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:NetIncludingTaxesLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetIncludingTaxesLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:NetLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ProductValueExcludingTobaccoTaxInformationAmount">
-            <report test="true()">
-                Element 'ram:ProductValueExcludingTobaccoTaxInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RetailValueExcludingTaxInformationAmount">
-            <report test="true()">
-                Element 'ram:RetailValueExcludingTaxInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RoundingAmount">
-            <report test="true()">
-                Element 'ram:RoundingAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID]">
-            <let name="codeValue21" value="@currencyID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
-                Value of '@currencyID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalAllowanceChargeAmount">
-            <report test="true()">
-                Element 'ram:TotalAllowanceChargeAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalDepositFeeInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalDepositFeeInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalDiscountAmount">
-            <report test="true()">
-                Element 'ram:TotalDiscountAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalRetailValueInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalRetailValueInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard">
-            <report test="true()">
-                Element 'ram:ApplicableTradeSettlementFinancialCard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:GuaranteeMethodCode">
-            <report test="true()">
-                Element 'ram:GuaranteeMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName">
-            <report test="true()">
-                Element 'ram:AccountName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution">
-            <report test="true()">
-                Element 'ram:PayeeSpecifiedCreditorFinancialInstitution' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount">
-            <assert test="count(ram:IBANID)=1">
-                Element 'ram:IBANID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:AccountName">
-            <report test="true()">
-                Element 'ram:AccountName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:ProprietaryID">
-            <report test="true()">
-                Element 'ram:ProprietaryID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerSpecifiedDebtorFinancialInstitution">
-            <report test="true()">
-                Element 'ram:PayerSpecifiedDebtorFinancialInstitution' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PaymentChannelCode">
-            <report test="true()">
-                Element 'ram:PaymentChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PaymentMethodCode">
-            <report test="true()">
-                Element 'ram:PaymentMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode">
-            <let name="codeValue15" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SubtotalCalculatedTradeTax">
-            <report test="true()">
-                Element 'ram:SubtotalCalculatedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:TaxApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode">
-            <report test="true()">
-                Element 'ram:TaxCurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:UltimatePayeeTradeParty">
-            <report test="true()">
-                Element 'ram:UltimatePayeeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem">
-            <report test="true()">
-                Element 'ram:IncludedSupplyChainTradeLineItem' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ValuationBreakdownStatement">
-            <report test="true()">
-                Element 'rsm:ValuationBreakdownStatement' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
+<schema xmlns="http://purl.oclc.org/dsdl/schematron"
+    queryBinding="xslt2"
+    schemaVersion="iso">
+  <title>Schema for Factur-X; 1.0.07; Accounting, BASIC without Lines</title>
+  <ns uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" prefix="rsm"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" prefix="qdt"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" prefix="ram"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" prefix="udt"/>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="(ram:BasisAmount)">
+	[BR-45]-Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).</assert>
+      <assert test="(ram:CalculatedAmount)">
+	[BR-46]-Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).</assert>
+      <assert test="(ram:CategoryCode)">
+	[BR-47]-Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).</assert>
+      <assert test="(ram:RateApplicablePercent) or (ram:CategoryCode = &apos;O&apos;)">
+	[BR-48]-Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.</assert>
+      <assert test="((ram:TaxPointDate) and not (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and not (ram:DueDateTypeCode))">
+	[BR-CO-03]-Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.</assert>
+      <assert test="(round(.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent)) = 0 and (round(xs:decimal(ram:CalculatedAmount)) = 0)) or (round(.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent)) != 0 and ((abs(xs:decimal(ram:CalculatedAmount)) - 1 &lt;= round(abs(xs:decimal(ram:BasisAmount)) * (.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent) div 100) * 10 * 10) div 100 ) and (abs(xs:decimal(ram:CalculatedAmount)) + 1 &gt;= round(abs(xs:decimal(ram:BasisAmount)) * (.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent) div 100) * 10 * 10) div 100 ))) or (not(exists(.[normalize-space(upper-case(ram:TypeCode))=&apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent))) and (round(xs:decimal(ram:CalculatedAmount)) = 0))">
+	[BR-CO-17]-VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.</assert>
+      <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-19]-The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2.</assert>
+      <assert test="string-length(substring-after(ram:CalculatedAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-20]-The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;Z&apos;]">
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-Z-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" shall equal 0 (zero).</assert>
+      <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
+	[BR-Z-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.=&apos;S&apos;]">
+      <assert test="(abs(xs:decimal(../ram:CalculatedAmount)) - 1 &lt; round(abs(xs:decimal(../ram:BasisAmount)) * ../ram:RateApplicablePercent) div 100 ) and (abs(xs:decimal(../ram:CalculatedAmount)) + 1 &gt; round(abs(xs:decimal(../ram:BasisAmount)) * ../ram:RateApplicablePercent) div 100 )">
+	[BR-S-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
+	[BR-S-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
+      <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
+	[BR-29]-If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).</assert>
+      <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
+	[BR-CO-19]-If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator=&apos;false&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-31]-Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).</assert>
+      <assert test="(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-32]-Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-33]-Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).</assert>
+      <assert test="true()">
+	[BR-CO-05]-Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-21]-Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-01]-The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-02]-The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator=&apos;true&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-36]-Each Document level charge (BG-21) shall have a Document level charge amount (BT-99).</assert>
+      <assert test="(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-37]-Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-38]-Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).</assert>
+      <assert test="true()">
+	[BR-CO-06]-Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-22]-Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-05]-The allowed maximum number of decimals for the Document level charge amount (BT-99) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-06]-The allowed maximum number of decimals for the Document level charge base amount (BT-100) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:PayeeTradeParty">
+      <assert test="(ram:Name) and (not(ram:Name = ../ram:SellerTradeParty/ram:Name) and not(ram:ID = ../ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))">
+	[BR-17]-The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SellerTaxRepresentativeTradeParty">
+      <assert test="(ram:Name)">
+	[BR-18]-The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:PostalTradeAddress)">
+	[BR-19]-The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:PostalTradeAddress/ram:CountryID)">
+	[BR-20]-The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]!=&apos;&apos;)">
+	[BR-56]-Each Seller tax representative party (BG-11) shall have a Seller tax representative VAT identifier (BT-63).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SellerTradeParty">
+      <assert test="(ram:ID) or (ram:GlobalID) or (ram:SpecifiedLegalOrganization/ram:ID) or (ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;])">
+	[BR-CO-26]-In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]">
+      <assert test="contains(&apos; 1A AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH EL ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS XI YE YT ZA ZM ZW &apos;, concat(&apos; &apos;, substring(.,1,2), &apos; &apos;))">
+	[BR-CO-09]-The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix âELâ.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge">
+      <assert test="(ram:ChargeIndicator)">
+	[BR-66]-Each Specified Trade Allowance Charge (BG-20)(BG-21) shall contain a Charge Indicator.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT", the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Intra-community supply" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-O-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-06]-A Document level allowance (BG-20) where VAT category code (BT-95) is "Not subject to VAT" shall not contain a Document level allowance VAT rate (BT-96).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT", the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-O-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-07]-A Document level charge (BG-21) where the VAT category code (BT-102) is "Not subject to VAT" shall not contain a Document level charge VAT rate (BT-103).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-04]-An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Zero rated" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation">
+      <assert test="(ram:LineTotalAmount)">
+	[BR-12]-An Invoice shall have the Sum of Invoice line net amount (BT-106).</assert>
+      <assert test="(ram:TaxBasisTotalAmount)">
+	[BR-13]-An Invoice shall have the Invoice total amount without VAT (BT-109).</assert>
+      <assert test="(ram:GrandTotalAmount)">
+	[BR-14]-An Invoice shall have the Invoice total amount with VAT (BT-112).</assert>
+      <assert test="(ram:DuePayableAmount)">
+	[BR-15]-An Invoice shall have the Amount due for payment (BT-115).</assert>
+      <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:ActualAmount)* 10 * 10 ) div 100)">
+	[BR-CO-11]-Sum of allowances on document level (BT-107) = Î£ Document level allowance amount (BT-92).</assert>
+      <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;])and not (ram:ChargeTotalAmount)) or (round (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount * 10 * 10) div 100)= &#13;&#10;round(((round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:ActualAmount)* 10 * 10 ) div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100))*10*10) div 100">
+	[BR-CO-12]-Sum of charges on document level (BT-108) = Î£ Document level charge amount (BT-99).</assert>
+      <assert test="(xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) or &#13;&#10;    ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount)) *10 * 10) div 100)  and not (ram:ChargeTotalAmount)) or &#13;&#10;    ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100)  and not (ram:AllowanceTotalAmount)) or &#13;&#10;    ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount))  *10 * 10) div 100) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))">
+	[BR-CO-13]-Invoice total amount without VAT (BT-109) = Î£ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).</assert>
+      <assert test="every $Currency &#13;&#10;                                in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode&#13;&#10;                                satisfies (  &#13;&#10;                                  count ( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=$Currency] ) eq 1 and  &#13;&#10;                                  (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = round( &#13;&#10;                                    (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount) + &#13;&#10;                                    (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxTotalAmount[@currencyID=$Currency]))) * 10 * 10) div 100)) or&#13;&#10;                                (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount)))">
+	[BR-CO-15]-Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).</assert>
+      <assert test="(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))">
+	[BR-CO-16]-Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).</assert>
+      <assert test="string-length(substring-after(ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-09]-The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2.</assert>
+      <assert test="string-length(substring-after(ram:AllowanceTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-10]-The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.</assert>
+      <assert test="string-length(substring-after(ram:ChargeTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-11]-The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2.</assert>
+      <assert test="string-length(substring-after(ram:TaxBasisTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-12]-The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.</assert>
+      <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]">
+	[BR-DEC-13]-The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.</assert>
+      <assert test="string-length(substring-after(ram:GrandTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-14]-The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.</assert>
+      <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]">
+	[BR-DEC-15]-The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.</assert>
+      <assert test="string-length(substring-after(ram:TotalPrepaidAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-16]-The allowed maximum number of decimals for the Paid amount (BT-113) is 2.</assert>
+      <assert test="string-length(substring-after(ram:RoundingAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-17]-The allowed maximum number of decimals for the Rounding amount (BT-114) is 2.</assert>
+      <assert test="string-length(substring-after(ram:DuePayableAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-18]-The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.</assert>
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))">
+	[BR-53]-If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]">
+      <assert test=". = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount)*10*10)div 100)">
+	[BR-CO-14]-Invoice total VAT amount (BT-110) = Î£ VAT category tax amount (BT-117).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementPaymentMeans">
+      <assert test="(ram:TypeCode)">
+	[BR-49]-A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).</assert>
+      <assert test="(ram:PayeePartyCreditorFinancialAccount/ram:IBANID) or (ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID) or (not(ram:PayeePartyCreditorFinancialAccount/ram:IBANID) and not(ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID))">
+	[BR-CO-27]-Either the IBAN or a Proprietary ID (BT-84) shall be used.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode=&apos;30&apos; or ram:TypeCode=&apos;58&apos;]/ram:PayerPartyDebtorFinancialAccount">
+      <assert test="(ram:IBANID) or (ram:ProprietaryID)">
+	[BR-50]-A Payment account identifier (BT-84) shall be present if Credit transfer (BG-16) information is provided in the Invoice.</assert>
+      <assert test="(ram:IBANID) or (ram:ProprietaryID)">
+	[BR-61]-If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
+      <assert test="ram:ApplicableTradeTax">
+	[BR-CO-18]-An Invoice shall at least have one VAT breakdown group (BG-23).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;AE&apos;]">
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-AE-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-AE-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;E&apos;]">
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-E-09]-The VAT category tax amount (BT-117) In a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-E-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;G&apos;]">
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-G-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-G-10]-A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.= &apos;K&apos;]">
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-IC-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-IC-10]-A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).</assert>
+      <assert test="(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString) or (../../ram:BillingSpecifiedPeriod/ram:StartDateTime) or (../../ram:BillingSpecifiedPeriod/ram:EndDateTime)">
+	[BR-IC-11]-In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.</assert>
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+	[BR-IC-12]-In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Deliver to country code (BT-80) shall not be blank.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="true()">
+	[BR-AF-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
+	[BR-AF-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IGIC" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="true()">
+	[BR-AG-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
+	[BR-AG-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IPSI" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="ram:CalculatedAmount = 0">
+	[BR-O-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Not subject to VAT" shall be 0 (zero).</assert>
+      <assert test="(ram:ExemptionReason) or (ram:ExemptionReasonCode)">
+	[BR-O-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).</assert>
+      <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-11]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain other VAT breakdown groups (BG-23).</assert>
+      <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-13]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".</assert>
+      <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-14]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level charges (BG-21) where Document level charge VAT category code (BT-102) is not "Not subject to VAT".</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice">
+      <assert test="(number(//ram:DuePayableAmount) &gt; 0 and ((//ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime) or (//ram:SpecifiedTradePaymentTerms/ram:Description))) or not(number(//ram:DuePayableAmount) &gt; 0)">
+	[BR-CO-25]-In case the Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.</assert>
+      <assert test="(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID != &apos;&apos;)">
+	[BR-01]-An Invoice shall have a Specification identifier (BT-24).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:ID !=&apos;&apos;)">
+	[BR-02]-An Invoice shall have an Invoice number (BT-1).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format=&apos;102&apos;]!=&apos;&apos;)">
+	[BR-03]-An Invoice shall have an Invoice issue date (BT-2).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:TypeCode!=&apos;&apos;)">
+	[BR-04]-An Invoice shall have an Invoice type code (BT-3).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode!=&apos;&apos;)">
+	[BR-05]-An Invoice shall have an Invoice currency code (BT-5).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name!=&apos;&apos;)">
+	[BR-06]-An Invoice shall contain the Seller name (BT-27).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name!=&apos;&apos;)">
+	[BR-07]-An Invoice shall contain the Buyer name (BT-44).</assert>
+      <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress">
+	[BR-08]-An Invoice shall contain the Seller postal address (BG-5).</assert>
+      <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
+	[BR-09]-The Seller postal address (BG-5) shall contain a Seller country code (BT-40).</assert>
+      <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress">
+	[BR-10]-An Invoice shall contain the Buyer postal address (BG-8).</assert>
+      <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
+	[BR-11]-The Buyer postal address shall contain a Buyer country code (BT-55).</assert>
+      <assert test="normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != &apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)">
+	[BR-62]-The Seller electronic address (BT-34) shall have a Scheme identifier.</assert>
+      <assert test="normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != &apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)">
+	[BR-63]-The Buyer electronic address (BT-49) shall have a Scheme identifier.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote">
+      <assert test="count(ram:Content)=1">
+	Element 'ram:Content' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SubjectCode)&lt;=1">
+	Element 'ram:SubjectCode' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode">
+      <let name="codeValue4" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
+	Value of 'ram:SubjectCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString">
+      <assert test="@format">
+	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"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
+      <let name="codeValue2" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext">
+      <assert test="count(ram:BusinessProcessSpecifiedDocumentContextParameter)&lt;=1">
+	Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GuidelineSpecifiedDocumentContextParameter)=1">
+	Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID">
+      <let name="codeValue1" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=1]/enumeration[@value=$codeValue1]">
+	Value of 'ram:ID' is not allowed.</assert>
+    </rule>
+  </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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement">
+      <assert test="count(ram:SellerTradeParty)=1">
+	Element 'ram:SellerTradeParty' must occur exactly 1 times.</assert>
+      <assert test="count(ram:BuyerTradeParty)=1">
+	Element 'ram:BuyerTradeParty' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GlobalID)&lt;=1">
+	Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue5" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue6" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
+      <report test="true()">
+	Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
+      <let name="codeValue9" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue8" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty">
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)=1">
+	Element 'ram:SpecifiedTaxRegistration' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID">
+      <report test="true()">
+	Element 'ram:GlobalID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID">
+      <report test="true()">
+	Element 'ram:ID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization">
+      <report test="true()">
+	Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
+      <let name="codeValue10" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication">
+      <report test="true()">
+	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty">
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;])&lt;=1">
+	Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="VA"]' may occur at maximum 1 times.</assert>
+      <assert 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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue5" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue6" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
+	Value of '@schemeID' is not allowed.</assert>
+    </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;)]">
+      <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue8" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery">
+      <assert test="(ram:ShipToTradeParty/ram:PostalTradeAddress and ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;) or not (ram:ShipToTradeParty/ram:PostalTradeAddress)">
+	[BR-57]-Each Deliver to address (BG-15) shall contain a Deliver to country code (BT-80).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent">
+      <assert test="count(ram:OccurrenceDateTime)=1">
+	Element 'ram:OccurrenceDateTime' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GlobalID)&lt;=1">
+	Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue5" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization">
+      <report test="true()">
+	Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration">
+      <report test="true()">
+	Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication">
+      <report test="true()">
+	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
+      <assert test="count(ram:PaymentReference)&lt;=1">
+	Element 'ram:PaymentReference' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:InvoiceCurrencyCode)=1">
+	Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ApplicableTradeTax)&gt;=1">
+	Element 'ram:ApplicableTradeTax' must occur at least 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradePaymentTerms)&lt;=1">
+	Element 'ram:SpecifiedTradePaymentTerms' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradeSettlementHeaderMonetarySummation)=1">
+	Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ReceivableSpecifiedTradeAccountingAccount)&lt;=1">
+	Element 'ram:ReceivableSpecifiedTradeAccountingAccount' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="count(ram:CalculatedAmount)=1">
+	Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:BasisAmount)=1">
+	Element 'ram:BasisAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
+      <let name="codeValue14" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode">
+      <let name="codeValue16" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=16]/enumeration[@value=$codeValue16]">
+	Value of 'ram:DueDateTypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
+      <let name="codeValue15" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
+	Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode">
+      <let name="codeValue11" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
+	Value of 'ram:InvoiceCurrencyCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument">
+      <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
+	[BR-55]-Each Preceding Invoice reference (BG-3) shall contain a Preceding Invoice reference (BT-25).</assert>
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue21" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GlobalID)&lt;=1">
+	Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue5" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress">
+      <report test="true()">
+	Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue6" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
+      <report test="true()">
+	Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration">
+      <report test="true()">
+	Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication">
+      <report test="true()">
+	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator=&quot;false&quot;) and  not(ram:ChargeIndicator/udt:Indicator=&quot;true&quot;)]">
+      <report test="true()">
+	Element variant 'ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator="false") and  not(ram:ChargeIndicator/udt:Indicator="true")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryTradeTax)=1">
+	Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:CategoryCode">
+      <let name="codeValue14" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:TypeCode">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ReasonCode">
+      <let name="codeValue17" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryTradeTax)=1">
+	Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:CategoryCode">
+      <let name="codeValue14" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:TypeCode">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ReasonCode">
+      <let name="codeValue18" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms">
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:DirectDebitMandateID)&lt;=1">
+	Element 'ram:DirectDebitMandateID' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation">
+      <assert test="count(ram:LineTotalAmount)=1">
+	Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ChargeTotalAmount)&lt;=1">
+	Element 'ram:ChargeTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:AllowanceTotalAmount)&lt;=1">
+	Element 'ram:AllowanceTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TaxBasisTotalAmount)=1">
+	Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode])&lt;=1">
+	Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode]' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode])&lt;=1">
+	Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode]' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GrandTotalAmount)=1">
+	Element 'ram:GrandTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TotalPrepaidAmount)&lt;=1">
+	Element 'ram:TotalPrepaidAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:DuePayableAmount)=1">
+	Element 'ram:DuePayableAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and  not(@currencyID=../../ram:TaxCurrencyCode)]">
+      <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode and @currencyID]">
+      <let name="codeValue19" value="@currencyID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	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]">
+      <assert test="@currencyID">
+	Attribute '@currencyID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode and @currencyID]">
+      <let name="codeValue20" value="@currencyID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@currencyID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode]">
+      <assert test="@currencyID">
+	Attribute '@currencyID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:PayeePartyCreditorFinancialAccount)&lt;=1">
+	Element 'ram:PayeePartyCreditorFinancialAccount' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount">
+      <assert test="count(ram:IBANID)=1">
+	Element 'ram:IBANID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode">
+      <let name="codeValue12" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode">
+      <let name="codeValue11" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC-WL_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
+	Value of 'ram:TaxCurrencyCode' is not allowed.</assert>
+    </rule>
+  </pattern>
 </schema>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC-WL_codedb.xml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC-WL_codedb.xml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC-WL_codedb.xml	(revision 8504)
@@ -1,2276 +1,2190 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <codedb>
-    <cl id="1">
-        <enumeration value="80"/>
-        <enumeration value="81"/>
-        <enumeration value="82"/>
-        <enumeration value="83"/>
-        <enumeration value="84"/>
-        <enumeration value="130"/>
-        <enumeration value="202"/>
-        <enumeration value="203"/>
-        <enumeration value="204"/>
-        <enumeration value="211"/>
-        <enumeration value="261"/>
-        <enumeration value="262"/>
-        <enumeration value="295"/>
-        <enumeration value="296"/>
-        <enumeration value="308"/>
-        <enumeration value="325"/>
-        <enumeration value="326"/>
-        <enumeration value="380"/>
-        <enumeration value="381"/>
-        <enumeration value="383"/>
-        <enumeration value="384"/>
-        <enumeration value="385"/>
-        <enumeration value="386"/>
-        <enumeration value="387"/>
-        <enumeration value="388"/>
-        <enumeration value="389"/>
-        <enumeration value="390"/>
-        <enumeration value="393"/>
-        <enumeration value="394"/>
-        <enumeration value="395"/>
-        <enumeration value="396"/>
-        <enumeration value="420"/>
-        <enumeration value="456"/>
-        <enumeration value="457"/>
-        <enumeration value="458"/>
-        <enumeration value="527"/>
-        <enumeration value="575"/>
-        <enumeration value="623"/>
-        <enumeration value="633"/>
-        <enumeration value="751"/>
-        <enumeration value="780"/>
-        <enumeration value="935"/>
-    </cl>
-    <cl id="2">
-        <enumeration value="102"/>
-    </cl>
-    <cl id="3">
-        <enumeration value="AAA"/>
-        <enumeration value="AAB"/>
-        <enumeration value="AAC"/>
-        <enumeration value="AAD"/>
-        <enumeration value="AAE"/>
-        <enumeration value="AAF"/>
-        <enumeration value="AAG"/>
-        <enumeration value="AAI"/>
-        <enumeration value="AAJ"/>
-        <enumeration value="AAK"/>
-        <enumeration value="AAL"/>
-        <enumeration value="AAM"/>
-        <enumeration value="AAN"/>
-        <enumeration value="AAO"/>
-        <enumeration value="AAP"/>
-        <enumeration value="AAQ"/>
-        <enumeration value="AAR"/>
-        <enumeration value="AAS"/>
-        <enumeration value="AAT"/>
-        <enumeration value="AAU"/>
-        <enumeration value="AAV"/>
-        <enumeration value="AAW"/>
-        <enumeration value="AAX"/>
-        <enumeration value="AAY"/>
-        <enumeration value="AAZ"/>
-        <enumeration value="ABA"/>
-        <enumeration value="ABB"/>
-        <enumeration value="ABC"/>
-        <enumeration value="ABD"/>
-        <enumeration value="ABE"/>
-        <enumeration value="ABF"/>
-        <enumeration value="ABG"/>
-        <enumeration value="ABH"/>
-        <enumeration value="ABI"/>
-        <enumeration value="ABJ"/>
-        <enumeration value="ABK"/>
-        <enumeration value="ABL"/>
-        <enumeration value="ABM"/>
-        <enumeration value="ABN"/>
-        <enumeration value="ABO"/>
-        <enumeration value="ABP"/>
-        <enumeration value="ABQ"/>
-        <enumeration value="ABR"/>
-        <enumeration value="ABS"/>
-        <enumeration value="ABT"/>
-        <enumeration value="ABU"/>
-        <enumeration value="ABV"/>
-        <enumeration value="ABW"/>
-        <enumeration value="ABX"/>
-        <enumeration value="ABZ"/>
-        <enumeration value="ACA"/>
-        <enumeration value="ACB"/>
-        <enumeration value="ACC"/>
-        <enumeration value="ACD"/>
-        <enumeration value="ACE"/>
-        <enumeration value="ACF"/>
-        <enumeration value="ACG"/>
-        <enumeration value="ACH"/>
-        <enumeration value="ACI"/>
-        <enumeration value="ACJ"/>
-        <enumeration value="ACK"/>
-        <enumeration value="ACL"/>
-        <enumeration value="ACM"/>
-        <enumeration value="ACN"/>
-        <enumeration value="ACO"/>
-        <enumeration value="ACP"/>
-        <enumeration value="ACQ"/>
-        <enumeration value="ACR"/>
-        <enumeration value="ACS"/>
-        <enumeration value="ACT"/>
-        <enumeration value="ACU"/>
-        <enumeration value="ACV"/>
-        <enumeration value="ACW"/>
-        <enumeration value="ACX"/>
-        <enumeration value="ACY"/>
-        <enumeration value="ACZ"/>
-        <enumeration value="ADA"/>
-        <enumeration value="ADB"/>
-        <enumeration value="ADC"/>
-        <enumeration value="ADD"/>
-        <enumeration value="ADE"/>
-        <enumeration value="ADF"/>
-        <enumeration value="ADG"/>
-        <enumeration value="ADH"/>
-        <enumeration value="ADI"/>
-        <enumeration value="ADJ"/>
-        <enumeration value="ADK"/>
-        <enumeration value="ADL"/>
-        <enumeration value="ADM"/>
-        <enumeration value="ADN"/>
-        <enumeration value="ADO"/>
-        <enumeration value="ADP"/>
-        <enumeration value="ADQ"/>
-        <enumeration value="ADR"/>
-        <enumeration value="ADS"/>
-        <enumeration value="ADT"/>
-        <enumeration value="ADU"/>
-        <enumeration value="ADV"/>
-        <enumeration value="ADW"/>
-        <enumeration value="ADX"/>
-        <enumeration value="ADY"/>
-        <enumeration value="ADZ"/>
-        <enumeration value="AEA"/>
-        <enumeration value="AEB"/>
-        <enumeration value="AEC"/>
-        <enumeration value="AED"/>
-        <enumeration value="AEE"/>
-        <enumeration value="AEF"/>
-        <enumeration value="AEG"/>
-        <enumeration value="AEH"/>
-        <enumeration value="AEI"/>
-        <enumeration value="AEJ"/>
-        <enumeration value="AEK"/>
-        <enumeration value="AEL"/>
-        <enumeration value="AEM"/>
-        <enumeration value="AEN"/>
-        <enumeration value="AEO"/>
-        <enumeration value="AEP"/>
-        <enumeration value="AEQ"/>
-        <enumeration value="AER"/>
-        <enumeration value="AES"/>
-        <enumeration value="AET"/>
-        <enumeration value="AEU"/>
-        <enumeration value="AEV"/>
-        <enumeration value="AEW"/>
-        <enumeration value="AEX"/>
-        <enumeration value="AEY"/>
-        <enumeration value="AEZ"/>
-        <enumeration value="AFA"/>
-        <enumeration value="AFB"/>
-        <enumeration value="AFC"/>
-        <enumeration value="AFD"/>
-        <enumeration value="AFE"/>
-        <enumeration value="AFF"/>
-        <enumeration value="AFG"/>
-        <enumeration value="AFH"/>
-        <enumeration value="AFI"/>
-        <enumeration value="AFJ"/>
-        <enumeration value="AFK"/>
-        <enumeration value="AFL"/>
-        <enumeration value="AFM"/>
-        <enumeration value="AFN"/>
-        <enumeration value="AFO"/>
-        <enumeration value="AFP"/>
-        <enumeration value="AFQ"/>
-        <enumeration value="AFR"/>
-        <enumeration value="AFS"/>
-        <enumeration value="AFT"/>
-        <enumeration value="AFU"/>
-        <enumeration value="AFV"/>
-        <enumeration value="AFW"/>
-        <enumeration value="AFX"/>
-        <enumeration value="AFY"/>
-        <enumeration value="AFZ"/>
-        <enumeration value="AGA"/>
-        <enumeration value="AGB"/>
-        <enumeration value="AGC"/>
-        <enumeration value="AGD"/>
-        <enumeration value="AGE"/>
-        <enumeration value="AGF"/>
-        <enumeration value="AGG"/>
-        <enumeration value="AGH"/>
-        <enumeration value="AGI"/>
-        <enumeration value="AGJ"/>
-        <enumeration value="AGK"/>
-        <enumeration value="AGL"/>
-        <enumeration value="AGM"/>
-        <enumeration value="AGN"/>
-        <enumeration value="AGO"/>
-        <enumeration value="AGP"/>
-        <enumeration value="AGQ"/>
-        <enumeration value="AGR"/>
-        <enumeration value="AGS"/>
-        <enumeration value="AGT"/>
-        <enumeration value="AGU"/>
-        <enumeration value="AGV"/>
-        <enumeration value="AGW"/>
-        <enumeration value="AGX"/>
-        <enumeration value="AGY"/>
-        <enumeration value="AGZ"/>
-        <enumeration value="AHA"/>
-        <enumeration value="AHB"/>
-        <enumeration value="AHC"/>
-        <enumeration value="AHD"/>
-        <enumeration value="AHE"/>
-        <enumeration value="AHF"/>
-        <enumeration value="AHG"/>
-        <enumeration value="AHH"/>
-        <enumeration value="AHI"/>
-        <enumeration value="AHJ"/>
-        <enumeration value="AHK"/>
-        <enumeration value="AHL"/>
-        <enumeration value="AHM"/>
-        <enumeration value="AHN"/>
-        <enumeration value="AHO"/>
-        <enumeration value="AHP"/>
-        <enumeration value="AHQ"/>
-        <enumeration value="AHR"/>
-        <enumeration value="AHS"/>
-        <enumeration value="AHT"/>
-        <enumeration value="AHU"/>
-        <enumeration value="AHV"/>
-        <enumeration value="AHW"/>
-        <enumeration value="AHX"/>
-        <enumeration value="AHY"/>
-        <enumeration value="AHZ"/>
-        <enumeration value="AIA"/>
-        <enumeration value="AIB"/>
-        <enumeration value="AIC"/>
-        <enumeration value="AID"/>
-        <enumeration value="AIE"/>
-        <enumeration value="AIF"/>
-        <enumeration value="AIG"/>
-        <enumeration value="AIH"/>
-        <enumeration value="AII"/>
-        <enumeration value="AIJ"/>
-        <enumeration value="AIK"/>
-        <enumeration value="AIL"/>
-        <enumeration value="AIM"/>
-        <enumeration value="AIN"/>
-        <enumeration value="AIO"/>
-        <enumeration value="AIP"/>
-        <enumeration value="AIQ"/>
-        <enumeration value="AIR"/>
-        <enumeration value="AIS"/>
-        <enumeration value="AIT"/>
-        <enumeration value="AIU"/>
-        <enumeration value="AIV"/>
-        <enumeration value="AIW"/>
-        <enumeration value="AIX"/>
-        <enumeration value="AIY"/>
-        <enumeration value="AIZ"/>
-        <enumeration value="AJA"/>
-        <enumeration value="AJB"/>
-        <enumeration value="ALC"/>
-        <enumeration value="ALD"/>
-        <enumeration value="ALE"/>
-        <enumeration value="ALF"/>
-        <enumeration value="ALG"/>
-        <enumeration value="ALH"/>
-        <enumeration value="ALI"/>
-        <enumeration value="ALJ"/>
-        <enumeration value="ALK"/>
-        <enumeration value="ALL"/>
-        <enumeration value="ALM"/>
-        <enumeration value="ALN"/>
-        <enumeration value="ALO"/>
-        <enumeration value="ALP"/>
-        <enumeration value="ALQ"/>
-        <enumeration value="ARR"/>
-        <enumeration value="ARS"/>
-        <enumeration value="AUT"/>
-        <enumeration value="AUU"/>
-        <enumeration value="AUV"/>
-        <enumeration value="AUW"/>
-        <enumeration value="AUX"/>
-        <enumeration value="AUY"/>
-        <enumeration value="AUZ"/>
-        <enumeration value="AVA"/>
-        <enumeration value="AVB"/>
-        <enumeration value="AVC"/>
-        <enumeration value="AVD"/>
-        <enumeration value="AVE"/>
-        <enumeration value="AVF"/>
-        <enumeration value="BAG"/>
-        <enumeration value="BAH"/>
-        <enumeration value="BAI"/>
-        <enumeration value="BAJ"/>
-        <enumeration value="BAK"/>
-        <enumeration value="BAL"/>
-        <enumeration value="BAM"/>
-        <enumeration value="BAN"/>
-        <enumeration value="BAO"/>
-        <enumeration value="BAP"/>
-        <enumeration value="BAQ"/>
-        <enumeration value="BAR"/>
-        <enumeration value="BAS"/>
-        <enumeration value="BLC"/>
-        <enumeration value="BLD"/>
-        <enumeration value="BLE"/>
-        <enumeration value="BLF"/>
-        <enumeration value="BLG"/>
-        <enumeration value="BLH"/>
-        <enumeration value="BLI"/>
-        <enumeration value="BLJ"/>
-        <enumeration value="BLK"/>
-        <enumeration value="BLL"/>
-        <enumeration value="BLM"/>
-        <enumeration value="BLN"/>
-        <enumeration value="BLO"/>
-        <enumeration value="BLP"/>
-        <enumeration value="BLQ"/>
-        <enumeration value="BLR"/>
-        <enumeration value="BLS"/>
-        <enumeration value="BLT"/>
-        <enumeration value="BLU"/>
-        <enumeration value="BLV"/>
-        <enumeration value="BLW"/>
-        <enumeration value="BLX"/>
-        <enumeration value="BLY"/>
-        <enumeration value="BLZ"/>
-        <enumeration value="BMA"/>
-        <enumeration value="BMB"/>
-        <enumeration value="BMC"/>
-        <enumeration value="BMD"/>
-        <enumeration value="BME"/>
-        <enumeration value="CCI"/>
-        <enumeration value="CEX"/>
-        <enumeration value="CHG"/>
-        <enumeration value="CIP"/>
-        <enumeration value="CLP"/>
-        <enumeration value="CLR"/>
-        <enumeration value="COI"/>
-        <enumeration value="CUR"/>
-        <enumeration value="CUS"/>
-        <enumeration value="DAR"/>
-        <enumeration value="DCL"/>
-        <enumeration value="DEL"/>
-        <enumeration value="DIN"/>
-        <enumeration value="DOC"/>
-        <enumeration value="DUT"/>
-        <enumeration value="EUR"/>
-        <enumeration value="FBC"/>
-        <enumeration value="GBL"/>
-        <enumeration value="GEN"/>
-        <enumeration value="GS7"/>
-        <enumeration value="HAN"/>
-        <enumeration value="HAZ"/>
-        <enumeration value="ICN"/>
-        <enumeration value="IIN"/>
-        <enumeration value="IMI"/>
-        <enumeration value="IND"/>
-        <enumeration value="INS"/>
-        <enumeration value="INV"/>
-        <enumeration value="IRP"/>
-        <enumeration value="ITR"/>
-        <enumeration value="ITS"/>
-        <enumeration value="LAN"/>
-        <enumeration value="LIN"/>
-        <enumeration value="LOI"/>
-        <enumeration value="MCO"/>
-        <enumeration value="MDH"/>
-        <enumeration value="MKS"/>
-        <enumeration value="ORI"/>
-        <enumeration value="OSI"/>
-        <enumeration value="PAC"/>
-        <enumeration value="PAI"/>
-        <enumeration value="PAY"/>
-        <enumeration value="PKG"/>
-        <enumeration value="PKT"/>
-        <enumeration value="PMD"/>
-        <enumeration value="PMT"/>
-        <enumeration value="PRD"/>
-        <enumeration value="PRF"/>
-        <enumeration value="PRI"/>
-        <enumeration value="PUR"/>
-        <enumeration value="QIN"/>
-        <enumeration value="QQD"/>
-        <enumeration value="QUT"/>
-        <enumeration value="RAH"/>
-        <enumeration value="REG"/>
-        <enumeration value="RET"/>
-        <enumeration value="REV"/>
-        <enumeration value="RQR"/>
-        <enumeration value="SAF"/>
-        <enumeration value="SIC"/>
-        <enumeration value="SIN"/>
-        <enumeration value="SLR"/>
-        <enumeration value="SPA"/>
-        <enumeration value="SPG"/>
-        <enumeration value="SPH"/>
-        <enumeration value="SPP"/>
-        <enumeration value="SPT"/>
-        <enumeration value="SRN"/>
-        <enumeration value="SSR"/>
-        <enumeration value="SUR"/>
-        <enumeration value="TCA"/>
-        <enumeration value="TDT"/>
-        <enumeration value="TRA"/>
-        <enumeration value="TRR"/>
-        <enumeration value="TXD"/>
-        <enumeration value="WHI"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="4">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="5">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="6">
-        <enumeration value="0002"/>
-        <enumeration value="0007"/>
-        <enumeration value="0009"/>
-        <enumeration value="0037"/>
-        <enumeration value="0060"/>
-        <enumeration value="0088"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0106"/>
-        <enumeration value="0130"/>
-        <enumeration value="0135"/>
-        <enumeration value="0142"/>
-        <enumeration value="0151"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-        <enumeration value="9901"/>
-        <enumeration value="9902"/>
-        <enumeration value="9904"/>
-        <enumeration value="9905"/>
-        <enumeration value="9906"/>
-        <enumeration value="9907"/>
-        <enumeration value="9910"/>
-        <enumeration value="9913"/>
-        <enumeration value="9914"/>
-        <enumeration value="9915"/>
-        <enumeration value="9918"/>
-        <enumeration value="9919"/>
-        <enumeration value="9920"/>
-        <enumeration value="9922"/>
-        <enumeration value="9923"/>
-        <enumeration value="9924"/>
-        <enumeration value="9925"/>
-        <enumeration value="9926"/>
-        <enumeration value="9927"/>
-        <enumeration value="9928"/>
-        <enumeration value="9929"/>
-        <enumeration value="9930"/>
-        <enumeration value="9931"/>
-        <enumeration value="9932"/>
-        <enumeration value="9933"/>
-        <enumeration value="9934"/>
-        <enumeration value="9935"/>
-        <enumeration value="9936"/>
-        <enumeration value="9937"/>
-        <enumeration value="9938"/>
-        <enumeration value="9939"/>
-        <enumeration value="9940"/>
-        <enumeration value="9941"/>
-        <enumeration value="9942"/>
-        <enumeration value="9943"/>
-        <enumeration value="9944"/>
-        <enumeration value="9945"/>
-        <enumeration value="9946"/>
-        <enumeration value="9947"/>
-        <enumeration value="9948"/>
-        <enumeration value="9949"/>
-        <enumeration value="9950"/>
-        <enumeration value="9951"/>
-        <enumeration value="9952"/>
-        <enumeration value="9953"/>
-        <enumeration value="9955"/>
-        <enumeration value="9956"/>
-        <enumeration value="9957"/>
-        <enumeration value="9958"/>
-        <enumeration value="AN"/>
-        <enumeration value="AQ"/>
-        <enumeration value="AS"/>
-        <enumeration value="AU"/>
-        <enumeration value="EM"/>
-    </cl>
-    <cl id="7">
-        <enumeration value="FC"/>
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="8">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="9">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="10">
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="11">
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="12">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="13">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="14">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="15">
-        <enumeration value="10"/>
-        <enumeration value="20"/>
-        <enumeration value="30"/>
-        <enumeration value="42"/>
-        <enumeration value="48"/>
-        <enumeration value="49"/>
-        <enumeration value="57"/>
-        <enumeration value="58"/>
-        <enumeration value="59"/>
-        <enumeration value="97"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="16">
-        <enumeration value="VAT"/>
-    </cl>
-    <cl id="17">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="18">
-        <enumeration value="vatex-eu-132"/>
-        <enumeration value="VATEX-EU-132"/>
-        <enumeration value="vatex-eu-132-1a"/>
-        <enumeration value="VATEX-EU-132-1A"/>
-        <enumeration value="vatex-eu-132-1b"/>
-        <enumeration value="VATEX-EU-132-1B"/>
-        <enumeration value="vatex-eu-132-1c"/>
-        <enumeration value="VATEX-EU-132-1C"/>
-        <enumeration value="vatex-eu-132-1d"/>
-        <enumeration value="VATEX-EU-132-1D"/>
-        <enumeration value="vatex-eu-132-1e"/>
-        <enumeration value="VATEX-EU-132-1E"/>
-        <enumeration value="vatex-eu-132-1f"/>
-        <enumeration value="VATEX-EU-132-1F"/>
-        <enumeration value="vatex-eu-132-1g"/>
-        <enumeration value="VATEX-EU-132-1G"/>
-        <enumeration value="vatex-eu-132-1h"/>
-        <enumeration value="VATEX-EU-132-1H"/>
-        <enumeration value="vatex-eu-132-1i"/>
-        <enumeration value="VATEX-EU-132-1I"/>
-        <enumeration value="vatex-eu-132-1j"/>
-        <enumeration value="VATEX-EU-132-1J"/>
-        <enumeration value="vatex-eu-132-1k"/>
-        <enumeration value="VATEX-EU-132-1K"/>
-        <enumeration value="vatex-eu-132-1l"/>
-        <enumeration value="VATEX-EU-132-1L"/>
-        <enumeration value="vatex-eu-132-1m"/>
-        <enumeration value="VATEX-EU-132-1M"/>
-        <enumeration value="vatex-eu-132-1n"/>
-        <enumeration value="VATEX-EU-132-1N"/>
-        <enumeration value="vatex-eu-132-1o"/>
-        <enumeration value="VATEX-EU-132-1O"/>
-        <enumeration value="vatex-eu-132-1p"/>
-        <enumeration value="VATEX-EU-132-1P"/>
-        <enumeration value="vatex-eu-132-1q"/>
-        <enumeration value="VATEX-EU-132-1Q"/>
-        <enumeration value="vatex-eu-143"/>
-        <enumeration value="VATEX-EU-143"/>
-        <enumeration value="vatex-eu-143-1a"/>
-        <enumeration value="VATEX-EU-143-1A"/>
-        <enumeration value="vatex-eu-143-1b"/>
-        <enumeration value="VATEX-EU-143-1B"/>
-        <enumeration value="vatex-eu-143-1c"/>
-        <enumeration value="VATEX-EU-143-1C"/>
-        <enumeration value="vatex-eu-143-1d"/>
-        <enumeration value="VATEX-EU-143-1D"/>
-        <enumeration value="vatex-eu-143-1e"/>
-        <enumeration value="VATEX-EU-143-1E"/>
-        <enumeration value="vatex-eu-143-1f"/>
-        <enumeration value="VATEX-EU-143-1F"/>
-        <enumeration value="vatex-eu-143-1fa"/>
-        <enumeration value="VATEX-EU-143-1FA"/>
-        <enumeration value="vatex-eu-143-1g"/>
-        <enumeration value="VATEX-EU-143-1G"/>
-        <enumeration value="vatex-eu-143-1h"/>
-        <enumeration value="VATEX-EU-143-1H"/>
-        <enumeration value="vatex-eu-143-1i"/>
-        <enumeration value="VATEX-EU-143-1I"/>
-        <enumeration value="vatex-eu-143-1j"/>
-        <enumeration value="VATEX-EU-143-1J"/>
-        <enumeration value="vatex-eu-143-1k"/>
-        <enumeration value="VATEX-EU-143-1K"/>
-        <enumeration value="vatex-eu-143-1l"/>
-        <enumeration value="VATEX-EU-143-1L"/>
-        <enumeration value="vatex-eu-148"/>
-        <enumeration value="VATEX-EU-148"/>
-        <enumeration value="vatex-eu-148-a"/>
-        <enumeration value="VATEX-EU-148-A"/>
-        <enumeration value="vatex-eu-148-b"/>
-        <enumeration value="VATEX-EU-148-B"/>
-        <enumeration value="vatex-eu-148-c"/>
-        <enumeration value="VATEX-EU-148-C"/>
-        <enumeration value="vatex-eu-148-d"/>
-        <enumeration value="VATEX-EU-148-D"/>
-        <enumeration value="vatex-eu-148-e"/>
-        <enumeration value="VATEX-EU-148-E"/>
-        <enumeration value="vatex-eu-148-f"/>
-        <enumeration value="VATEX-EU-148-F"/>
-        <enumeration value="vatex-eu-148-g"/>
-        <enumeration value="VATEX-EU-148-G"/>
-        <enumeration value="vatex-eu-151"/>
-        <enumeration value="VATEX-EU-151"/>
-        <enumeration value="vatex-eu-151-1a"/>
-        <enumeration value="VATEX-EU-151-1A"/>
-        <enumeration value="vatex-eu-151-1aa"/>
-        <enumeration value="VATEX-EU-151-1AA"/>
-        <enumeration value="vatex-eu-151-1b"/>
-        <enumeration value="VATEX-EU-151-1B"/>
-        <enumeration value="vatex-eu-151-1c"/>
-        <enumeration value="VATEX-EU-151-1C"/>
-        <enumeration value="vatex-eu-151-1d"/>
-        <enumeration value="VATEX-EU-151-1D"/>
-        <enumeration value="vatex-eu-151-1e"/>
-        <enumeration value="VATEX-EU-151-1E"/>
-        <enumeration value="vatex-eu-309"/>
-        <enumeration value="VATEX-EU-309"/>
-        <enumeration value="vatex-eu-ae"/>
-        <enumeration value="VATEX-EU-AE"/>
-        <enumeration value="vatex-eu-d"/>
-        <enumeration value="VATEX-EU-D"/>
-        <enumeration value="vatex-eu-f"/>
-        <enumeration value="VATEX-EU-F"/>
-        <enumeration value="vatex-eu-g"/>
-        <enumeration value="VATEX-EU-G"/>
-        <enumeration value="vatex-eu-i"/>
-        <enumeration value="VATEX-EU-I"/>
-        <enumeration value="vatex-eu-ic"/>
-        <enumeration value="VATEX-EU-IC"/>
-        <enumeration value="vatex-eu-j"/>
-        <enumeration value="VATEX-EU-J"/>
-        <enumeration value="vatex-eu-o"/>
-        <enumeration value="VATEX-EU-O"/>
-    </cl>
-    <cl id="19">
-        <enumeration value="VAT"/>
-    </cl>
-    <cl id="20">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="21">
-        <enumeration value="AED"/>
-        <enumeration value="AFN"/>
-        <enumeration value="ALL"/>
-        <enumeration value="AMD"/>
-        <enumeration value="ANG"/>
-        <enumeration value="AOA"/>
-        <enumeration value="ARS"/>
-        <enumeration value="AUD"/>
-        <enumeration value="AWG"/>
-        <enumeration value="AZN"/>
-        <enumeration value="BAM"/>
-        <enumeration value="BBD"/>
-        <enumeration value="BDT"/>
-        <enumeration value="BGN"/>
-        <enumeration value="BHD"/>
-        <enumeration value="BIF"/>
-        <enumeration value="BMD"/>
-        <enumeration value="BND"/>
-        <enumeration value="BOB"/>
-        <enumeration value="BOV"/>
-        <enumeration value="BRL"/>
-        <enumeration value="BSD"/>
-        <enumeration value="BTN"/>
-        <enumeration value="BWP"/>
-        <enumeration value="BYN"/>
-        <enumeration value="BZD"/>
-        <enumeration value="CAD"/>
-        <enumeration value="CDF"/>
-        <enumeration value="CHE"/>
-        <enumeration value="CHF"/>
-        <enumeration value="CHW"/>
-        <enumeration value="CLF"/>
-        <enumeration value="CLP"/>
-        <enumeration value="CNY"/>
-        <enumeration value="COP"/>
-        <enumeration value="COU"/>
-        <enumeration value="CRC"/>
-        <enumeration value="CUC"/>
-        <enumeration value="CUP"/>
-        <enumeration value="CVE"/>
-        <enumeration value="CZK"/>
-        <enumeration value="DJF"/>
-        <enumeration value="DKK"/>
-        <enumeration value="DOP"/>
-        <enumeration value="DZD"/>
-        <enumeration value="EGP"/>
-        <enumeration value="ERN"/>
-        <enumeration value="ETB"/>
-        <enumeration value="EUR"/>
-        <enumeration value="FJD"/>
-        <enumeration value="FKP"/>
-        <enumeration value="GBP"/>
-        <enumeration value="GEL"/>
-        <enumeration value="GHS"/>
-        <enumeration value="GIP"/>
-        <enumeration value="GMD"/>
-        <enumeration value="GNF"/>
-        <enumeration value="GTQ"/>
-        <enumeration value="GYD"/>
-        <enumeration value="HKD"/>
-        <enumeration value="HNL"/>
-        <enumeration value="HRK"/>
-        <enumeration value="HTG"/>
-        <enumeration value="HUF"/>
-        <enumeration value="IDR"/>
-        <enumeration value="ILS"/>
-        <enumeration value="INR"/>
-        <enumeration value="IQD"/>
-        <enumeration value="IRR"/>
-        <enumeration value="ISK"/>
-        <enumeration value="JMD"/>
-        <enumeration value="JOD"/>
-        <enumeration value="JPY"/>
-        <enumeration value="KES"/>
-        <enumeration value="KGS"/>
-        <enumeration value="KHR"/>
-        <enumeration value="KMF"/>
-        <enumeration value="KPW"/>
-        <enumeration value="KRW"/>
-        <enumeration value="KWD"/>
-        <enumeration value="KYD"/>
-        <enumeration value="KZT"/>
-        <enumeration value="LAK"/>
-        <enumeration value="LBP"/>
-        <enumeration value="LKR"/>
-        <enumeration value="LRD"/>
-        <enumeration value="LSL"/>
-        <enumeration value="LYD"/>
-        <enumeration value="MAD"/>
-        <enumeration value="MDL"/>
-        <enumeration value="MGA"/>
-        <enumeration value="MKD"/>
-        <enumeration value="MMK"/>
-        <enumeration value="MNT"/>
-        <enumeration value="MOP"/>
-        <enumeration value="MRU"/>
-        <enumeration value="MUR"/>
-        <enumeration value="MVR"/>
-        <enumeration value="MWK"/>
-        <enumeration value="MXN"/>
-        <enumeration value="MXV"/>
-        <enumeration value="MYR"/>
-        <enumeration value="MZN"/>
-        <enumeration value="NAD"/>
-        <enumeration value="NGN"/>
-        <enumeration value="NIO"/>
-        <enumeration value="NOK"/>
-        <enumeration value="NPR"/>
-        <enumeration value="NZD"/>
-        <enumeration value="OMR"/>
-        <enumeration value="PAB"/>
-        <enumeration value="PEN"/>
-        <enumeration value="PGK"/>
-        <enumeration value="PHP"/>
-        <enumeration value="PKR"/>
-        <enumeration value="PLN"/>
-        <enumeration value="PYG"/>
-        <enumeration value="QAR"/>
-        <enumeration value="RON"/>
-        <enumeration value="RSD"/>
-        <enumeration value="RUB"/>
-        <enumeration value="RWF"/>
-        <enumeration value="SAR"/>
-        <enumeration value="SBD"/>
-        <enumeration value="SCR"/>
-        <enumeration value="SDG"/>
-        <enumeration value="SEK"/>
-        <enumeration value="SGD"/>
-        <enumeration value="SHP"/>
-        <enumeration value="SLL"/>
-        <enumeration value="SOS"/>
-        <enumeration value="SRD"/>
-        <enumeration value="SSP"/>
-        <enumeration value="STN"/>
-        <enumeration value="SVC"/>
-        <enumeration value="SYP"/>
-        <enumeration value="SZL"/>
-        <enumeration value="THB"/>
-        <enumeration value="TJS"/>
-        <enumeration value="TMT"/>
-        <enumeration value="TND"/>
-        <enumeration value="TOP"/>
-        <enumeration value="TRY"/>
-        <enumeration value="TTD"/>
-        <enumeration value="TWD"/>
-        <enumeration value="TZS"/>
-        <enumeration value="UAH"/>
-        <enumeration value="UGX"/>
-        <enumeration value="USD"/>
-        <enumeration value="USN"/>
-        <enumeration value="UYI"/>
-        <enumeration value="UYU"/>
-        <enumeration value="UYW"/>
-        <enumeration value="UZS"/>
-        <enumeration value="VES"/>
-        <enumeration value="VND"/>
-        <enumeration value="VUV"/>
-        <enumeration value="WST"/>
-        <enumeration value="XAF"/>
-        <enumeration value="XAG"/>
-        <enumeration value="XAU"/>
-        <enumeration value="XBA"/>
-        <enumeration value="XBB"/>
-        <enumeration value="XBC"/>
-        <enumeration value="XBD"/>
-        <enumeration value="XCD"/>
-        <enumeration value="XDR"/>
-        <enumeration value="XOF"/>
-        <enumeration value="XPD"/>
-        <enumeration value="XPF"/>
-        <enumeration value="XPT"/>
-        <enumeration value="XSU"/>
-        <enumeration value="XTS"/>
-        <enumeration value="XUA"/>
-        <enumeration value="XXX"/>
-        <enumeration value="YER"/>
-        <enumeration value="ZAR"/>
-        <enumeration value="ZMW"/>
-        <enumeration value="ZWL"/>
-    </cl>
-    <cl id="22">
-        <enumeration value="102"/>
-    </cl>
+  <cl id="1">
+    <enumeration value="urn:factur-x.eu:1p0:basicwl"/>
+  </cl>
+  <cl id="2">
+    <enumeration value="71"/>
+    <enumeration value="80"/>
+    <enumeration value="81"/>
+    <enumeration value="82"/>
+    <enumeration value="83"/>
+    <enumeration value="84"/>
+    <enumeration value="102"/>
+    <enumeration value="130"/>
+    <enumeration value="202"/>
+    <enumeration value="203"/>
+    <enumeration value="204"/>
+    <enumeration value="211"/>
+    <enumeration value="218"/>
+    <enumeration value="219"/>
+    <enumeration value="261"/>
+    <enumeration value="262"/>
+    <enumeration value="295"/>
+    <enumeration value="296"/>
+    <enumeration value="308"/>
+    <enumeration value="325"/>
+    <enumeration value="326"/>
+    <enumeration value="331"/>
+    <enumeration value="380"/>
+    <enumeration value="381"/>
+    <enumeration value="382"/>
+    <enumeration value="383"/>
+    <enumeration value="384"/>
+    <enumeration value="385"/>
+    <enumeration value="386"/>
+    <enumeration value="387"/>
+    <enumeration value="388"/>
+    <enumeration value="389"/>
+    <enumeration value="390"/>
+    <enumeration value="393"/>
+    <enumeration value="394"/>
+    <enumeration value="395"/>
+    <enumeration value="396"/>
+    <enumeration value="420"/>
+    <enumeration value="456"/>
+    <enumeration value="457"/>
+    <enumeration value="458"/>
+    <enumeration value="527"/>
+    <enumeration value="532"/>
+    <enumeration value="553"/>
+    <enumeration value="575"/>
+    <enumeration value="623"/>
+    <enumeration value="633"/>
+    <enumeration value="751"/>
+    <enumeration value="780"/>
+    <enumeration value="817"/>
+    <enumeration value="870"/>
+    <enumeration value="875"/>
+    <enumeration value="876"/>
+    <enumeration value="877"/>
+    <enumeration value="935"/>
+  </cl>
+  <cl id="3">
+    <enumeration value="102"/>
+  </cl>
+  <cl id="4">
+    <enumeration value="AAA"/>
+    <enumeration value="AAB"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAG"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAJ"/>
+    <enumeration value="AAK"/>
+    <enumeration value="AAL"/>
+    <enumeration value="AAM"/>
+    <enumeration value="AAN"/>
+    <enumeration value="AAO"/>
+    <enumeration value="AAP"/>
+    <enumeration value="AAQ"/>
+    <enumeration value="AAR"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAU"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAW"/>
+    <enumeration value="AAX"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABE"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABG"/>
+    <enumeration value="ABH"/>
+    <enumeration value="ABI"/>
+    <enumeration value="ABJ"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABM"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABO"/>
+    <enumeration value="ABP"/>
+    <enumeration value="ABQ"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ABV"/>
+    <enumeration value="ABW"/>
+    <enumeration value="ABX"/>
+    <enumeration value="ABZ"/>
+    <enumeration value="ACA"/>
+    <enumeration value="ACB"/>
+    <enumeration value="ACC"/>
+    <enumeration value="ACD"/>
+    <enumeration value="ACE"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACN"/>
+    <enumeration value="ACO"/>
+    <enumeration value="ACP"/>
+    <enumeration value="ACQ"/>
+    <enumeration value="ACR"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ACT"/>
+    <enumeration value="ACU"/>
+    <enumeration value="ACV"/>
+    <enumeration value="ACW"/>
+    <enumeration value="ACX"/>
+    <enumeration value="ACY"/>
+    <enumeration value="ACZ"/>
+    <enumeration value="ADA"/>
+    <enumeration value="ADB"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADD"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADF"/>
+    <enumeration value="ADG"/>
+    <enumeration value="ADH"/>
+    <enumeration value="ADI"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADS"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADU"/>
+    <enumeration value="ADV"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADX"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEE"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEG"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AEQ"/>
+    <enumeration value="AER"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AFA"/>
+    <enumeration value="AFB"/>
+    <enumeration value="AFC"/>
+    <enumeration value="AFD"/>
+    <enumeration value="AFE"/>
+    <enumeration value="AFF"/>
+    <enumeration value="AFG"/>
+    <enumeration value="AFH"/>
+    <enumeration value="AFI"/>
+    <enumeration value="AFJ"/>
+    <enumeration value="AFK"/>
+    <enumeration value="AFL"/>
+    <enumeration value="AFM"/>
+    <enumeration value="AFN"/>
+    <enumeration value="AFO"/>
+    <enumeration value="AFP"/>
+    <enumeration value="AFQ"/>
+    <enumeration value="AFR"/>
+    <enumeration value="AFS"/>
+    <enumeration value="AFT"/>
+    <enumeration value="AFU"/>
+    <enumeration value="AFV"/>
+    <enumeration value="AFW"/>
+    <enumeration value="AFX"/>
+    <enumeration value="AFY"/>
+    <enumeration value="AFZ"/>
+    <enumeration value="AGA"/>
+    <enumeration value="AGB"/>
+    <enumeration value="AGC"/>
+    <enumeration value="AGD"/>
+    <enumeration value="AGE"/>
+    <enumeration value="AGF"/>
+    <enumeration value="AGG"/>
+    <enumeration value="AGH"/>
+    <enumeration value="AGI"/>
+    <enumeration value="AGJ"/>
+    <enumeration value="AGK"/>
+    <enumeration value="AGL"/>
+    <enumeration value="AGM"/>
+    <enumeration value="AGN"/>
+    <enumeration value="AGO"/>
+    <enumeration value="AGP"/>
+    <enumeration value="AGQ"/>
+    <enumeration value="AGR"/>
+    <enumeration value="AGS"/>
+    <enumeration value="AGT"/>
+    <enumeration value="AGU"/>
+    <enumeration value="AGV"/>
+    <enumeration value="AGW"/>
+    <enumeration value="AGX"/>
+    <enumeration value="AGY"/>
+    <enumeration value="AGZ"/>
+    <enumeration value="AHA"/>
+    <enumeration value="AHB"/>
+    <enumeration value="AHC"/>
+    <enumeration value="AHD"/>
+    <enumeration value="AHE"/>
+    <enumeration value="AHF"/>
+    <enumeration value="AHG"/>
+    <enumeration value="AHH"/>
+    <enumeration value="AHI"/>
+    <enumeration value="AHJ"/>
+    <enumeration value="AHK"/>
+    <enumeration value="AHL"/>
+    <enumeration value="AHM"/>
+    <enumeration value="AHN"/>
+    <enumeration value="AHO"/>
+    <enumeration value="AHP"/>
+    <enumeration value="AHQ"/>
+    <enumeration value="AHR"/>
+    <enumeration value="AHS"/>
+    <enumeration value="AHT"/>
+    <enumeration value="AHU"/>
+    <enumeration value="AHV"/>
+    <enumeration value="AHW"/>
+    <enumeration value="AHX"/>
+    <enumeration value="AHY"/>
+    <enumeration value="AHZ"/>
+    <enumeration value="AIA"/>
+    <enumeration value="AIB"/>
+    <enumeration value="AIC"/>
+    <enumeration value="AID"/>
+    <enumeration value="AIE"/>
+    <enumeration value="AIF"/>
+    <enumeration value="AIG"/>
+    <enumeration value="AIH"/>
+    <enumeration value="AII"/>
+    <enumeration value="AIJ"/>
+    <enumeration value="AIK"/>
+    <enumeration value="AIL"/>
+    <enumeration value="AIM"/>
+    <enumeration value="AIN"/>
+    <enumeration value="AIO"/>
+    <enumeration value="AIP"/>
+    <enumeration value="AIQ"/>
+    <enumeration value="AIR"/>
+    <enumeration value="AIS"/>
+    <enumeration value="AIT"/>
+    <enumeration value="AIU"/>
+    <enumeration value="AIV"/>
+    <enumeration value="AIW"/>
+    <enumeration value="AIX"/>
+    <enumeration value="AIY"/>
+    <enumeration value="AIZ"/>
+    <enumeration value="AJA"/>
+    <enumeration value="AJB"/>
+    <enumeration value="ALC"/>
+    <enumeration value="ALD"/>
+    <enumeration value="ALE"/>
+    <enumeration value="ALF"/>
+    <enumeration value="ALG"/>
+    <enumeration value="ALH"/>
+    <enumeration value="ALI"/>
+    <enumeration value="ALJ"/>
+    <enumeration value="ALK"/>
+    <enumeration value="ALL"/>
+    <enumeration value="ALM"/>
+    <enumeration value="ALN"/>
+    <enumeration value="ALO"/>
+    <enumeration value="ALP"/>
+    <enumeration value="ALQ"/>
+    <enumeration value="ARR"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUT"/>
+    <enumeration value="AUU"/>
+    <enumeration value="AUV"/>
+    <enumeration value="AUW"/>
+    <enumeration value="AUX"/>
+    <enumeration value="AUY"/>
+    <enumeration value="AUZ"/>
+    <enumeration value="AVA"/>
+    <enumeration value="AVB"/>
+    <enumeration value="AVC"/>
+    <enumeration value="AVD"/>
+    <enumeration value="AVE"/>
+    <enumeration value="AVF"/>
+    <enumeration value="BAG"/>
+    <enumeration value="BAH"/>
+    <enumeration value="BAI"/>
+    <enumeration value="BAJ"/>
+    <enumeration value="BAK"/>
+    <enumeration value="BAL"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BAN"/>
+    <enumeration value="BAO"/>
+    <enumeration value="BAP"/>
+    <enumeration value="BAQ"/>
+    <enumeration value="BAR"/>
+    <enumeration value="BAS"/>
+    <enumeration value="BAT"/>
+    <enumeration value="BAU"/>
+    <enumeration value="BAV"/>
+    <enumeration value="BAW"/>
+    <enumeration value="BAX"/>
+    <enumeration value="BAY"/>
+    <enumeration value="BAZ"/>
+    <enumeration value="BBA"/>
+    <enumeration value="BBB"/>
+    <enumeration value="BLC"/>
+    <enumeration value="BLD"/>
+    <enumeration value="BLE"/>
+    <enumeration value="BLF"/>
+    <enumeration value="BLG"/>
+    <enumeration value="BLH"/>
+    <enumeration value="BLI"/>
+    <enumeration value="BLJ"/>
+    <enumeration value="BLK"/>
+    <enumeration value="BLL"/>
+    <enumeration value="BLM"/>
+    <enumeration value="BLN"/>
+    <enumeration value="BLO"/>
+    <enumeration value="BLP"/>
+    <enumeration value="BLQ"/>
+    <enumeration value="BLR"/>
+    <enumeration value="BLS"/>
+    <enumeration value="BLT"/>
+    <enumeration value="BLU"/>
+    <enumeration value="BLV"/>
+    <enumeration value="BLW"/>
+    <enumeration value="BLX"/>
+    <enumeration value="BLY"/>
+    <enumeration value="BLZ"/>
+    <enumeration value="BMA"/>
+    <enumeration value="BMB"/>
+    <enumeration value="BMC"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BME"/>
+    <enumeration value="BMF"/>
+    <enumeration value="BMG"/>
+    <enumeration value="BMH"/>
+    <enumeration value="CCI"/>
+    <enumeration value="CCJ"/>
+    <enumeration value="CCK"/>
+    <enumeration value="CCL"/>
+    <enumeration value="CCM"/>
+    <enumeration value="CCN"/>
+    <enumeration value="CCO"/>
+    <enumeration value="CEX"/>
+    <enumeration value="CHG"/>
+    <enumeration value="CIP"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CLR"/>
+    <enumeration value="COI"/>
+    <enumeration value="CUR"/>
+    <enumeration value="CUS"/>
+    <enumeration value="DAR"/>
+    <enumeration value="DCL"/>
+    <enumeration value="DEL"/>
+    <enumeration value="DIN"/>
+    <enumeration value="DOC"/>
+    <enumeration value="DUT"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FBC"/>
+    <enumeration value="GBL"/>
+    <enumeration value="GEN"/>
+    <enumeration value="GS7"/>
+    <enumeration value="HAN"/>
+    <enumeration value="HAZ"/>
+    <enumeration value="ICN"/>
+    <enumeration value="IIN"/>
+    <enumeration value="IMI"/>
+    <enumeration value="IND"/>
+    <enumeration value="INS"/>
+    <enumeration value="INV"/>
+    <enumeration value="IRP"/>
+    <enumeration value="ITR"/>
+    <enumeration value="ITS"/>
+    <enumeration value="LAN"/>
+    <enumeration value="LIN"/>
+    <enumeration value="LOI"/>
+    <enumeration value="MCO"/>
+    <enumeration value="MDH"/>
+    <enumeration value="MKS"/>
+    <enumeration value="ORI"/>
+    <enumeration value="OSI"/>
+    <enumeration value="PAC"/>
+    <enumeration value="PAI"/>
+    <enumeration value="PAY"/>
+    <enumeration value="PKG"/>
+    <enumeration value="PKT"/>
+    <enumeration value="PMD"/>
+    <enumeration value="PMT"/>
+    <enumeration value="PRD"/>
+    <enumeration value="PRF"/>
+    <enumeration value="PRI"/>
+    <enumeration value="PUR"/>
+    <enumeration value="QIN"/>
+    <enumeration value="QQD"/>
+    <enumeration value="QUT"/>
+    <enumeration value="RAH"/>
+    <enumeration value="REG"/>
+    <enumeration value="RET"/>
+    <enumeration value="REV"/>
+    <enumeration value="RQR"/>
+    <enumeration value="SAF"/>
+    <enumeration value="SIC"/>
+    <enumeration value="SIN"/>
+    <enumeration value="SLR"/>
+    <enumeration value="SPA"/>
+    <enumeration value="SPG"/>
+    <enumeration value="SPH"/>
+    <enumeration value="SPP"/>
+    <enumeration value="SPT"/>
+    <enumeration value="SRN"/>
+    <enumeration value="SSR"/>
+    <enumeration value="SUR"/>
+    <enumeration value="TCA"/>
+    <enumeration value="TDT"/>
+    <enumeration value="TRA"/>
+    <enumeration value="TRR"/>
+    <enumeration value="TXD"/>
+    <enumeration value="WHI"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="5">
+    <enumeration value="0002"/>
+    <enumeration value="0003"/>
+    <enumeration value="0004"/>
+    <enumeration value="0005"/>
+    <enumeration value="0006"/>
+    <enumeration value="0007"/>
+    <enumeration value="0008"/>
+    <enumeration value="0009"/>
+    <enumeration value="0010"/>
+    <enumeration value="0011"/>
+    <enumeration value="0012"/>
+    <enumeration value="0013"/>
+    <enumeration value="0014"/>
+    <enumeration value="0015"/>
+    <enumeration value="0016"/>
+    <enumeration value="0017"/>
+    <enumeration value="0018"/>
+    <enumeration value="0019"/>
+    <enumeration value="0020"/>
+    <enumeration value="0021"/>
+    <enumeration value="0022"/>
+    <enumeration value="0023"/>
+    <enumeration value="0024"/>
+    <enumeration value="0025"/>
+    <enumeration value="0026"/>
+    <enumeration value="0027"/>
+    <enumeration value="0028"/>
+    <enumeration value="0029"/>
+    <enumeration value="0030"/>
+    <enumeration value="0031"/>
+    <enumeration value="0032"/>
+    <enumeration value="0033"/>
+    <enumeration value="0034"/>
+    <enumeration value="0035"/>
+    <enumeration value="0036"/>
+    <enumeration value="0037"/>
+    <enumeration value="0038"/>
+    <enumeration value="0039"/>
+    <enumeration value="0040"/>
+    <enumeration value="0041"/>
+    <enumeration value="0042"/>
+    <enumeration value="0043"/>
+    <enumeration value="0044"/>
+    <enumeration value="0045"/>
+    <enumeration value="0046"/>
+    <enumeration value="0047"/>
+    <enumeration value="0048"/>
+    <enumeration value="0049"/>
+    <enumeration value="0050"/>
+    <enumeration value="0051"/>
+    <enumeration value="0052"/>
+    <enumeration value="0053"/>
+    <enumeration value="0054"/>
+    <enumeration value="0055"/>
+    <enumeration value="0056"/>
+    <enumeration value="0057"/>
+    <enumeration value="0058"/>
+    <enumeration value="0059"/>
+    <enumeration value="0060"/>
+    <enumeration value="0061"/>
+    <enumeration value="0062"/>
+    <enumeration value="0063"/>
+    <enumeration value="0064"/>
+    <enumeration value="0065"/>
+    <enumeration value="0066"/>
+    <enumeration value="0067"/>
+    <enumeration value="0068"/>
+    <enumeration value="0069"/>
+    <enumeration value="0070"/>
+    <enumeration value="0071"/>
+    <enumeration value="0072"/>
+    <enumeration value="0073"/>
+    <enumeration value="0074"/>
+    <enumeration value="0075"/>
+    <enumeration value="0076"/>
+    <enumeration value="0077"/>
+    <enumeration value="0078"/>
+    <enumeration value="0079"/>
+    <enumeration value="0080"/>
+    <enumeration value="0081"/>
+    <enumeration value="0082"/>
+    <enumeration value="0083"/>
+    <enumeration value="0084"/>
+    <enumeration value="0085"/>
+    <enumeration value="0086"/>
+    <enumeration value="0087"/>
+    <enumeration value="0088"/>
+    <enumeration value="0089"/>
+    <enumeration value="0090"/>
+    <enumeration value="0091"/>
+    <enumeration value="0093"/>
+    <enumeration value="0094"/>
+    <enumeration value="0095"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0098"/>
+    <enumeration value="0099"/>
+    <enumeration value="0100"/>
+    <enumeration value="0101"/>
+    <enumeration value="0102"/>
+    <enumeration value="0104"/>
+    <enumeration value="0105"/>
+    <enumeration value="0106"/>
+    <enumeration value="0107"/>
+    <enumeration value="0108"/>
+    <enumeration value="0109"/>
+    <enumeration value="0110"/>
+    <enumeration value="0111"/>
+    <enumeration value="0112"/>
+    <enumeration value="0113"/>
+    <enumeration value="0114"/>
+    <enumeration value="0115"/>
+    <enumeration value="0116"/>
+    <enumeration value="0117"/>
+    <enumeration value="0118"/>
+    <enumeration value="0119"/>
+    <enumeration value="0120"/>
+    <enumeration value="0121"/>
+    <enumeration value="0122"/>
+    <enumeration value="0123"/>
+    <enumeration value="0124"/>
+    <enumeration value="0125"/>
+    <enumeration value="0126"/>
+    <enumeration value="0127"/>
+    <enumeration value="0128"/>
+    <enumeration value="0129"/>
+    <enumeration value="0130"/>
+    <enumeration value="0131"/>
+    <enumeration value="0132"/>
+    <enumeration value="0133"/>
+    <enumeration value="0134"/>
+    <enumeration value="0135"/>
+    <enumeration value="0136"/>
+    <enumeration value="0137"/>
+    <enumeration value="0138"/>
+    <enumeration value="0139"/>
+    <enumeration value="0140"/>
+    <enumeration value="0141"/>
+    <enumeration value="0142"/>
+    <enumeration value="0143"/>
+    <enumeration value="0144"/>
+    <enumeration value="0145"/>
+    <enumeration value="0146"/>
+    <enumeration value="0147"/>
+    <enumeration value="0148"/>
+    <enumeration value="0149"/>
+    <enumeration value="0150"/>
+    <enumeration value="0151"/>
+    <enumeration value="0152"/>
+    <enumeration value="0153"/>
+    <enumeration value="0154"/>
+    <enumeration value="0155"/>
+    <enumeration value="0156"/>
+    <enumeration value="0157"/>
+    <enumeration value="0158"/>
+    <enumeration value="0159"/>
+    <enumeration value="0160"/>
+    <enumeration value="0161"/>
+    <enumeration value="0162"/>
+    <enumeration value="0163"/>
+    <enumeration value="0164"/>
+    <enumeration value="0165"/>
+    <enumeration value="0166"/>
+    <enumeration value="0167"/>
+    <enumeration value="0168"/>
+    <enumeration value="0169"/>
+    <enumeration value="0170"/>
+    <enumeration value="0171"/>
+    <enumeration value="0172"/>
+    <enumeration value="0173"/>
+    <enumeration value="0174"/>
+    <enumeration value="0175"/>
+    <enumeration value="0176"/>
+    <enumeration value="0177"/>
+    <enumeration value="0178"/>
+    <enumeration value="0179"/>
+    <enumeration value="0180"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0185"/>
+    <enumeration value="0186"/>
+    <enumeration value="0187"/>
+    <enumeration value="0188"/>
+    <enumeration value="0189"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0197"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
+  </cl>
+  <cl id="6">
+    <enumeration value="0002"/>
+    <enumeration value="0003"/>
+    <enumeration value="0004"/>
+    <enumeration value="0005"/>
+    <enumeration value="0006"/>
+    <enumeration value="0007"/>
+    <enumeration value="0008"/>
+    <enumeration value="0009"/>
+    <enumeration value="0010"/>
+    <enumeration value="0011"/>
+    <enumeration value="0012"/>
+    <enumeration value="0013"/>
+    <enumeration value="0014"/>
+    <enumeration value="0015"/>
+    <enumeration value="0016"/>
+    <enumeration value="0017"/>
+    <enumeration value="0018"/>
+    <enumeration value="0019"/>
+    <enumeration value="0020"/>
+    <enumeration value="0021"/>
+    <enumeration value="0022"/>
+    <enumeration value="0023"/>
+    <enumeration value="0024"/>
+    <enumeration value="0025"/>
+    <enumeration value="0026"/>
+    <enumeration value="0027"/>
+    <enumeration value="0028"/>
+    <enumeration value="0029"/>
+    <enumeration value="0030"/>
+    <enumeration value="0031"/>
+    <enumeration value="0032"/>
+    <enumeration value="0033"/>
+    <enumeration value="0034"/>
+    <enumeration value="0035"/>
+    <enumeration value="0036"/>
+    <enumeration value="0037"/>
+    <enumeration value="0038"/>
+    <enumeration value="0039"/>
+    <enumeration value="0040"/>
+    <enumeration value="0041"/>
+    <enumeration value="0042"/>
+    <enumeration value="0043"/>
+    <enumeration value="0044"/>
+    <enumeration value="0045"/>
+    <enumeration value="0046"/>
+    <enumeration value="0047"/>
+    <enumeration value="0048"/>
+    <enumeration value="0049"/>
+    <enumeration value="0050"/>
+    <enumeration value="0051"/>
+    <enumeration value="0052"/>
+    <enumeration value="0053"/>
+    <enumeration value="0054"/>
+    <enumeration value="0055"/>
+    <enumeration value="0056"/>
+    <enumeration value="0057"/>
+    <enumeration value="0058"/>
+    <enumeration value="0059"/>
+    <enumeration value="0060"/>
+    <enumeration value="0061"/>
+    <enumeration value="0062"/>
+    <enumeration value="0063"/>
+    <enumeration value="0064"/>
+    <enumeration value="0065"/>
+    <enumeration value="0066"/>
+    <enumeration value="0067"/>
+    <enumeration value="0068"/>
+    <enumeration value="0069"/>
+    <enumeration value="0070"/>
+    <enumeration value="0071"/>
+    <enumeration value="0072"/>
+    <enumeration value="0073"/>
+    <enumeration value="0074"/>
+    <enumeration value="0075"/>
+    <enumeration value="0076"/>
+    <enumeration value="0077"/>
+    <enumeration value="0078"/>
+    <enumeration value="0079"/>
+    <enumeration value="0080"/>
+    <enumeration value="0081"/>
+    <enumeration value="0082"/>
+    <enumeration value="0083"/>
+    <enumeration value="0084"/>
+    <enumeration value="0085"/>
+    <enumeration value="0086"/>
+    <enumeration value="0087"/>
+    <enumeration value="0088"/>
+    <enumeration value="0089"/>
+    <enumeration value="0090"/>
+    <enumeration value="0091"/>
+    <enumeration value="0093"/>
+    <enumeration value="0094"/>
+    <enumeration value="0095"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0098"/>
+    <enumeration value="0099"/>
+    <enumeration value="0100"/>
+    <enumeration value="0101"/>
+    <enumeration value="0102"/>
+    <enumeration value="0104"/>
+    <enumeration value="0105"/>
+    <enumeration value="0106"/>
+    <enumeration value="0107"/>
+    <enumeration value="0108"/>
+    <enumeration value="0109"/>
+    <enumeration value="0110"/>
+    <enumeration value="0111"/>
+    <enumeration value="0112"/>
+    <enumeration value="0113"/>
+    <enumeration value="0114"/>
+    <enumeration value="0115"/>
+    <enumeration value="0116"/>
+    <enumeration value="0117"/>
+    <enumeration value="0118"/>
+    <enumeration value="0119"/>
+    <enumeration value="0120"/>
+    <enumeration value="0121"/>
+    <enumeration value="0122"/>
+    <enumeration value="0123"/>
+    <enumeration value="0124"/>
+    <enumeration value="0125"/>
+    <enumeration value="0126"/>
+    <enumeration value="0127"/>
+    <enumeration value="0128"/>
+    <enumeration value="0129"/>
+    <enumeration value="0130"/>
+    <enumeration value="0131"/>
+    <enumeration value="0132"/>
+    <enumeration value="0133"/>
+    <enumeration value="0134"/>
+    <enumeration value="0135"/>
+    <enumeration value="0136"/>
+    <enumeration value="0137"/>
+    <enumeration value="0138"/>
+    <enumeration value="0139"/>
+    <enumeration value="0140"/>
+    <enumeration value="0141"/>
+    <enumeration value="0142"/>
+    <enumeration value="0143"/>
+    <enumeration value="0144"/>
+    <enumeration value="0145"/>
+    <enumeration value="0146"/>
+    <enumeration value="0147"/>
+    <enumeration value="0148"/>
+    <enumeration value="0149"/>
+    <enumeration value="0150"/>
+    <enumeration value="0151"/>
+    <enumeration value="0152"/>
+    <enumeration value="0153"/>
+    <enumeration value="0154"/>
+    <enumeration value="0155"/>
+    <enumeration value="0156"/>
+    <enumeration value="0157"/>
+    <enumeration value="0158"/>
+    <enumeration value="0159"/>
+    <enumeration value="0160"/>
+    <enumeration value="0161"/>
+    <enumeration value="0162"/>
+    <enumeration value="0163"/>
+    <enumeration value="0164"/>
+    <enumeration value="0165"/>
+    <enumeration value="0166"/>
+    <enumeration value="0167"/>
+    <enumeration value="0168"/>
+    <enumeration value="0169"/>
+    <enumeration value="0170"/>
+    <enumeration value="0171"/>
+    <enumeration value="0172"/>
+    <enumeration value="0173"/>
+    <enumeration value="0174"/>
+    <enumeration value="0175"/>
+    <enumeration value="0176"/>
+    <enumeration value="0177"/>
+    <enumeration value="0178"/>
+    <enumeration value="0179"/>
+    <enumeration value="0180"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0185"/>
+    <enumeration value="0186"/>
+    <enumeration value="0187"/>
+    <enumeration value="0188"/>
+    <enumeration value="0189"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0197"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
+  </cl>
+  <cl id="7">
+    <enumeration value="AD"/>
+    <enumeration value="AE"/>
+    <enumeration value="AF"/>
+    <enumeration value="AG"/>
+    <enumeration value="AI"/>
+    <enumeration value="AL"/>
+    <enumeration value="AM"/>
+    <enumeration value="AO"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AR"/>
+    <enumeration value="AS"/>
+    <enumeration value="AT"/>
+    <enumeration value="AU"/>
+    <enumeration value="AW"/>
+    <enumeration value="AX"/>
+    <enumeration value="AZ"/>
+    <enumeration value="BA"/>
+    <enumeration value="BB"/>
+    <enumeration value="BD"/>
+    <enumeration value="BE"/>
+    <enumeration value="BF"/>
+    <enumeration value="BG"/>
+    <enumeration value="BH"/>
+    <enumeration value="BI"/>
+    <enumeration value="BJ"/>
+    <enumeration value="BL"/>
+    <enumeration value="BM"/>
+    <enumeration value="BN"/>
+    <enumeration value="BO"/>
+    <enumeration value="BQ"/>
+    <enumeration value="BR"/>
+    <enumeration value="BS"/>
+    <enumeration value="BT"/>
+    <enumeration value="BV"/>
+    <enumeration value="BW"/>
+    <enumeration value="BY"/>
+    <enumeration value="BZ"/>
+    <enumeration value="CA"/>
+    <enumeration value="CC"/>
+    <enumeration value="CD"/>
+    <enumeration value="CF"/>
+    <enumeration value="CG"/>
+    <enumeration value="CH"/>
+    <enumeration value="CI"/>
+    <enumeration value="CK"/>
+    <enumeration value="CL"/>
+    <enumeration value="CM"/>
+    <enumeration value="CN"/>
+    <enumeration value="CO"/>
+    <enumeration value="CR"/>
+    <enumeration value="CU"/>
+    <enumeration value="CV"/>
+    <enumeration value="CW"/>
+    <enumeration value="CX"/>
+    <enumeration value="CY"/>
+    <enumeration value="CZ"/>
+    <enumeration value="DE"/>
+    <enumeration value="DJ"/>
+    <enumeration value="DK"/>
+    <enumeration value="DM"/>
+    <enumeration value="DO"/>
+    <enumeration value="DZ"/>
+    <enumeration value="EC"/>
+    <enumeration value="EE"/>
+    <enumeration value="EG"/>
+    <enumeration value="EH"/>
+    <enumeration value="ER"/>
+    <enumeration value="ES"/>
+    <enumeration value="ET"/>
+    <enumeration value="FI"/>
+    <enumeration value="FJ"/>
+    <enumeration value="FK"/>
+    <enumeration value="FM"/>
+    <enumeration value="FO"/>
+    <enumeration value="FR"/>
+    <enumeration value="GA"/>
+    <enumeration value="GB"/>
+    <enumeration value="GD"/>
+    <enumeration value="GE"/>
+    <enumeration value="GF"/>
+    <enumeration value="GG"/>
+    <enumeration value="GH"/>
+    <enumeration value="GI"/>
+    <enumeration value="GL"/>
+    <enumeration value="GM"/>
+    <enumeration value="GN"/>
+    <enumeration value="GP"/>
+    <enumeration value="GQ"/>
+    <enumeration value="GR"/>
+    <enumeration value="GS"/>
+    <enumeration value="GT"/>
+    <enumeration value="GU"/>
+    <enumeration value="GW"/>
+    <enumeration value="GY"/>
+    <enumeration value="HK"/>
+    <enumeration value="HM"/>
+    <enumeration value="HN"/>
+    <enumeration value="HR"/>
+    <enumeration value="HT"/>
+    <enumeration value="HU"/>
+    <enumeration value="ID"/>
+    <enumeration value="IE"/>
+    <enumeration value="IL"/>
+    <enumeration value="IM"/>
+    <enumeration value="IN"/>
+    <enumeration value="IO"/>
+    <enumeration value="IQ"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="IT"/>
+    <enumeration value="JE"/>
+    <enumeration value="JM"/>
+    <enumeration value="JO"/>
+    <enumeration value="JP"/>
+    <enumeration value="KE"/>
+    <enumeration value="KG"/>
+    <enumeration value="KH"/>
+    <enumeration value="KI"/>
+    <enumeration value="KM"/>
+    <enumeration value="KN"/>
+    <enumeration value="KP"/>
+    <enumeration value="KR"/>
+    <enumeration value="KW"/>
+    <enumeration value="KY"/>
+    <enumeration value="KZ"/>
+    <enumeration value="LA"/>
+    <enumeration value="LB"/>
+    <enumeration value="LC"/>
+    <enumeration value="LI"/>
+    <enumeration value="LK"/>
+    <enumeration value="LR"/>
+    <enumeration value="LS"/>
+    <enumeration value="LT"/>
+    <enumeration value="LU"/>
+    <enumeration value="LV"/>
+    <enumeration value="LY"/>
+    <enumeration value="MA"/>
+    <enumeration value="MC"/>
+    <enumeration value="MD"/>
+    <enumeration value="ME"/>
+    <enumeration value="MF"/>
+    <enumeration value="MG"/>
+    <enumeration value="MH"/>
+    <enumeration value="MK"/>
+    <enumeration value="ML"/>
+    <enumeration value="MM"/>
+    <enumeration value="MN"/>
+    <enumeration value="MO"/>
+    <enumeration value="MP"/>
+    <enumeration value="MQ"/>
+    <enumeration value="MR"/>
+    <enumeration value="MS"/>
+    <enumeration value="MT"/>
+    <enumeration value="MU"/>
+    <enumeration value="MV"/>
+    <enumeration value="MW"/>
+    <enumeration value="MX"/>
+    <enumeration value="MY"/>
+    <enumeration value="MZ"/>
+    <enumeration value="NA"/>
+    <enumeration value="NC"/>
+    <enumeration value="NE"/>
+    <enumeration value="NF"/>
+    <enumeration value="NG"/>
+    <enumeration value="NI"/>
+    <enumeration value="NL"/>
+    <enumeration value="NO"/>
+    <enumeration value="NP"/>
+    <enumeration value="NR"/>
+    <enumeration value="NU"/>
+    <enumeration value="NZ"/>
+    <enumeration value="OM"/>
+    <enumeration value="PA"/>
+    <enumeration value="PE"/>
+    <enumeration value="PF"/>
+    <enumeration value="PG"/>
+    <enumeration value="PH"/>
+    <enumeration value="PK"/>
+    <enumeration value="PL"/>
+    <enumeration value="PM"/>
+    <enumeration value="PN"/>
+    <enumeration value="PR"/>
+    <enumeration value="PS"/>
+    <enumeration value="PT"/>
+    <enumeration value="PW"/>
+    <enumeration value="PY"/>
+    <enumeration value="QA"/>
+    <enumeration value="RE"/>
+    <enumeration value="RO"/>
+    <enumeration value="RS"/>
+    <enumeration value="RU"/>
+    <enumeration value="RW"/>
+    <enumeration value="SA"/>
+    <enumeration value="SB"/>
+    <enumeration value="SC"/>
+    <enumeration value="SD"/>
+    <enumeration value="SE"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SI"/>
+    <enumeration value="SJ"/>
+    <enumeration value="SK"/>
+    <enumeration value="SL"/>
+    <enumeration value="SM"/>
+    <enumeration value="SN"/>
+    <enumeration value="SO"/>
+    <enumeration value="SR"/>
+    <enumeration value="SS"/>
+    <enumeration value="ST"/>
+    <enumeration value="SV"/>
+    <enumeration value="SX"/>
+    <enumeration value="SY"/>
+    <enumeration value="SZ"/>
+    <enumeration value="TC"/>
+    <enumeration value="TD"/>
+    <enumeration value="TF"/>
+    <enumeration value="TG"/>
+    <enumeration value="TH"/>
+    <enumeration value="TJ"/>
+    <enumeration value="TK"/>
+    <enumeration value="TL"/>
+    <enumeration value="TM"/>
+    <enumeration value="TN"/>
+    <enumeration value="TO"/>
+    <enumeration value="TR"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="TW"/>
+    <enumeration value="TZ"/>
+    <enumeration value="UA"/>
+    <enumeration value="UG"/>
+    <enumeration value="UM"/>
+    <enumeration value="US"/>
+    <enumeration value="UY"/>
+    <enumeration value="UZ"/>
+    <enumeration value="VA"/>
+    <enumeration value="VC"/>
+    <enumeration value="VE"/>
+    <enumeration value="VG"/>
+    <enumeration value="VI"/>
+    <enumeration value="VN"/>
+    <enumeration value="VU"/>
+    <enumeration value="WF"/>
+    <enumeration value="WS"/>
+    <enumeration value="YE"/>
+    <enumeration value="YT"/>
+    <enumeration value="ZA"/>
+    <enumeration value="ZM"/>
+    <enumeration value="ZW"/>
+    <enumeration value="1A"/>
+    <enumeration value="XI"/>
+  </cl>
+  <cl id="8">
+    <enumeration value="0002"/>
+    <enumeration value="0007"/>
+    <enumeration value="0009"/>
+    <enumeration value="0037"/>
+    <enumeration value="0060"/>
+    <enumeration value="0088"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0106"/>
+    <enumeration value="0130"/>
+    <enumeration value="0135"/>
+    <enumeration value="0142"/>
+    <enumeration value="0147"/>
+    <enumeration value="0151"/>
+    <enumeration value="0170"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0188"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0221"/>
+    <enumeration value="0225"/>
+    <enumeration value="0230"/>
+    <enumeration value="9901"/>
+    <enumeration value="9910"/>
+    <enumeration value="9913"/>
+    <enumeration value="9914"/>
+    <enumeration value="9915"/>
+    <enumeration value="9918"/>
+    <enumeration value="9919"/>
+    <enumeration value="9920"/>
+    <enumeration value="9922"/>
+    <enumeration value="9923"/>
+    <enumeration value="9924"/>
+    <enumeration value="9925"/>
+    <enumeration value="9926"/>
+    <enumeration value="9927"/>
+    <enumeration value="9928"/>
+    <enumeration value="9929"/>
+    <enumeration value="9930"/>
+    <enumeration value="9931"/>
+    <enumeration value="9932"/>
+    <enumeration value="9933"/>
+    <enumeration value="9934"/>
+    <enumeration value="9935"/>
+    <enumeration value="9936"/>
+    <enumeration value="9937"/>
+    <enumeration value="9938"/>
+    <enumeration value="9939"/>
+    <enumeration value="9940"/>
+    <enumeration value="9941"/>
+    <enumeration value="9942"/>
+    <enumeration value="9943"/>
+    <enumeration value="9944"/>
+    <enumeration value="9945"/>
+    <enumeration value="9946"/>
+    <enumeration value="9947"/>
+    <enumeration value="9948"/>
+    <enumeration value="9949"/>
+    <enumeration value="9950"/>
+    <enumeration value="9951"/>
+    <enumeration value="9952"/>
+    <enumeration value="9953"/>
+    <enumeration value="9957"/>
+    <enumeration value="9959"/>
+    <enumeration value="AN"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AS"/>
+    <enumeration value="AU"/>
+    <enumeration value="EM"/>
+  </cl>
+  <cl id="9">
+    <enumeration value="VA"/>
+  </cl>
+  <cl id="10">
+    <enumeration value="VA"/>
+  </cl>
+  <cl id="11">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="12">
+    <enumeration value="1"/>
+    <enumeration value="2"/>
+    <enumeration value="3"/>
+    <enumeration value="4"/>
+    <enumeration value="5"/>
+    <enumeration value="6"/>
+    <enumeration value="7"/>
+    <enumeration value="8"/>
+    <enumeration value="9"/>
+    <enumeration value="10"/>
+    <enumeration value="11"/>
+    <enumeration value="12"/>
+    <enumeration value="13"/>
+    <enumeration value="14"/>
+    <enumeration value="15"/>
+    <enumeration value="16"/>
+    <enumeration value="17"/>
+    <enumeration value="18"/>
+    <enumeration value="19"/>
+    <enumeration value="20"/>
+    <enumeration value="21"/>
+    <enumeration value="22"/>
+    <enumeration value="23"/>
+    <enumeration value="24"/>
+    <enumeration value="25"/>
+    <enumeration value="26"/>
+    <enumeration value="27"/>
+    <enumeration value="28"/>
+    <enumeration value="29"/>
+    <enumeration value="30"/>
+    <enumeration value="31"/>
+    <enumeration value="32"/>
+    <enumeration value="33"/>
+    <enumeration value="34"/>
+    <enumeration value="35"/>
+    <enumeration value="36"/>
+    <enumeration value="37"/>
+    <enumeration value="38"/>
+    <enumeration value="39"/>
+    <enumeration value="40"/>
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="43"/>
+    <enumeration value="44"/>
+    <enumeration value="45"/>
+    <enumeration value="46"/>
+    <enumeration value="47"/>
+    <enumeration value="48"/>
+    <enumeration value="49"/>
+    <enumeration value="50"/>
+    <enumeration value="51"/>
+    <enumeration value="52"/>
+    <enumeration value="53"/>
+    <enumeration value="54"/>
+    <enumeration value="55"/>
+    <enumeration value="56"/>
+    <enumeration value="57"/>
+    <enumeration value="58"/>
+    <enumeration value="59"/>
+    <enumeration value="60"/>
+    <enumeration value="61"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="69"/>
+    <enumeration value="70"/>
+    <enumeration value="74"/>
+    <enumeration value="75"/>
+    <enumeration value="76"/>
+    <enumeration value="77"/>
+    <enumeration value="78"/>
+    <enumeration value="91"/>
+    <enumeration value="92"/>
+    <enumeration value="93"/>
+    <enumeration value="94"/>
+    <enumeration value="95"/>
+    <enumeration value="96"/>
+    <enumeration value="97"/>
+    <enumeration value="98"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="13">
+    <enumeration value="VAT"/>
+  </cl>
+  <cl id="14">
+    <enumeration value="AE"/>
+    <enumeration value="E"/>
+    <enumeration value="G"/>
+    <enumeration value="K"/>
+    <enumeration value="L"/>
+    <enumeration value="M"/>
+    <enumeration value="O"/>
+    <enumeration value="S"/>
+    <enumeration value="Z"/>
+  </cl>
+  <cl id="15">
+    <enumeration value="VATEX-EU-132"/>
+    <enumeration value="VATEX-EU-132-1A"/>
+    <enumeration value="VATEX-EU-132-1B"/>
+    <enumeration value="VATEX-EU-132-1C"/>
+    <enumeration value="VATEX-EU-132-1D"/>
+    <enumeration value="VATEX-EU-132-1E"/>
+    <enumeration value="VATEX-EU-132-1F"/>
+    <enumeration value="VATEX-EU-132-1G"/>
+    <enumeration value="VATEX-EU-132-1H"/>
+    <enumeration value="VATEX-EU-132-1I"/>
+    <enumeration value="VATEX-EU-132-1J"/>
+    <enumeration value="VATEX-EU-132-1K"/>
+    <enumeration value="VATEX-EU-132-1L"/>
+    <enumeration value="VATEX-EU-132-1M"/>
+    <enumeration value="VATEX-EU-132-1N"/>
+    <enumeration value="VATEX-EU-132-1O"/>
+    <enumeration value="VATEX-EU-132-1P"/>
+    <enumeration value="VATEX-EU-132-1Q"/>
+    <enumeration value="VATEX-EU-143"/>
+    <enumeration value="VATEX-EU-143-1A"/>
+    <enumeration value="VATEX-EU-143-1B"/>
+    <enumeration value="VATEX-EU-143-1C"/>
+    <enumeration value="VATEX-EU-143-1D"/>
+    <enumeration value="VATEX-EU-143-1E"/>
+    <enumeration value="VATEX-EU-143-1F"/>
+    <enumeration value="VATEX-EU-143-1FA"/>
+    <enumeration value="VATEX-EU-143-1G"/>
+    <enumeration value="VATEX-EU-143-1H"/>
+    <enumeration value="VATEX-EU-143-1I"/>
+    <enumeration value="VATEX-EU-143-1J"/>
+    <enumeration value="VATEX-EU-143-1K"/>
+    <enumeration value="VATEX-EU-143-1L"/>
+    <enumeration value="VATEX-EU-148"/>
+    <enumeration value="VATEX-EU-148-A"/>
+    <enumeration value="VATEX-EU-148-B"/>
+    <enumeration value="VATEX-EU-148-C"/>
+    <enumeration value="VATEX-EU-148-D"/>
+    <enumeration value="VATEX-EU-148-E"/>
+    <enumeration value="VATEX-EU-148-F"/>
+    <enumeration value="VATEX-EU-148-G"/>
+    <enumeration value="VATEX-EU-151"/>
+    <enumeration value="VATEX-EU-151-1A"/>
+    <enumeration value="VATEX-EU-151-1AA"/>
+    <enumeration value="VATEX-EU-151-1B"/>
+    <enumeration value="VATEX-EU-151-1C"/>
+    <enumeration value="VATEX-EU-151-1D"/>
+    <enumeration value="VATEX-EU-151-1E"/>
+    <enumeration value="VATEX-EU-309"/>
+    <enumeration value="VATEX-EU-79-C"/>
+    <enumeration value="VATEX-EU-AE"/>
+    <enumeration value="VATEX-EU-D"/>
+    <enumeration value="VATEX-EU-F"/>
+    <enumeration value="VATEX-EU-G"/>
+    <enumeration value="VATEX-EU-I"/>
+    <enumeration value="VATEX-EU-IC"/>
+    <enumeration value="VATEX-EU-J"/>
+    <enumeration value="VATEX-EU-O"/>
+    <enumeration value="VATEX-FR-CNWVAT"/>
+    <enumeration value="VATEX-FR-FRANCHISE"/>
+  </cl>
+  <cl id="16">
+    <enumeration value="5"/>
+    <enumeration value="29"/>
+    <enumeration value="72"/>
+  </cl>
+  <cl id="17">
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="60"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="70"/>
+    <enumeration value="71"/>
+    <enumeration value="88"/>
+    <enumeration value="95"/>
+    <enumeration value="100"/>
+    <enumeration value="102"/>
+    <enumeration value="103"/>
+    <enumeration value="104"/>
+    <enumeration value="105"/>
+  </cl>
+  <cl id="18">
+    <enumeration value="AA"/>
+    <enumeration value="AAA"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAH"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AJ"/>
+    <enumeration value="AU"/>
+    <enumeration value="CA"/>
+    <enumeration value="CAB"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CAE"/>
+    <enumeration value="CAF"/>
+    <enumeration value="CAI"/>
+    <enumeration value="CAJ"/>
+    <enumeration value="CAK"/>
+    <enumeration value="CAL"/>
+    <enumeration value="CAM"/>
+    <enumeration value="CAN"/>
+    <enumeration value="CAO"/>
+    <enumeration value="CAP"/>
+    <enumeration value="CAQ"/>
+    <enumeration value="CAR"/>
+    <enumeration value="CAS"/>
+    <enumeration value="CAT"/>
+    <enumeration value="CAU"/>
+    <enumeration value="CAV"/>
+    <enumeration value="CAW"/>
+    <enumeration value="CAX"/>
+    <enumeration value="CAY"/>
+    <enumeration value="CAZ"/>
+    <enumeration value="CD"/>
+    <enumeration value="CG"/>
+    <enumeration value="CS"/>
+    <enumeration value="CT"/>
+    <enumeration value="DAB"/>
+    <enumeration value="DAC"/>
+    <enumeration value="DAD"/>
+    <enumeration value="DAF"/>
+    <enumeration value="DAG"/>
+    <enumeration value="DAH"/>
+    <enumeration value="DAI"/>
+    <enumeration value="DAJ"/>
+    <enumeration value="DAK"/>
+    <enumeration value="DAL"/>
+    <enumeration value="DAM"/>
+    <enumeration value="DAN"/>
+    <enumeration value="DAO"/>
+    <enumeration value="DAP"/>
+    <enumeration value="DAQ"/>
+    <enumeration value="DL"/>
+    <enumeration value="EG"/>
+    <enumeration value="EP"/>
+    <enumeration value="ER"/>
+    <enumeration value="FAA"/>
+    <enumeration value="FAB"/>
+    <enumeration value="FAC"/>
+    <enumeration value="FC"/>
+    <enumeration value="FH"/>
+    <enumeration value="FI"/>
+    <enumeration value="GAA"/>
+    <enumeration value="HAA"/>
+    <enumeration value="HD"/>
+    <enumeration value="HH"/>
+    <enumeration value="IAA"/>
+    <enumeration value="IAB"/>
+    <enumeration value="ID"/>
+    <enumeration value="IF"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="KO"/>
+    <enumeration value="L1"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAA"/>
+    <enumeration value="LAB"/>
+    <enumeration value="LF"/>
+    <enumeration value="MAE"/>
+    <enumeration value="MI"/>
+    <enumeration value="ML"/>
+    <enumeration value="NAA"/>
+    <enumeration value="OA"/>
+    <enumeration value="PA"/>
+    <enumeration value="PAA"/>
+    <enumeration value="PC"/>
+    <enumeration value="PL"/>
+    <enumeration value="PRV"/>
+    <enumeration value="RAB"/>
+    <enumeration value="RAC"/>
+    <enumeration value="RAD"/>
+    <enumeration value="RAF"/>
+    <enumeration value="RE"/>
+    <enumeration value="RF"/>
+    <enumeration value="RH"/>
+    <enumeration value="RV"/>
+    <enumeration value="SA"/>
+    <enumeration value="SAA"/>
+    <enumeration value="SAD"/>
+    <enumeration value="SAE"/>
+    <enumeration value="SAI"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SM"/>
+    <enumeration value="SU"/>
+    <enumeration value="TAB"/>
+    <enumeration value="TAC"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="V1"/>
+    <enumeration value="V2"/>
+    <enumeration value="WH"/>
+    <enumeration value="XAA"/>
+    <enumeration value="YY"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="19">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="20">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="21">
+    <enumeration value="102"/>
+  </cl>
 </codedb>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC.sch
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC.sch	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC.sch	(revision 8504)
@@ -1,7106 +1,2047 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<schema xmlns="http://purl.oclc.org/dsdl/schematron" schemaVersion="iso">
-    <title>Schema for FACTUR-X; 1.0; EN16931-COMPLIANT-BASIC</title>
-    <ns uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" prefix="rsm"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" prefix="qdt"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" prefix="ram"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" prefix="udt"/>
-    <pattern>
-        <rule context="//ram:AdditionalReferencedDocument">
-            <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
-                Each Additional supporting document (BG-24) shall contain a Supporting document reference (BT-122).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="(ram:BasisAmount)">
-                Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).</assert>
-            <assert test="(ram:CalculatedAmount)">
-                Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).</assert>
-            <assert test="(ram:CategoryCode)">
-                Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).</assert>
-            <assert test="(ram:RateApplicablePercent) or (ram:CategoryCode = &apos;O&apos;)">
-                Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.</assert>
-            <assert test="((ram:TaxPointDate) and not (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and not (ram:DueDateTypeCode))">
-                Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.</assert>
-            <assert test="ram:CalculatedAmount = round(ram:BasisAmount * ram:RateApplicablePercent) div 100 +0 or not (ram:RateApplicablePercent)">
-                VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2.</assert>
-            <assert test="string-length(substring-after(ram:CalculatedAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;Z&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amount (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âZero rated".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" shall equal 0 (zero).</assert>
-            <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.=&apos;S&apos;]">
-            <assert test="../ram:CalculatedAmount = round(../ram:BasisAmount * ../ram:RateApplicablePercent) div 100 +0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
-            <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
-                If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).</assert>
-            <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
-                If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).</assert>
-            <assert test="(ram:CategoryTradeTax/ram:CategoryCode)">
-                Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).</assert>
-            <assert test="true()">
-                Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Document level charge (BG-21) shall have a Document level charge amount (BT-99).</assert>
-            <assert test="(ram:CategoryTradeTax/ram:CategoryCode)">
-                Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).</assert>
-            <assert test="true()">
-                Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level charge amount (BT-92) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level charge base amount (BT-93) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableProductCharacteristic">
-            <assert test="(ram:Description) and (ram:Value)">
-                Each Item attribute (BG-32) shall contain an Item attribute name (BT-160) and an Item attribute value (BT-161).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableTradeSettlementFinancialCard">
-            <assert test="string-length(ram:ID)&lt;=6 and string-length(ram:ID)&gt;=4">
-                The last 4 to 6 digits of the Payment card primary account number (BT-87) shall be present if Payment card information (BG-18) is provided in the Invoice.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:IncludedSupplyChainTradeLineItem">
-            <assert test="(ram:AssociatedDocumentLineDocument/ram:LineID!=&apos;&apos;)">
-                Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).</assert>
-            <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)">
-                Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).</assert>
-            <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)">
-                An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).</assert>
-            <assert test="(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)">
-                Each Invoice line (BG-25) shall have an Invoice line net amount (BT-131).</assert>
-            <assert test="(ram:SpecifiedTradeProduct/ram:Name!=&apos;&apos;)">
-                Each Invoice line (BG-25) shall contain the Item name (BT-153).</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)">
-                Each Invoice line (BG-25) shall contain the Item net price (BT-146).</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount) &gt;= 0">
-                The Item net price (BT-146) shall NOT be negative.</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount &gt;= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)">
-                The Item gross price (BT-148) shall NOT be negative.</assert>
-            <assert test="ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID!=&apos;&apos; or not (ram:SpecifiedTradeProduct/ram:GlobalID)">
-                The Item standard identifier (BT-157) shall have a Scheme identifier</assert>
-            <assert test="(ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode/@listID!=&apos;&apos;) or not (ram:SpecifiedTradeProduct/ram:DesignatedProductClassification)">
-                The Item classification identifier (BT-158) shall have a Scheme identifier</assert>
-            <assert test="(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode)">
-                Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).</assert>
-            <assert test="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-                An Invoice shall at least have one VAT breakdown group (BG-23).</assert>
-            <assert test="string-length(substring-after(ram:SpecifiedTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line net amount (BT-131) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:PayeeTradeParty">
-            <assert test="(ram:Name) and (not(ram:Name = ../ram:SellerTradeParty/ram:Name) and not(ram:ID = ../ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))">
-                The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SellerTaxRepresentativeTradeParty">
-            <assert test="(ram:Name)">
-                The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:PostalTradeAddress)">
-                The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:PostalTradeAddress/ram:CountryID)">
-                The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]!=&apos;&apos;)">
-                Each Seller tax representative party (BG-11) shall have a Seller tax representative VAT identifier (BT-63).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SellerTradeParty">
-            <assert test="(ram:ID) or (ram:GlobalID) or (ram:SpecifiedLegalOrganization/ram:ID) or (ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;])">
-                In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod">
-            <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
-                If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).</assert>
-            <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
-                If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = &apos;false&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Invoice line allowance (BG-27) shall have an Invoice line allowance amount (BT-136).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).</assert>
-            <assert test="true()">
-                Invoice line allowance reason code (BT-140) and Invoice line allowance reason (BT-139) shall indicate the same type of allowance reason.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line allowance amount (BT-136) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line allowance base amount (BT-137) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = &apos;true&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Invoice line charge (BG-28) shall have an Invoice line charge amount (BT-141).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line charge (BG-28) shall have an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145).</assert>
-            <assert test="true()">
-                Invoice line charge reason code (BT-145) and Invoice line charge reason (BT144) shall indicate the same type of charge reason.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line charge amount (BT-141) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line charge base amount (BT-142) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]">
-            <assert test="contains(&apos; EL AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CX CY CZ DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW &apos;, concat(&apos; &apos;, substring(.,1,2), &apos; &apos;))">
-                The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix âELâ.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT", the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                A Document level allowance (BG-20) where VAT category code (BT-95) is "Not subject to VAT" shall not contain a Document level allowance VAT rate (BT-96).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT", the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                A Document level charge (BG-21) where the VAT category code (BT-102) is "Not subject to VAT" shall not contain a Document level charge VAT rate (BT-103).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Zero rated" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation">
-            <assert test="(ram:TaxBasisTotalAmount)">
-                An Invoice shall have the Invoice total amount without VAT (BT-109).</assert>
-            <assert test="(ram:GrandTotalAmount)">
-                An Invoice shall have the Invoice total amount with VAT (BT-112).</assert>
-            <assert test="(ram:DuePayableAmount)">
-                An Invoice shall have the Amount due for payment (BT-115).</assert>
-            <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:ActualAmount)* 10 * 10 ) div 100)">
-                Sum of allowances on document level (BT-107) = S Document level allowance amount (BT-92).</assert>
-            <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;])and not (ram:ChargeTotalAmount)) or ram:ChargeTotalAmount = &#13;&#10;((round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:ActualAmount)* 10 * 10 ) div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100))">
-                Sum of charges on document level (BT-108) = S Document level charge amount (BT-99).</assert>
-            <assert test="(ram:GrandTotalAmount = round(ram:TaxBasisTotalAmount*100 + ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]*100 +0) div 100) or ((ram:GrandTotalAmount = ram:TaxBasisTotalAmount) and not (ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]))">
-                Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).</assert>
-            <assert test="string-length(substring-after(ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2.</assert>
-            <assert test="string-length(substring-after(ram:AllowanceTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.</assert>
-            <assert test="string-length(substring-after(ram:ChargeTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2.</assert>
-            <assert test="string-length(substring-after(ram:TaxBasisTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.</assert>
-            <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]">
-                The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.</assert>
-            <assert test="string-length(substring-after(ram:GrandTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.</assert>
-            <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]">
-                The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.</assert>
-            <assert test="string-length(substring-after(ram:TotalPrepaidAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Paid amount (BT-113) is 2.</assert>
-            <assert test="string-length(substring-after(ram:RoundingAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Rounding amount (BT-114) is 2.</assert>
-            <assert test="string-length(substring-after(ram:DuePayableAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.</assert>
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))">
-                If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided.</assert>
-            <assert test="(ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 - ram:AllowanceTotalAmount*100 + ram:ChargeTotalAmount*100) div 100)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 - ram:AllowanceTotalAmount*100) div 100)) and not (ram:ChargeTotalAmount)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 + ram:ChargeTotalAmount*100) div 100)) and not (ram:AllowanceTotalAmount)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount * 100) div 100)) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))">
-                Invoice total amount without VAT (BT-109) = S Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).</assert>
-            <assert test="(ram:DuePayableAmount = (round(ram:GrandTotalAmount*100 - ram:TotalPrepaidAmount*100 + ram:RoundingAmount*100) div 100)) or ((ram:DuePayableAmount = ram:GrandTotalAmount + ram:RoundingAmount) and not (ram:TotalPrepaidAmount)) or ((ram:DuePayableAmount = (round(ram:GrandTotalAmount*100 - ram:TotalPrepaidAmount*100) div 100)) and not (ram:RoundingAmount)) or ((ram:DuePayableAmount = (round(ram:GrandTotalAmount*100) div 100)) and not (ram:TotalPrepaidAmount) and not (ram:RoundingAmount))">
-                Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).</assert>
-            <assert test="(ram:LineTotalAmount)">
-                An Invoice shall have the Sum of Invoice line net amount (BT-106).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]">
-            <assert test=". = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount)*10*10)div 100)">
-                Invoice total VAT amount (BT-110) = S VAT category tax amount (BT-117).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementPaymentMeans">
-            <assert test="(ram:TypeCode)">
-                A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode=&apos;30&apos; or ram:TypeCode=&apos;58&apos;]/ram:PayerPartyDebtorFinancialAccount">
-            <assert test="(ram:IBANID) or (ram:ProprietaryID)">
-                A Payment account identifier (BT-84) shall be present if Credit transfer (BG-16) information is provided in the Invoice.</assert>
-            <assert test="(ram:IBANID) or (ram:ProprietaryID)">
-                If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;AE&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âReverse charge".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âReverse chargeâ shall be 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;E&apos;]">
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) In a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).</assert>
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;E&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Exempt from VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âExempt from VAT".</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;G&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âExport outside the EU".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âExport outside the EUâ shall be 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.= &apos;K&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âIntra-community supply".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).</assert>
-            <assert test="(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString) or (../../ram:BillingSpecifiedPeriod/ram:StartDateTime) or (../../ram:BillingSpecifiedPeriod/ram:EndDateTime)">
-                In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.</assert>
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
-                In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Deliver to country code (BT-80) shall not be blank.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;L&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100)">
-                For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IGIC", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is âIGICâ and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
-            <assert test="true()">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IGIC" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;M&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100)">
-                For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IPSI", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is âIPSIâ and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
-            <assert test="true()">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IPSI" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;O&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âNot subject to VAT".</assert>
-            <assert test="ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âNot subject to VATâ shall be 0 (zero).</assert>
-            <assert test="(ram:ExemptionReason) or (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).</assert>
-            <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain other VAT breakdown groups (BG-23).</assert>
-            <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is not "Not subject to VAT".</assert>
-            <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".</assert>
-            <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level charges (BG-21) where Document level charge VAT category code (BT-102) is not "Not subject to VAT".</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT", the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intracommunity supply" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" the invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" the Invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-46).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                An Invoice line (BG-25) where the VAT category code (BT-151) is "Not subject to VAT" shall not contain an Invoiced item VAT rate (BT-152).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" the Invoiced item VAT rate (BT-152) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Zero rated" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice">
-            <assert test="(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID != &apos;&apos;)">
-                An Invoice shall have a Specification identifier (BT-24).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:ID !=&apos;&apos;)">
-                An Invoice shall have an Invoice number (BT-1).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format=&apos;102&apos;]!=&apos;&apos;)">
-                An Invoice shall have an Invoice issue date (BT-2).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:TypeCode!=&apos;&apos;)">
-                An Invoice shall have an Invoice type code (BT-3).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode!=&apos;&apos;)">
-                An Invoice shall have an Invoice currency code (BT-5).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name!=&apos;&apos;)">
-                An Invoice shall contain the Seller name (BT-27).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name!=&apos;&apos;)">
-                An Invoice shall contain the Buyer name (BT-44).</assert>
-            <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress">
-                An Invoice shall contain the Seller postal address (BG-5).</assert>
-            <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
-                The Seller postal address (BG-5) shall contain a Seller country code (BT-40).</assert>
-            <assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID/@schemeID!=&apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)">
-                The Seller electronic address (BT-34) shall have a Scheme identifier.</assert>
-            <assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID/@schemeID!=&apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)">
-                The Buyer electronic address (BT-49) shall have a Scheme identifier.</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âStandard ratedâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âZero ratedâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExempt from VATâ shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âReverse chargeâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIntra-community supplyâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Intra-community supply".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExport outside the EUâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU".</assert>
-            <assert test="not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or (     count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;])=1 and     (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;] or    //ram:CategoryTradeTax[ram:CategoryCode=&apos;O&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âNot subject to VATâ shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIGICâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC".</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIPSIâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IPSI".</assert>
-            <assert test="(number(//ram:DuePayableAmount) &gt; 0 and ((//ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime) or (//ram:SpecifiedTradePaymentTerms/ram:Description))) or not(number(//ram:DuePayableAmount)&gt;0)">
-                In case the Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.</assert>
-            <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress">
-                An Invoice shall contain the Buyer postal address (BG-8).</assert>
-            <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
-                The Buyer postal address shall contain a Buyer country code (BT-55).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:CategoryCode">
-            <report test="true()">
-                Element 'ram:CategoryCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ControlRequirementIndicator">
-            <report test="true()">
-                Element 'ram:ControlRequirementIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote">
-            <assert test="count(ram:Content)=1">
-                Element 'ram:Content' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode">
-            <report test="true()">
-                Element 'ram:ContentCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Content[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Content[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Subject">
-            <report test="true()">
-                Element 'ram:Subject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode">
-            <let name="codeValue3" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
-                Value of 'ram:SubjectCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID">
-            <report test="true()">
-                Element 'ram:LanguageID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Purpose">
-            <report test="true()">
-                Element 'ram:Purpose' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:RevisionDateTime">
-            <report test="true()">
-                Element 'ram:RevisionDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
-            <let name="codeValue1" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=1]/enumeration[@value=$codeValue1]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:VersionID">
-            <report test="true()">
-                Element 'ram:VersionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext">
-            <assert test="count(ram:BusinessProcessSpecifiedDocumentContextParameter)&lt;=1">
-                Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GuidelineSpecifiedDocumentContextParameter)=1">
-                Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:ApplicationSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:ApplicationSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BIMSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:BIMSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:SpecifiedDocumentVersion">
-            <report test="true()">
-                Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:Value">
-            <report test="true()">
-                Element 'ram:Value' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:SpecifiedDocumentVersion">
-            <report test="true()">
-                Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:Value">
-            <report test="true()">
-                Element 'ram:Value' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:MessageStandardSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:MessageStandardSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:ScenarioSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:ScenarioSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:SpecifiedTransactionID">
-            <report test="true()">
-                Element 'ram:SpecifiedTransactionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:SubsetSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:SubsetSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:TestIndicator">
-            <report test="true()">
-                Element 'ram:TestIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction">
-            <assert test="count(ram:IncludedSupplyChainTradeLineItem)&gt;=1">
-                Element 'ram:IncludedSupplyChainTradeLineItem' must occur at least 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement">
-            <assert test="count(ram:SellerTradeParty)=1">
-                Element 'ram:SellerTradeParty' must occur exactly 1 times.</assert>
-            <assert test="count(ram:BuyerTradeParty)=1">
-                Element 'ram:BuyerTradeParty' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ApplicableTradeDeliveryTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradeDeliveryTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerAgentTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAssignedAccountantTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerAssignedAccountantTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerRequisitionerTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerRequisitionerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerTaxRepresentativeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
-                Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
-            <report test="true()">
-                Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue14" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue10" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:DemandForecastReferencedDocument">
-            <report test="true()">
-                Element 'ram:DemandForecastReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:OrderResponseReferencedDocument">
-            <report test="true()">
-                Element 'ram:OrderResponseReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PriceListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PriceListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty">
-            <report test="true()">
-                Element 'ram:ProductEndUserTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PromotionalDealReferencedDocument">
-            <report test="true()">
-                Element 'ram:PromotionalDealReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PurchaseConditionsReferencedDocument">
-            <report test="true()">
-                Element 'ram:PurchaseConditionsReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument">
-            <report test="true()">
-                Element 'ram:QuotationReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:Reference">
-            <report test="true()">
-                Element 'ram:Reference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:RequisitionerReferencedDocument">
-            <report test="true()">
-                Element 'ram:RequisitionerReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty">
-            <report test="true()">
-                Element 'ram:SalesAgentTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerAssignedAccountantTradeParty">
-            <report test="true()">
-                Element 'ram:SellerAssignedAccountantTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:SellerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:SpecifiedTaxRegistration)=1">
-                Element 'ram:SpecifiedTaxRegistration' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization">
-            <report test="true()">
-                Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue15" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue8" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue9" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue11" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue10" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject">
-            <report test="true()">
-                Element 'ram:SpecifiedProcuringProject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SupplyInstructionReferencedDocument">
-            <report test="true()">
-                Element 'ram:SupplyInstructionReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:UltimateCustomerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery">
-            <assert test="(ram:ShipToTradeParty/ram:PostalTradeAddress and ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;) or not (ram:ShipToTradeParty/ram:PostalTradeAddress)">
-                Each Deliver to address (BG-15) shall contain a Deliver to country code (BT-80).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:DescriptionBinaryObject">
-            <report test="true()">
-                Element 'ram:DescriptionBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:EarliestOccurrenceDateTime">
-            <report test="true()">
-                Element 'ram:EarliestOccurrenceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:LatestOccurrenceDateTime">
-            <report test="true()">
-                Element 'ram:LatestOccurrenceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceLogisticsLocation">
-            <report test="true()">
-                Element 'ram:OccurrenceLogisticsLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:OccurrenceSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:UnitQuantity">
-            <report test="true()">
-                Element 'ram:UnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDespatchSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualDespatchSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualPickUpSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualPickUpSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualReceiptSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualReceiptSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ConsumptionReportReferencedDocument">
-            <report test="true()">
-                Element 'ram:ConsumptionReportReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument">
-            <report test="true()">
-                Element 'ram:DeliveryNoteReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:PackingListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PackingListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:PreviousDeliverySupplyChainEvent">
-            <report test="true()">
-                Element 'ram:PreviousDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument">
-            <report test="true()">
-                Element 'ram:ReceivingAdviceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment">
-            <report test="true()">
-                Element 'ram:RelatedSupplyChainConsignment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty">
-            <report test="true()">
-                Element 'ram:ShipFromTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GlobalID)&lt;=1">
-                Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue16" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=16]/enumeration[@value=$codeValue16]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization">
-            <report test="true()">
-                Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration">
-            <report test="true()">
-                Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty">
-            <report test="true()">
-                Element 'ram:UltimateShipToTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
-            <assert test="count(ram:PaymentReference)&lt;=1">
-                Element 'ram:PaymentReference' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:InvoiceCurrencyCode)=1">
-                Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ApplicableTradeTax)&gt;=1">
-                Element 'ram:ApplicableTradeTax' must occur at least 1 times.</assert>
-            <assert test="count(ram:SpecifiedTradePaymentTerms)&lt;=1">
-                Element 'ram:SpecifiedTradePaymentTerms' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:SpecifiedTradeSettlementHeaderMonetarySummation)=1">
-                Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ReceivableSpecifiedTradeAccountingAccount)&lt;=1">
-                Element 'ram:ReceivableSpecifiedTradeAccountingAccount' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="count(ram:CalculatedAmount)=1">
-                Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:BasisAmount)=1">
-                Element 'ram:BasisAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
-            <let name="codeValue21" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
-            <let name="codeValue22" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
-                Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode">
-            <let name="codeValue20" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:CompleteDateTime">
-            <report test="true()">
-                Element 'ram:CompleteDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:ContinuousIndicator">
-            <report test="true()">
-                Element 'ram:ContinuousIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:DurationMeasure">
-            <report test="true()">
-                Element 'ram:DurationMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:InclusiveIndicator">
-            <report test="true()">
-                Element 'ram:InclusiveIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:OpenIndicator">
-            <report test="true()">
-                Element 'ram:OpenIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:SeasonCode">
-            <report test="true()">
-                Element 'ram:SeasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateFlexibilityCode">
-            <report test="true()">
-                Element 'ram:StartDateFlexibilityCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditReason">
-            <report test="true()">
-                Element 'ram:CreditReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditReasonCode">
-            <report test="true()">
-                Element 'ram:CreditReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceIssuerID">
-            <report test="true()">
-                Element 'ram:CreditorReferenceIssuerID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceType">
-            <report test="true()">
-                Element 'ram:CreditorReferenceType' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:CreditorReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:DuePayableAmount">
-            <report test="true()">
-                Element 'ram:DuePayableAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:FactoringAgreementReferencedDocument">
-            <report test="true()">
-                Element 'ram:FactoringAgreementReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:FactoringListReferencedDocument">
-            <report test="true()">
-                Element 'ram:FactoringListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:InvoiceApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceDateTime">
-            <report test="true()">
-                Element 'ram:InvoiceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceIssuerReference">
-            <report test="true()">
-                Element 'ram:InvoiceIssuerReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument">
-            <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
-                Each Preceding Invoice reference (BG-3) shall contain a Preceding Invoice reference (BT-25).</assert>
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue26" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=26]/enumeration[@value=$codeValue26]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty">
-            <report test="true()">
-                Element 'ram:InvoiceeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty">
-            <report test="true()">
-                Element 'ram:InvoicerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:LetterOfCreditReferencedDocument">
-            <report test="true()">
-                Element 'ram:LetterOfCreditReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:NextInvoiceDateTime">
-            <report test="true()">
-                Element 'ram:NextInvoiceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayableSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PayableSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GlobalID)&lt;=1">
-                Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue17" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue18" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
-            <report test="true()">
-                Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration">
-            <report test="true()">
-                Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty">
-            <report test="true()">
-                Element 'ram:PayerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:PaymentApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentCurrencyCode">
-            <report test="true()">
-                Element 'ram:PaymentCurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentReference[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentReference[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ProFormaInvoiceReferencedDocument">
-            <report test="true()">
-                Element 'ram:ProFormaInvoiceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PurchaseSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PurchaseSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:AmountTypeCode">
-            <report test="true()">
-                Element 'ram:AmountTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:CostReferenceDimensionPattern">
-            <report test="true()">
-                Element 'ram:CostReferenceDimensionPattern' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:SetTriggerCode">
-            <report test="true()">
-                Element 'ram:SetTriggerCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SalesSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SalesSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment">
-            <report test="true()">
-                Element 'ram:SpecifiedAdvancePayment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedFinancialAdjustment">
-            <report test="true()">
-                Element 'ram:SpecifiedFinancialAdjustment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge">
-            <report test="true()">
-                Element 'ram:SpecifiedLogisticsServiceCharge' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge">
-            <assert test="count(ram:ChargeIndicator)=1">
-                Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ActualAmount)=1">
-                Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryTradeTax)=1">
-                Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CalculationPercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculatedAmount">
-            <report test="true()">
-                Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode">
-            <let name="codeValue24" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=24]/enumeration[@value=$codeValue24]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:DueDateTypeCode">
-            <report test="true()">
-                Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ExemptionReason">
-            <report test="true()">
-                Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ExemptionReasonCode">
-            <report test="true()">
-                Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode">
-            <let name="codeValue23" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=23]/enumeration[@value=$codeValue23]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator/udt:IndicatorString">
-            <report test="true()">
-                Element 'udt:IndicatorString' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:PrepaidIndicator">
-            <report test="true()">
-                Element 'ram:PrepaidIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms">
-            <assert test="count(ram:DirectDebitMandateID)&lt;=1">
-                Element 'ram:DirectDebitMandateID' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradePaymentDiscountTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradePaymentPenaltyTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:FromEventCode">
-            <report test="true()">
-                Element 'ram:FromEventCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:InstructionTypeCode">
-            <report test="true()">
-                Element 'ram:InstructionTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount">
-            <report test="true()">
-                Element 'ram:PartialPaymentAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentPercent">
-            <report test="true()">
-                Element 'ram:PartialPaymentPercent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty">
-            <report test="true()">
-                Element 'ram:PayeeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PaymentMeansID">
-            <report test="true()">
-                Element 'ram:PaymentMeansID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:SettlementPeriodMeasure">
-            <report test="true()">
-                Element 'ram:SettlementPeriodMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementFinancialCard">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeSettlementFinancialCard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation">
-            <assert test="count(ram:LineTotalAmount)=1">
-                Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ChargeTotalAmount)&lt;=1">
-                Element 'ram:ChargeTotalAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:AllowanceTotalAmount)&lt;=1">
-                Element 'ram:AllowanceTotalAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:TaxBasisTotalAmount)=1">
-                Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TaxTotalAmount)&lt;=1">
-                Element 'ram:TaxTotalAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GrandTotalAmount)=1">
-                Element 'ram:GrandTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TotalPrepaidAmount)&lt;=1">
-                Element 'ram:TotalPrepaidAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:DuePayableAmount)=1">
-                Element 'ram:DuePayableAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:DuePayableAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrossLineTotalAmount">
-            <report test="true()">
-                Element 'ram:GrossLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:NetIncludingTaxesLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetIncludingTaxesLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:NetLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ProductValueExcludingTobaccoTaxInformationAmount">
-            <report test="true()">
-                Element 'ram:ProductValueExcludingTobaccoTaxInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RetailValueExcludingTaxInformationAmount">
-            <report test="true()">
-                Element 'ram:RetailValueExcludingTaxInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RoundingAmount">
-            <report test="true()">
-                Element 'ram:RoundingAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID]">
-            <let name="codeValue25" value="@currencyID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=25]/enumeration[@value=$codeValue25]">
-                Value of '@currencyID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalAllowanceChargeAmount">
-            <report test="true()">
-                Element 'ram:TotalAllowanceChargeAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalDepositFeeInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalDepositFeeInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalDiscountAmount">
-            <report test="true()">
-                Element 'ram:TotalDiscountAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalRetailValueInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalRetailValueInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard">
-            <report test="true()">
-                Element 'ram:ApplicableTradeSettlementFinancialCard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:GuaranteeMethodCode">
-            <report test="true()">
-                Element 'ram:GuaranteeMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName">
-            <report test="true()">
-                Element 'ram:AccountName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution">
-            <report test="true()">
-                Element 'ram:PayeeSpecifiedCreditorFinancialInstitution' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount">
-            <assert test="count(ram:IBANID)=1">
-                Element 'ram:IBANID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:AccountName">
-            <report test="true()">
-                Element 'ram:AccountName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:ProprietaryID">
-            <report test="true()">
-                Element 'ram:ProprietaryID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerSpecifiedDebtorFinancialInstitution">
-            <report test="true()">
-                Element 'ram:PayerSpecifiedDebtorFinancialInstitution' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PaymentChannelCode">
-            <report test="true()">
-                Element 'ram:PaymentChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PaymentMethodCode">
-            <report test="true()">
-                Element 'ram:PaymentMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode">
-            <let name="codeValue19" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SubtotalCalculatedTradeTax">
-            <report test="true()">
-                Element 'ram:SubtotalCalculatedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:TaxApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode">
-            <report test="true()">
-                Element 'ram:TaxCurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:UltimatePayeeTradeParty">
-            <report test="true()">
-                Element 'ram:UltimatePayeeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem">
-            <assert test="count(ram:SpecifiedTradeProduct)=1">
-                Element 'ram:SpecifiedTradeProduct' must occur exactly 1 times.</assert>
-            <assert test="count(ram:SpecifiedLineTradeAgreement)=1">
-                Element 'ram:SpecifiedLineTradeAgreement' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument">
-            <assert test="count(ram:LineID)=1">
-                Element 'ram:LineID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote">
-            <report test="true()">
-                Element 'ram:IncludedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusCode">
-            <report test="true()">
-                Element 'ram:LineStatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode">
-            <report test="true()">
-                Element 'ram:LineStatusReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:ParentLineID">
-            <report test="true()">
-                Element 'ram:ParentLineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:DescriptionCode">
-            <report test="true()">
-                Element 'ram:DescriptionCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:IncludedSubordinateTradeLineItem">
-            <report test="true()">
-                Element 'ram:IncludedSubordinateTradeLineItem' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement">
-            <assert test="count(ram:NetPriceProductTradePrice)=1">
-                Element 'ram:NetPriceProductTradePrice' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ApplicableTradeDeliveryTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradeDeliveryTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:BuyerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerReference">
-            <report test="true()">
-                Element 'ram:BuyerReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerRequisitionerTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerRequisitionerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument">
-            <report test="true()">
-                Element 'ram:ContractReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:DemandForecastReferencedDocument">
-            <report test="true()">
-                Element 'ram:DemandForecastReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice">
-            <report test="true()">
-                Element 'ram:GrossPriceProductTradePrice' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:IncludedSpecifiedMarketplace">
-            <report test="true()">
-                Element 'ram:IncludedSpecifiedMarketplace' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ItemBuyerTradeParty">
-            <report test="true()">
-                Element 'ram:ItemBuyerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ItemSellerTradeParty">
-            <report test="true()">
-                Element 'ram:ItemSellerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice">
-            <assert test="count(ram:ChargeAmount)=1">
-                Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:AppliedTradeAllowanceCharge">
-            <report test="true()">
-                Element 'ram:AppliedTradeAllowanceCharge' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:AssociatedReferencedDocument">
-            <report test="true()">
-                Element 'ram:AssociatedReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
-            <let name="codeValue5" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChangeReason">
-            <report test="true()">
-                Element 'ram:ChangeReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:DeliveryTradeLocation">
-            <report test="true()">
-                Element 'ram:DeliveryTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax">
-            <report test="true()">
-                Element 'ram:IncludedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:MaximumQuantity">
-            <report test="true()">
-                Element 'ram:MaximumQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:MinimumQuantity">
-            <report test="true()">
-                Element 'ram:MinimumQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:OrderUnitConversionFactorNumeric">
-            <report test="true()">
-                Element 'ram:OrderUnitConversionFactorNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:TradeComparisonReferencePrice">
-            <report test="true()">
-                Element 'ram:TradeComparisonReferencePrice' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ValiditySpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:ValiditySpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:PromotionalDealReferencedDocument">
-            <report test="true()">
-                Element 'ram:PromotionalDealReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument">
-            <report test="true()">
-                Element 'ram:QuotationReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:RequisitionerReferencedDocument">
-            <report test="true()">
-                Element 'ram:RequisitionerReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:SellerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:UltimateCustomerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery">
-            <assert test="count(ram:BilledQuantity)=1">
-                Element 'ram:BilledQuantity' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDespatchSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualDespatchSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualPickUpSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualPickUpSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualReceiptSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualReceiptSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCode]">
-            <let name="codeValue5" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ChargeFreeQuantity">
-            <report test="true()">
-                Element 'ram:ChargeFreeQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ConsumptionReportReferencedDocument">
-            <report test="true()">
-                Element 'ram:ConsumptionReportReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument">
-            <report test="true()">
-                Element 'ram:DeliveryNoteReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument">
-            <report test="true()">
-                Element 'ram:DespatchAdviceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchedQuantity">
-            <report test="true()">
-                Element 'ram:DespatchedQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:GrossWeightMeasure">
-            <report test="true()">
-                Element 'ram:GrossWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:IncludedSupplyChainPackaging">
-            <report test="true()">
-                Element 'ram:IncludedSupplyChainPackaging' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:NetWeightMeasure">
-            <report test="true()">
-                Element 'ram:NetWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackageQuantity">
-            <report test="true()">
-                Element 'ram:PackageQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackingListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PackingListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PerPackageUnitQuantity">
-            <report test="true()">
-                Element 'ram:PerPackageUnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ProductUnitQuantity">
-            <report test="true()">
-                Element 'ram:ProductUnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivedQuantity">
-            <report test="true()">
-                Element 'ram:ReceivedQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument">
-            <report test="true()">
-                Element 'ram:ReceivingAdviceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:RelatedSupplyChainConsignment">
-            <report test="true()">
-                Element 'ram:RelatedSupplyChainConsignment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:RequestedDeliverySupplyChainEvent">
-            <report test="true()">
-                Element 'ram:RequestedDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:RequestedQuantity">
-            <report test="true()">
-                Element 'ram:RequestedQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipFromTradeParty">
-            <report test="true()">
-                Element 'ram:ShipFromTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty">
-            <report test="true()">
-                Element 'ram:ShipToTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:SpecifiedDeliveryAdjustment">
-            <report test="true()">
-                Element 'ram:SpecifiedDeliveryAdjustment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:TheoreticalWeightMeasure">
-            <report test="true()">
-                Element 'ram:TheoreticalWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty">
-            <report test="true()">
-                Element 'ram:UltimateShipToTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement">
-            <assert test="count(ram:ApplicableTradeTax)=1">
-                Element 'ram:ApplicableTradeTax' must occur exactly 1 times.</assert>
-            <assert test="count(ram:SpecifiedTradeSettlementLineMonetarySummation)=1">
-                Element 'ram:SpecifiedTradeSettlementLineMonetarySummation' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount">
-            <report test="true()">
-                Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
-            <let name="codeValue7" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode">
-            <report test="true()">
-                Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason">
-            <report test="true()">
-                Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
-            <report test="true()">
-                Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode">
-            <let name="codeValue6" value="."/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:BillingSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:DiscountIndicator">
-            <report test="true()">
-                Element 'ram:DiscountIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceIssuerReference">
-            <report test="true()">
-                Element 'ram:InvoiceIssuerReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument">
-            <report test="true()">
-                Element 'ram:InvoiceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:PayableSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PayableSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:PaymentReference">
-            <report test="true()">
-                Element 'ram:PaymentReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:PurchaseSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PurchaseSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:ReceivableSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SalesSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SalesSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedFinancialAdjustment">
-            <report test="true()">
-                Element 'ram:SpecifiedFinancialAdjustment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedLogisticsServiceCharge">
-            <report test="true()">
-                Element 'ram:SpecifiedLogisticsServiceCharge' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge">
-            <assert test="count(ram:ActualAmount)=1">
-                Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CalculationPercent">
-            <report test="true()">
-                Element 'ram:CalculationPercent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax">
-            <report test="true()">
-                Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator/udt:IndicatorString">
-            <report test="true()">
-                Element 'udt:IndicatorString' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:PrepaidIndicator">
-            <report test="true()">
-                Element 'ram:PrepaidIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradePaymentTerms">
-            <report test="true()">
-                Element 'ram:SpecifiedTradePaymentTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementFinancialCard">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeSettlementFinancialCard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation">
-            <assert test="count(ram:LineTotalAmount)=1">
-                Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:AllowanceTotalAmount">
-            <report test="true()">
-                Element 'ram:AllowanceTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:ChargeTotalAmount">
-            <report test="true()">
-                Element 'ram:ChargeTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:GrandTotalAmount">
-            <report test="true()">
-                Element 'ram:GrandTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:GrossLineTotalAmount">
-            <report test="true()">
-                Element 'ram:GrossLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:NetIncludingTaxesLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetIncludingTaxesLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:NetLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:ProductWeightLossInformationAmount">
-            <report test="true()">
-                Element 'ram:ProductWeightLossInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TaxBasisTotalAmount">
-            <report test="true()">
-                Element 'ram:TaxBasisTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TaxTotalAmount">
-            <report test="true()">
-                Element 'ram:TaxTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TotalAllowanceChargeAmount">
-            <report test="true()">
-                Element 'ram:TotalAllowanceChargeAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TotalRetailValueInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalRetailValueInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SubtotalCalculatedTradeTax">
-            <report test="true()">
-                Element 'ram:SubtotalCalculatedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:TotalAdjustmentAmount">
-            <report test="true()">
-                Element 'ram:TotalAdjustmentAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:AdditionalReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableMaterialGoodsCharacteristic">
-            <report test="true()">
-                Element 'ram:ApplicableMaterialGoodsCharacteristic' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic">
-            <report test="true()">
-                Element 'ram:ApplicableProductCharacteristic' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:AreaDensityMeasure">
-            <report test="true()">
-                Element 'ram:AreaDensityMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BrandName">
-            <report test="true()">
-                Element 'ram:BrandName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BrandOwnerTradeParty">
-            <report test="true()">
-                Element 'ram:BrandOwnerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID">
-            <report test="true()">
-                Element 'ram:BuyerAssignedID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:CertificationEvidenceReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:CertificationEvidenceReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ColourCode">
-            <report test="true()">
-                Element 'ram:ColourCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ColourDescription">
-            <report test="true()">
-                Element 'ram:ColourDescription' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification">
-            <report test="true()">
-                Element 'ram:DesignatedProductClassification' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Designation">
-            <report test="true()">
-                Element 'ram:Designation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DrainedNetWeightMeasure">
-            <report test="true()">
-                Element 'ram:DrainedNetWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:EndItemName">
-            <report test="true()">
-                Element 'ram:EndItemName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:EndItemTypeCode">
-            <report test="true()">
-                Element 'ram:EndItemTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:FormattedCancellationAnnouncedLaunchDateTime">
-            <report test="true()">
-                Element 'ram:FormattedCancellationAnnouncedLaunchDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:FormattedLatestProductDataChangeDateTime">
-            <report test="true()">
-                Element 'ram:FormattedLatestProductDataChangeDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeID]">
-            <let name="codeValue4" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GrossWeightMeasure">
-            <report test="true()">
-                Element 'ram:GrossWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct">
-            <report test="true()">
-                Element 'ram:IncludedReferencedProduct' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IndividualTradeProductInstance">
-            <report test="true()">
-                Element 'ram:IndividualTradeProductInstance' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:InformationNote">
-            <report test="true()">
-                Element 'ram:InformationNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:InspectionReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:InspectionReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:LegalRightsOwnerTradeParty">
-            <report test="true()">
-                Element 'ram:LegalRightsOwnerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:LinearSpatialDimension">
-            <report test="true()">
-                Element 'ram:LinearSpatialDimension' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:MSDSReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:MSDSReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ManufacturerAssignedID">
-            <report test="true()">
-                Element 'ram:ManufacturerAssignedID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ManufacturerTradeParty">
-            <report test="true()">
-                Element 'ram:ManufacturerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:MaximumLinearSpatialDimension">
-            <report test="true()">
-                Element 'ram:MaximumLinearSpatialDimension' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:MinimumLinearSpatialDimension">
-            <report test="true()">
-                Element 'ram:MinimumLinearSpatialDimension' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:NetWeightMeasure">
-            <report test="true()">
-                Element 'ram:NetWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry">
-            <report test="true()">
-                Element 'ram:OriginTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:PresentationSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:PresentationSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ProductGroupID">
-            <report test="true()">
-                Element 'ram:ProductGroupID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID">
-            <report test="true()">
-                Element 'ram:SellerAssignedID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SubBrandName">
-            <report test="true()">
-                Element 'ram:SubBrandName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:TradeName">
-            <report test="true()">
-                Element 'ram:TradeName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:UseDescription">
-            <report test="true()">
-                Element 'ram:UseDescription' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:VariableMeasureIndicator">
-            <report test="true()">
-                Element 'ram:VariableMeasureIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ValuationBreakdownStatement">
-            <report test="true()">
-                Element 'rsm:ValuationBreakdownStatement' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
+<schema xmlns="http://purl.oclc.org/dsdl/schematron"
+    queryBinding="xslt2"
+    schemaVersion="iso">
+  <title>Schema for Factur-X; 1.0.07; EN16931-COMPLIANT-BASIC</title>
+  <ns uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" prefix="rsm"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" prefix="qdt"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" prefix="ram"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" prefix="udt"/>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="(ram:BasisAmount)">
+	[BR-45]-Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).</assert>
+      <assert test="(ram:CalculatedAmount)">
+	[BR-46]-Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).</assert>
+      <assert test="(ram:CategoryCode)">
+	[BR-47]-Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).</assert>
+      <assert test="(ram:RateApplicablePercent) or (ram:CategoryCode = &apos;O&apos;)">
+	[BR-48]-Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.</assert>
+      <assert test="((ram:TaxPointDate) and not (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and not (ram:DueDateTypeCode))">
+	[BR-CO-03]-Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.</assert>
+      <assert test="(round(.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent)) = 0 and (round(xs:decimal(ram:CalculatedAmount)) = 0)) or (round(.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent)) != 0 and ((abs(xs:decimal(ram:CalculatedAmount)) - 1 &lt;= round(abs(xs:decimal(ram:BasisAmount)) * (.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent) div 100) * 10 * 10) div 100 ) and (abs(xs:decimal(ram:CalculatedAmount)) + 1 &gt;= round(abs(xs:decimal(ram:BasisAmount)) * (.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent) div 100) * 10 * 10) div 100 ))) or (not(exists(.[normalize-space(upper-case(ram:TypeCode))=&apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent))) and (round(xs:decimal(ram:CalculatedAmount)) = 0))">
+	[BR-CO-17]-VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.</assert>
+      <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-19]-The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2.</assert>
+      <assert test="string-length(substring-after(ram:CalculatedAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-20]-The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;Z&apos;]">
+      <assert test="(../ram:BasisAmount -1 &lt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount))*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100)) and (../ram:BasisAmount +1 &gt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount))*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100))">
+	[BR-Z-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amount (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Zero rated".</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-Z-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" shall equal 0 (zero).</assert>
+      <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
+	[BR-Z-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.=&apos;S&apos;]">
+      <assert test="(abs(xs:decimal(../ram:CalculatedAmount)) - 1 &lt; round(abs(xs:decimal(../ram:BasisAmount)) * ../ram:RateApplicablePercent) div 100 ) and (abs(xs:decimal(../ram:CalculatedAmount)) + 1 &gt; round(abs(xs:decimal(../ram:BasisAmount)) * ../ram:RateApplicablePercent) div 100 )">
+	[BR-S-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
+	[BR-S-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+      <assert test="every $rate in ../ram:RateApplicablePercent/xs:decimal(.) satisfies (../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;S&apos; and ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 10 * 10) div 100 + round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;S&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100 - round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;S&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100))">
+	[BR-S-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "Standard rated", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "Standard rated" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
+      <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
+	[BR-29]-If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).</assert>
+      <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
+	[BR-CO-19]-If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator=&apos;false&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-31]-Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).</assert>
+      <assert test="(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-32]-Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-33]-Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).</assert>
+      <assert test="true()">
+	[BR-CO-05]-Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-21]-Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-01]-The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-02]-The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator=&apos;true&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-36]-Each Document level charge (BG-21) shall have a Document level charge amount (BT-99).</assert>
+      <assert test="(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-37]-Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-38]-Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).</assert>
+      <assert test="true()">
+	[BR-CO-06]-Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-22]-Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-05]-The allowed maximum number of decimals for the Document level charge amount (BT-99) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-06]-The allowed maximum number of decimals for the Document level charge base amount (BT-100) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableProductCharacteristic">
+      <assert test="(ram:Description) and (ram:Value)">
+	[BR-54]-Each Item attribute (BG-32) shall contain an Item attribute name (BT-160) and an Item attribute value (BT-161).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:IncludedSupplyChainTradeLineItem">
+      <assert test="(ram:AssociatedDocumentLineDocument/ram:LineID!=&apos;&apos;)">
+	[BR-21]-Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).</assert>
+      <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)">
+	[BR-22]-Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).</assert>
+      <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)">
+	[BR-23]-An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).</assert>
+      <assert test="(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)">
+	[BR-24]-Each Invoice line (BG-25) shall have an Invoice line net amount (BT-131).</assert>
+      <assert test="(ram:SpecifiedTradeProduct/ram:Name!=&apos;&apos;)">
+	[BR-25]-Each Invoice line (BG-25) shall contain the Item name (BT-153).</assert>
+      <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)">
+	[BR-26]-Each Invoice line (BG-25) shall contain the Item net price (BT-146).</assert>
+      <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount) &gt;= 0">
+	[BR-27]-The Item net price (BT-146) shall NOT be negative.</assert>
+      <assert test="(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount &gt;= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)">
+	[BR-28]-The Item gross price (BT-148) shall NOT be negative.</assert>
+      <assert test="ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID!=&apos;&apos; or not (ram:SpecifiedTradeProduct/ram:GlobalID)">
+	[BR-64]-The Item standard identifier (BT-157) shall have a Scheme identifier.</assert>
+      <assert test="(ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode/@listID!=&apos;&apos;) or not (ram:SpecifiedTradeProduct/ram:DesignatedProductClassification)">
+	[BR-65]-The Item classification identifier (BT-158) shall have a Scheme identifier.</assert>
+      <assert test="(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-CO-04]-Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).</assert>
+      <assert test="string-length(substring-after(ram:SpecifiedTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-23]-The allowed maximum number of decimals for the Invoice line net amount (BT-131) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:PayeeTradeParty">
+      <assert test="(ram:Name) and (not(ram:Name = ../ram:SellerTradeParty/ram:Name) and not(ram:ID = ../ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))">
+	[BR-17]-The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SellerTaxRepresentativeTradeParty">
+      <assert test="(ram:Name)">
+	[BR-18]-The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:PostalTradeAddress)">
+	[BR-19]-The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:PostalTradeAddress/ram:CountryID)">
+	[BR-20]-The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]!=&apos;&apos;)">
+	[BR-56]-Each Seller tax representative party (BG-11) shall have a Seller tax representative VAT identifier (BT-63).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SellerTradeParty">
+      <assert test="(ram:ID) or (ram:GlobalID) or (ram:SpecifiedLegalOrganization/ram:ID) or (ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;])">
+	[BR-CO-26]-In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod">
+      <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
+	[BR-30]-If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).</assert>
+      <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
+	[BR-CO-20]-If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = &apos;false&apos;]">
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-42]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = &apos;false&apos;]&#13;&#10;">
+      <assert test="(../ram:ActualAmount)">
+	[BR-41]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance amount (BT-136).</assert>
+      <assert test="true()">
+	[BR-CO-07]-Invoice line allowance reason code (BT-140) and Invoice line allowance reason (BT-139) shall indicate the same type of allowance reason.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-23]-Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-24]-The allowed maximum number of decimals for the Invoice line allowance amount (BT-136) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-25]-The allowed maximum number of decimals for the Invoice line allowance base amount (BT-137) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = &apos;true&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-43]-Each Invoice line charge (BG-28) shall have an Invoice line charge amount (BT-141).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-44]-Each Invoice line charge (BG-28) shall have an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145).</assert>
+      <assert test="true()">
+	[BR-CO-08]-Invoice line charge reason code (BT-145) and Invoice line charge reason (BT-144) shall indicate the same type of charge reason.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-24]-Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-27]-The allowed maximum number of decimals for the Invoice line charge amount (BT-141) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-28]-The allowed maximum number of decimals for the Invoice line charge base amount (BT-142) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]">
+      <assert test="contains(&apos; 1A AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH EL ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS XI YE YT ZA ZM ZW &apos;, concat(&apos; &apos;, substring(.,1,2), &apos; &apos;))">
+	[BR-CO-09]-The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix âELâ.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge">
+      <assert test="(ram:ChargeIndicator)">
+	[BR-66]-Each Specified Trade Allowance Charge (BG-20)(BG-21) shall contain a Charge Indicator.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT", the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Intra-community supply" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-O-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-06]-A Document level allowance (BG-20) where VAT category code (BT-95) is "Not subject to VAT" shall not contain a Document level allowance VAT rate (BT-96).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT", the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-O-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-07]-A Document level charge (BG-21) where the VAT category code (BT-102) is "Not subject to VAT" shall not contain a Document level charge VAT rate (BT-103).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-04]-An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Zero rated" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation">
+      <assert test="xs:decimal(ram:LineTotalAmount) = round(xs:decimal(sum(../../ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)) * xs:decimal(100)) div xs:decimal(100)">
+	[BR-CO-10]-Sum of Invoice line net amount (BT-106) = Î£ Invoice line net amount (BT-131).</assert>
+      <assert test="(ram:LineTotalAmount)">
+	[BR-12]-An Invoice shall have the Sum of Invoice line net amount (BT-106).</assert>
+      <assert test="(ram:TaxBasisTotalAmount)">
+	[BR-13]-An Invoice shall have the Invoice total amount without VAT (BT-109).</assert>
+      <assert test="(ram:GrandTotalAmount)">
+	[BR-14]-An Invoice shall have the Invoice total amount with VAT (BT-112).</assert>
+      <assert test="(ram:DuePayableAmount)">
+	[BR-15]-An Invoice shall have the Amount due for payment (BT-115).</assert>
+      <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:ActualAmount)* 10 * 10 ) div 100)">
+	[BR-CO-11]-Sum of allowances on document level (BT-107) = Î£ Document level allowance amount (BT-92).</assert>
+      <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;])and not (ram:ChargeTotalAmount)) or (round (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount * 10 * 10) div 100)= &#13;&#10;round(((round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:ActualAmount)* 10 * 10 ) div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100))*10*10) div 100">
+	[BR-CO-12]-Sum of charges on document level (BT-108) = Î£ Document level charge amount (BT-99).</assert>
+      <assert test="(xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) or &#13;&#10;    ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount)) *10 * 10) div 100)  and not (ram:ChargeTotalAmount)) or &#13;&#10;    ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100)  and not (ram:AllowanceTotalAmount)) or &#13;&#10;    ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount))  *10 * 10) div 100) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))">
+	[BR-CO-13]-Invoice total amount without VAT (BT-109) = Î£ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).</assert>
+      <assert test="every $Currency &#13;&#10;                                in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode&#13;&#10;                                satisfies (  &#13;&#10;                                  count ( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=$Currency] ) eq 1 and  &#13;&#10;                                  (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = round( &#13;&#10;                                    (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount) + &#13;&#10;                                    (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxTotalAmount[@currencyID=$Currency]))) * 10 * 10) div 100)) or&#13;&#10;                                (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount)))">
+	[BR-CO-15]-Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).</assert>
+      <assert test="(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))">
+	[BR-CO-16]-Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).</assert>
+      <assert test="string-length(substring-after(ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-09]-The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2.</assert>
+      <assert test="string-length(substring-after(ram:AllowanceTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-10]-The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.</assert>
+      <assert test="string-length(substring-after(ram:ChargeTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-11]-The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2.</assert>
+      <assert test="string-length(substring-after(ram:TaxBasisTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-12]-The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.</assert>
+      <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]">
+	[BR-DEC-13]-The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.</assert>
+      <assert test="string-length(substring-after(ram:GrandTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-14]-The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.</assert>
+      <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]">
+	[BR-DEC-15]-The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.</assert>
+      <assert test="string-length(substring-after(ram:TotalPrepaidAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-16]-The allowed maximum number of decimals for the Paid amount (BT-113) is 2.</assert>
+      <assert test="string-length(substring-after(ram:RoundingAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-17]-The allowed maximum number of decimals for the Rounding amount (BT-114) is 2.</assert>
+      <assert test="string-length(substring-after(ram:DuePayableAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-18]-The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.</assert>
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))">
+	[BR-53]-If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]">
+      <assert test=". = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount)*10*10)div 100)">
+	[BR-CO-14]-Invoice total VAT amount (BT-110) = Î£ VAT category tax amount (BT-117).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementPaymentMeans">
+      <assert test="(ram:TypeCode)">
+	[BR-49]-A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).</assert>
+      <assert test="(ram:PayeePartyCreditorFinancialAccount/ram:IBANID) or (ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID) or (not(ram:PayeePartyCreditorFinancialAccount/ram:IBANID) and not(ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID))">
+	[BR-CO-27]-Either the IBAN or a Proprietary ID (BT-84) shall be used.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode=&apos;30&apos; or ram:TypeCode=&apos;58&apos;]/ram:PayerPartyDebtorFinancialAccount">
+      <assert test="(ram:IBANID) or (ram:ProprietaryID)">
+	[BR-50]-A Payment account identifier (BT-84) shall be present if Credit transfer (BG-16) information is provided in the Invoice.</assert>
+      <assert test="(ram:IBANID) or (ram:ProprietaryID)">
+	[BR-61]-If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
+      <assert test="ram:ApplicableTradeTax">
+	[BR-CO-18]-An Invoice shall at least have one VAT breakdown group (BG-23).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;AE&apos;]">
+      <assert test="(../ram:BasisAmount -1 &lt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100)) and (../ram:BasisAmount +1 &gt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100))">
+	[BR-AE-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Reverse charge".</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-AE-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-AE-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;E&apos;]">
+      <assert test="(../ram:BasisAmount - 1 &lt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;E&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100)) and (../ram:BasisAmount + 1 &gt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;E&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100))">
+	[BR-E-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Exempt from VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Exempt from VAT".</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-E-09]-The VAT category tax amount (BT-117) In a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-E-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;G&apos;]">
+      <assert test="(../ram:BasisAmount -1 &lt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100)) and (../ram:BasisAmount +1 &gt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100))">
+	[BR-G-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Export outside the EU".</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-G-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-G-10]-A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.= &apos;K&apos;]">
+      <assert test="(../ram:BasisAmount - 1 &lt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100)) and (../ram:BasisAmount + 1 &gt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100))">
+	[BR-IC-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Intra-community supply".</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-IC-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-IC-10]-A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).</assert>
+      <assert test="(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString) or (../../ram:BillingSpecifiedPeriod/ram:StartDateTime) or (../../ram:BillingSpecifiedPeriod/ram:EndDateTime)">
+	[BR-IC-11]-In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.</assert>
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+	[BR-IC-12]-In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Deliver to country code (BT-80) shall not be blank.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="every $rate in ../ram:RateApplicablePercent/xs:decimal(.) satisfies (../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;L&apos; and ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 10 * 10) div 100 + round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100 - round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100))">
+	[BR-AF-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IGIC", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "IGIC" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
+      <assert test="true()">
+	[BR-AF-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
+	[BR-AF-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IGIC" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="every $rate in ../ram:RateApplicablePercent/xs:decimal(.) satisfies (../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;M&apos; and ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 10 * 10) div 100 + round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100 - round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100))">
+	[BR-AG-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IPSI", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "IPSI" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
+      <assert test="true()">
+	[BR-AG-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
+	[BR-AG-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IPSI" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;O&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount))*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100)">
+	[BR-O-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Not subject to VAT".</assert>
+      <assert test="ram:CalculatedAmount = 0">
+	[BR-O-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Not subject to VAT" shall be 0 (zero).</assert>
+      <assert test="(ram:ExemptionReason) or (ram:ExemptionReasonCode)">
+	[BR-O-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).</assert>
+      <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-11]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain other VAT breakdown groups (BG-23).</assert>
+      <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-12]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is not "Not subject to VAT".</assert>
+      <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-13]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".</assert>
+      <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-14]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level charges (BG-21) where Document level charge VAT category code (BT-102) is not "Not subject to VAT".</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT", the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intracommunity supply" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" the invoiced item VAT rate (BT-152) shall be greater than 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" the Invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-O-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-46).</assert>
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-05]-An Invoice line (BG-25) where the VAT category code (BT-151) is "Not subject to VAT" shall not contain an Invoiced item VAT rate (BT-152).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" the Invoiced item VAT rate (BT-152) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-02]-An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Zero rated" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice">
+      <assert test="//ram:IncludedSupplyChainTradeLineItem">
+	[BR-16]-An Invoice shall have at least one Invoice line (BG-25).</assert>
+      <assert test="(number(//ram:DuePayableAmount) &gt; 0 and ((//ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime) or (//ram:SpecifiedTradePaymentTerms/ram:Description))) or not(number(//ram:DuePayableAmount) &gt; 0)">
+	[BR-CO-25]-In case the Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.</assert>
+      <assert test="(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID != &apos;&apos;)">
+	[BR-01]-An Invoice shall have a Specification identifier (BT-24).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:ID !=&apos;&apos;)">
+	[BR-02]-An Invoice shall have an Invoice number (BT-1).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format=&apos;102&apos;]!=&apos;&apos;)">
+	[BR-03]-An Invoice shall have an Invoice issue date (BT-2).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:TypeCode!=&apos;&apos;)">
+	[BR-04]-An Invoice shall have an Invoice type code (BT-3).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode!=&apos;&apos;)">
+	[BR-05]-An Invoice shall have an Invoice currency code (BT-5).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name!=&apos;&apos;)">
+	[BR-06]-An Invoice shall contain the Seller name (BT-27).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name!=&apos;&apos;)">
+	[BR-07]-An Invoice shall contain the Buyer name (BT-44).</assert>
+      <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress">
+	[BR-08]-An Invoice shall contain the Seller postal address (BG-5).</assert>
+      <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
+	[BR-09]-The Seller postal address (BG-5) shall contain a Seller country code (BT-40).</assert>
+      <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress">
+	[BR-10]-An Invoice shall contain the Buyer postal address (BG-8).</assert>
+      <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
+	[BR-11]-The Buyer postal address shall contain a Buyer country code (BT-55).</assert>
+      <assert test="normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != &apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)">
+	[BR-62]-The Seller electronic address (BT-34) shall have a Scheme identifier.</assert>
+      <assert test="normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != &apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)">
+	[BR-63]-The Buyer electronic address (BT-49) shall have a Scheme identifier.</assert>
+      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]))">
+	[BR-S-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Standard rated" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])))">
+	[BR-Z-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Zero rated" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])))">
+	[BR-E-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExempt from VATâ shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])))">
+	[BR-AE-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Reverse charge" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])))">
+	[BR-IC-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Intra-community supply" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Intra-community supply".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])))">
+	[BR-G-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Export outside the EU" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU".</assert>
+      <assert test="not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or ( &#13;&#10;    count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;])=1 and &#13;&#10;    (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or&#13;&#10;    exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;O&apos;])))">
+	[BR-O-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Not subject to VAT" shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".</assert>
+      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) and &#13;&#10;    ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]))">
+	[BR-AF-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "IGIC" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC".</assert>
+      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) and &#13;&#10;    ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]))">
+	[BR-AG-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "IPSI" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IPSI".</assert>
+      <assert test="(not(//ram:CountryID != &apos;IT&apos;) and //ram:CategoryCode =&apos;B&apos;) or (not(//ram:CategoryCode =&apos;B&apos;))">
+	[BR-B-01]-An Invoice where the VAT category code (BT-151, BT-95 or BT-102) is âSplit paymentâ shall be a domestic Italian invoice.</assert>
+      <assert test="(//ram:CategoryCode =&apos;B&apos; and (not(//ram:CategoryCode =&apos;S&apos;))) or (not(//ram:CategoryCode =&apos;B&apos;))">
+	[BR-B-02]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âSplit payment" shall not contain an invoice line (BG-25), a Document level allowance (BG-20) or  a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âStandard ratedâ.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote">
+      <assert test="count(ram:Content)=1">
+	Element 'ram:Content' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SubjectCode)&lt;=1">
+	Element 'ram:SubjectCode' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode">
+      <let name="codeValue4" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
+	Value of 'ram:SubjectCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString">
+      <assert test="@format">
+	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"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
+      <let name="codeValue2" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext">
+      <assert test="count(ram:BusinessProcessSpecifiedDocumentContextParameter)&lt;=1">
+	Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GuidelineSpecifiedDocumentContextParameter)=1">
+	Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID">
+      <let name="codeValue1" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=1]/enumeration[@value=$codeValue1]">
+	Value of 'ram:ID' is not allowed.</assert>
+    </rule>
+  </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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction">
+      <assert test="count(ram:IncludedSupplyChainTradeLineItem)&gt;=1">
+	Element 'ram:IncludedSupplyChainTradeLineItem' must occur at least 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement">
+      <assert test="count(ram:SellerTradeParty)=1">
+	Element 'ram:SellerTradeParty' must occur exactly 1 times.</assert>
+      <assert test="count(ram:BuyerTradeParty)=1">
+	Element 'ram:BuyerTradeParty' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GlobalID)&lt;=1">
+	Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue11" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue12" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
+      <report test="true()">
+	Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
+      <let name="codeValue15" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue14" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty">
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)=1">
+	Element 'ram:SpecifiedTaxRegistration' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID">
+      <report test="true()">
+	Element 'ram:GlobalID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID">
+      <report test="true()">
+	Element 'ram:ID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization">
+      <report test="true()">
+	Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
+      <let name="codeValue16" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=16]/enumeration[@value=$codeValue16]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication">
+      <report test="true()">
+	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty">
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;])&lt;=1">
+	Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="VA"]' may occur at maximum 1 times.</assert>
+      <assert 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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue11" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue12" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
+	Value of '@schemeID' is not allowed.</assert>
+    </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;)]">
+      <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue14" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery">
+      <assert test="(ram:ShipToTradeParty/ram:PostalTradeAddress and ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;) or not (ram:ShipToTradeParty/ram:PostalTradeAddress)">
+	[BR-57]-Each Deliver to address (BG-15) shall contain a Deliver to country code (BT-80).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent">
+      <assert test="count(ram:OccurrenceDateTime)=1">
+	Element 'ram:OccurrenceDateTime' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GlobalID)&lt;=1">
+	Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue11" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization">
+      <report test="true()">
+	Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration">
+      <report test="true()">
+	Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication">
+      <report test="true()">
+	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
+      <assert test="count(ram:PaymentReference)&lt;=1">
+	Element 'ram:PaymentReference' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:InvoiceCurrencyCode)=1">
+	Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ApplicableTradeTax)&gt;=1">
+	Element 'ram:ApplicableTradeTax' must occur at least 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradePaymentTerms)&lt;=1">
+	Element 'ram:SpecifiedTradePaymentTerms' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradeSettlementHeaderMonetarySummation)=1">
+	Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ReceivableSpecifiedTradeAccountingAccount)&lt;=1">
+	Element 'ram:ReceivableSpecifiedTradeAccountingAccount' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="count(ram:CalculatedAmount)=1">
+	Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:BasisAmount)=1">
+	Element 'ram:BasisAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode">
+      <let name="codeValue20" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of 'ram:DueDateTypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
+      <let name="codeValue19" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode">
+      <let name="codeValue17" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of 'ram:InvoiceCurrencyCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument">
+      <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
+	[BR-55]-Each Preceding Invoice reference (BG-3) shall contain a Preceding Invoice reference (BT-25).</assert>
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue25" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=25]/enumeration[@value=$codeValue25]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GlobalID)&lt;=1">
+	Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue11" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress">
+      <report test="true()">
+	Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue12" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
+      <report test="true()">
+	Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration">
+      <report test="true()">
+	Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication">
+      <report test="true()">
+	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator=&quot;false&quot;) and  not(ram:ChargeIndicator/udt:Indicator=&quot;true&quot;)]">
+      <report test="true()">
+	Element variant 'ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator="false") and  not(ram:ChargeIndicator/udt:Indicator="true")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryTradeTax)=1">
+	Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:CategoryCode">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:TypeCode">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ReasonCode">
+      <let name="codeValue21" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryTradeTax)=1">
+	Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:CategoryCode">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:TypeCode">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ReasonCode">
+      <let name="codeValue22" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms">
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:DirectDebitMandateID)&lt;=1">
+	Element 'ram:DirectDebitMandateID' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation">
+      <assert test="count(ram:LineTotalAmount)=1">
+	Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ChargeTotalAmount)&lt;=1">
+	Element 'ram:ChargeTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:AllowanceTotalAmount)&lt;=1">
+	Element 'ram:AllowanceTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TaxBasisTotalAmount)=1">
+	Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode])&lt;=1">
+	Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode]' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode])&lt;=1">
+	Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode]' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GrandTotalAmount)=1">
+	Element 'ram:GrandTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TotalPrepaidAmount)&lt;=1">
+	Element 'ram:TotalPrepaidAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:DuePayableAmount)=1">
+	Element 'ram:DuePayableAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and  not(@currencyID=../../ram:TaxCurrencyCode)]">
+      <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode and @currencyID]">
+      <let name="codeValue23" value="@currencyID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=23]/enumeration[@value=$codeValue23]">
+	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]">
+      <assert test="@currencyID">
+	Attribute '@currencyID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode and @currencyID]">
+      <let name="codeValue24" value="@currencyID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=24]/enumeration[@value=$codeValue24]">
+	Value of '@currencyID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode]">
+      <assert test="@currencyID">
+	Attribute '@currencyID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:PayeePartyCreditorFinancialAccount)&lt;=1">
+	Element 'ram:PayeePartyCreditorFinancialAccount' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount">
+      <assert test="count(ram:IBANID)=1">
+	Element 'ram:IBANID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode">
+      <let name="codeValue18" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode">
+      <let name="codeValue17" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of 'ram:TaxCurrencyCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem">
+      <assert test="count(ram:AssociatedDocumentLineDocument)=1">
+	Element 'ram:AssociatedDocumentLineDocument' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradeProduct)=1">
+	Element 'ram:SpecifiedTradeProduct' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedLineTradeAgreement)=1">
+	Element 'ram:SpecifiedLineTradeAgreement' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedLineTradeDelivery)=1">
+	Element 'ram:SpecifiedLineTradeDelivery' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument">
+      <assert test="count(ram:LineID)=1">
+	Element 'ram:LineID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:IncludedNote)&lt;=1">
+	Element 'ram:IncludedNote' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote">
+      <assert test="count(ram:Content)=1">
+	Element 'ram:Content' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode">
+      <report test="true()">
+	Element 'ram:SubjectCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement">
+      <assert test="count(ram:NetPriceProductTradePrice)=1">
+	Element 'ram:NetPriceProductTradePrice' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice">
+      <assert test="count(ram:ChargeAmount)=1">
+	Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;])&lt;=1">
+	Element variant 'ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator="false"]' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator=&quot;false&quot;) and  not(ram:ChargeIndicator/udt:Indicator=&quot;true&quot;)]">
+      <report test="true()">
+	Element variant 'ram:AppliedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator="false") and  not(ram:ChargeIndicator/udt:Indicator="true")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CalculationPercent">
+      <report test="true()">
+	Element 'ram:CalculationPercent' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax">
+      <report test="true()">
+	Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:Reason">
+      <report test="true()">
+	Element 'ram:Reason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ReasonCode">
+      <report test="true()">
+	Element 'ram:ReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
+      <let name="codeValue6" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice">
+      <assert test="count(ram:ChargeAmount)=1">
+	Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:AppliedTradeAllowanceCharge">
+      <report test="true()">
+	Element 'ram:AppliedTradeAllowanceCharge' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
+      <let name="codeValue6" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery">
+      <assert test="count(ram:BilledQuantity)=1">
+	Element 'ram:BilledQuantity' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity">
+      <assert test="@unitCode">
+	Attribute '@unitCode' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCode]">
+      <let name="codeValue6" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement">
+      <assert test="count(ram:ApplicableTradeTax)=1">
+	Element 'ram:ApplicableTradeTax' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradeSettlementLineMonetarySummation)=1">
+	Element 'ram:SpecifiedTradeSettlementLineMonetarySummation' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator=&quot;false&quot;) and  not(ram:ChargeIndicator/udt:Indicator=&quot;true&quot;)]">
+      <report test="true()">
+	Element variant 'ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator="false") and  not(ram:ChargeIndicator/udt:Indicator="true")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CalculationPercent">
+      <report test="true()">
+	Element 'ram:CalculationPercent' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax">
+      <report test="true()">
+	Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ReasonCode">
+      <let name="codeValue9" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CalculationPercent">
+      <report test="true()">
+	Element 'ram:CalculationPercent' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax">
+      <report test="true()">
+	Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ReasonCode">
+      <let name="codeValue10" value="."/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation">
+      <assert test="count(ram:LineTotalAmount)=1">
+	Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct">
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeID]">
+      <let name="codeValue5" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_BASIC_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
 </schema>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC_codedb.xml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC_codedb.xml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_BASIC_codedb.xml	(revision 8504)
@@ -1,4673 +1,2190 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <codedb>
-    <cl id="1">
-        <enumeration value="80"/>
-        <enumeration value="81"/>
-        <enumeration value="82"/>
-        <enumeration value="83"/>
-        <enumeration value="84"/>
-        <enumeration value="130"/>
-        <enumeration value="202"/>
-        <enumeration value="203"/>
-        <enumeration value="204"/>
-        <enumeration value="211"/>
-        <enumeration value="261"/>
-        <enumeration value="262"/>
-        <enumeration value="295"/>
-        <enumeration value="296"/>
-        <enumeration value="308"/>
-        <enumeration value="325"/>
-        <enumeration value="326"/>
-        <enumeration value="380"/>
-        <enumeration value="381"/>
-        <enumeration value="383"/>
-        <enumeration value="384"/>
-        <enumeration value="385"/>
-        <enumeration value="386"/>
-        <enumeration value="387"/>
-        <enumeration value="388"/>
-        <enumeration value="389"/>
-        <enumeration value="390"/>
-        <enumeration value="393"/>
-        <enumeration value="394"/>
-        <enumeration value="395"/>
-        <enumeration value="396"/>
-        <enumeration value="420"/>
-        <enumeration value="456"/>
-        <enumeration value="457"/>
-        <enumeration value="458"/>
-        <enumeration value="527"/>
-        <enumeration value="575"/>
-        <enumeration value="623"/>
-        <enumeration value="633"/>
-        <enumeration value="751"/>
-        <enumeration value="780"/>
-        <enumeration value="935"/>
-    </cl>
-    <cl id="2">
-        <enumeration value="102"/>
-    </cl>
-    <cl id="3">
-        <enumeration value="AAA"/>
-        <enumeration value="AAB"/>
-        <enumeration value="AAC"/>
-        <enumeration value="AAD"/>
-        <enumeration value="AAE"/>
-        <enumeration value="AAF"/>
-        <enumeration value="AAG"/>
-        <enumeration value="AAI"/>
-        <enumeration value="AAJ"/>
-        <enumeration value="AAK"/>
-        <enumeration value="AAL"/>
-        <enumeration value="AAM"/>
-        <enumeration value="AAN"/>
-        <enumeration value="AAO"/>
-        <enumeration value="AAP"/>
-        <enumeration value="AAQ"/>
-        <enumeration value="AAR"/>
-        <enumeration value="AAS"/>
-        <enumeration value="AAT"/>
-        <enumeration value="AAU"/>
-        <enumeration value="AAV"/>
-        <enumeration value="AAW"/>
-        <enumeration value="AAX"/>
-        <enumeration value="AAY"/>
-        <enumeration value="AAZ"/>
-        <enumeration value="ABA"/>
-        <enumeration value="ABB"/>
-        <enumeration value="ABC"/>
-        <enumeration value="ABD"/>
-        <enumeration value="ABE"/>
-        <enumeration value="ABF"/>
-        <enumeration value="ABG"/>
-        <enumeration value="ABH"/>
-        <enumeration value="ABI"/>
-        <enumeration value="ABJ"/>
-        <enumeration value="ABK"/>
-        <enumeration value="ABL"/>
-        <enumeration value="ABM"/>
-        <enumeration value="ABN"/>
-        <enumeration value="ABO"/>
-        <enumeration value="ABP"/>
-        <enumeration value="ABQ"/>
-        <enumeration value="ABR"/>
-        <enumeration value="ABS"/>
-        <enumeration value="ABT"/>
-        <enumeration value="ABU"/>
-        <enumeration value="ABV"/>
-        <enumeration value="ABW"/>
-        <enumeration value="ABX"/>
-        <enumeration value="ABZ"/>
-        <enumeration value="ACA"/>
-        <enumeration value="ACB"/>
-        <enumeration value="ACC"/>
-        <enumeration value="ACD"/>
-        <enumeration value="ACE"/>
-        <enumeration value="ACF"/>
-        <enumeration value="ACG"/>
-        <enumeration value="ACH"/>
-        <enumeration value="ACI"/>
-        <enumeration value="ACJ"/>
-        <enumeration value="ACK"/>
-        <enumeration value="ACL"/>
-        <enumeration value="ACM"/>
-        <enumeration value="ACN"/>
-        <enumeration value="ACO"/>
-        <enumeration value="ACP"/>
-        <enumeration value="ACQ"/>
-        <enumeration value="ACR"/>
-        <enumeration value="ACS"/>
-        <enumeration value="ACT"/>
-        <enumeration value="ACU"/>
-        <enumeration value="ACV"/>
-        <enumeration value="ACW"/>
-        <enumeration value="ACX"/>
-        <enumeration value="ACY"/>
-        <enumeration value="ACZ"/>
-        <enumeration value="ADA"/>
-        <enumeration value="ADB"/>
-        <enumeration value="ADC"/>
-        <enumeration value="ADD"/>
-        <enumeration value="ADE"/>
-        <enumeration value="ADF"/>
-        <enumeration value="ADG"/>
-        <enumeration value="ADH"/>
-        <enumeration value="ADI"/>
-        <enumeration value="ADJ"/>
-        <enumeration value="ADK"/>
-        <enumeration value="ADL"/>
-        <enumeration value="ADM"/>
-        <enumeration value="ADN"/>
-        <enumeration value="ADO"/>
-        <enumeration value="ADP"/>
-        <enumeration value="ADQ"/>
-        <enumeration value="ADR"/>
-        <enumeration value="ADS"/>
-        <enumeration value="ADT"/>
-        <enumeration value="ADU"/>
-        <enumeration value="ADV"/>
-        <enumeration value="ADW"/>
-        <enumeration value="ADX"/>
-        <enumeration value="ADY"/>
-        <enumeration value="ADZ"/>
-        <enumeration value="AEA"/>
-        <enumeration value="AEB"/>
-        <enumeration value="AEC"/>
-        <enumeration value="AED"/>
-        <enumeration value="AEE"/>
-        <enumeration value="AEF"/>
-        <enumeration value="AEG"/>
-        <enumeration value="AEH"/>
-        <enumeration value="AEI"/>
-        <enumeration value="AEJ"/>
-        <enumeration value="AEK"/>
-        <enumeration value="AEL"/>
-        <enumeration value="AEM"/>
-        <enumeration value="AEN"/>
-        <enumeration value="AEO"/>
-        <enumeration value="AEP"/>
-        <enumeration value="AEQ"/>
-        <enumeration value="AER"/>
-        <enumeration value="AES"/>
-        <enumeration value="AET"/>
-        <enumeration value="AEU"/>
-        <enumeration value="AEV"/>
-        <enumeration value="AEW"/>
-        <enumeration value="AEX"/>
-        <enumeration value="AEY"/>
-        <enumeration value="AEZ"/>
-        <enumeration value="AFA"/>
-        <enumeration value="AFB"/>
-        <enumeration value="AFC"/>
-        <enumeration value="AFD"/>
-        <enumeration value="AFE"/>
-        <enumeration value="AFF"/>
-        <enumeration value="AFG"/>
-        <enumeration value="AFH"/>
-        <enumeration value="AFI"/>
-        <enumeration value="AFJ"/>
-        <enumeration value="AFK"/>
-        <enumeration value="AFL"/>
-        <enumeration value="AFM"/>
-        <enumeration value="AFN"/>
-        <enumeration value="AFO"/>
-        <enumeration value="AFP"/>
-        <enumeration value="AFQ"/>
-        <enumeration value="AFR"/>
-        <enumeration value="AFS"/>
-        <enumeration value="AFT"/>
-        <enumeration value="AFU"/>
-        <enumeration value="AFV"/>
-        <enumeration value="AFW"/>
-        <enumeration value="AFX"/>
-        <enumeration value="AFY"/>
-        <enumeration value="AFZ"/>
-        <enumeration value="AGA"/>
-        <enumeration value="AGB"/>
-        <enumeration value="AGC"/>
-        <enumeration value="AGD"/>
-        <enumeration value="AGE"/>
-        <enumeration value="AGF"/>
-        <enumeration value="AGG"/>
-        <enumeration value="AGH"/>
-        <enumeration value="AGI"/>
-        <enumeration value="AGJ"/>
-        <enumeration value="AGK"/>
-        <enumeration value="AGL"/>
-        <enumeration value="AGM"/>
-        <enumeration value="AGN"/>
-        <enumeration value="AGO"/>
-        <enumeration value="AGP"/>
-        <enumeration value="AGQ"/>
-        <enumeration value="AGR"/>
-        <enumeration value="AGS"/>
-        <enumeration value="AGT"/>
-        <enumeration value="AGU"/>
-        <enumeration value="AGV"/>
-        <enumeration value="AGW"/>
-        <enumeration value="AGX"/>
-        <enumeration value="AGY"/>
-        <enumeration value="AGZ"/>
-        <enumeration value="AHA"/>
-        <enumeration value="AHB"/>
-        <enumeration value="AHC"/>
-        <enumeration value="AHD"/>
-        <enumeration value="AHE"/>
-        <enumeration value="AHF"/>
-        <enumeration value="AHG"/>
-        <enumeration value="AHH"/>
-        <enumeration value="AHI"/>
-        <enumeration value="AHJ"/>
-        <enumeration value="AHK"/>
-        <enumeration value="AHL"/>
-        <enumeration value="AHM"/>
-        <enumeration value="AHN"/>
-        <enumeration value="AHO"/>
-        <enumeration value="AHP"/>
-        <enumeration value="AHQ"/>
-        <enumeration value="AHR"/>
-        <enumeration value="AHS"/>
-        <enumeration value="AHT"/>
-        <enumeration value="AHU"/>
-        <enumeration value="AHV"/>
-        <enumeration value="AHW"/>
-        <enumeration value="AHX"/>
-        <enumeration value="AHY"/>
-        <enumeration value="AHZ"/>
-        <enumeration value="AIA"/>
-        <enumeration value="AIB"/>
-        <enumeration value="AIC"/>
-        <enumeration value="AID"/>
-        <enumeration value="AIE"/>
-        <enumeration value="AIF"/>
-        <enumeration value="AIG"/>
-        <enumeration value="AIH"/>
-        <enumeration value="AII"/>
-        <enumeration value="AIJ"/>
-        <enumeration value="AIK"/>
-        <enumeration value="AIL"/>
-        <enumeration value="AIM"/>
-        <enumeration value="AIN"/>
-        <enumeration value="AIO"/>
-        <enumeration value="AIP"/>
-        <enumeration value="AIQ"/>
-        <enumeration value="AIR"/>
-        <enumeration value="AIS"/>
-        <enumeration value="AIT"/>
-        <enumeration value="AIU"/>
-        <enumeration value="AIV"/>
-        <enumeration value="AIW"/>
-        <enumeration value="AIX"/>
-        <enumeration value="AIY"/>
-        <enumeration value="AIZ"/>
-        <enumeration value="AJA"/>
-        <enumeration value="AJB"/>
-        <enumeration value="ALC"/>
-        <enumeration value="ALD"/>
-        <enumeration value="ALE"/>
-        <enumeration value="ALF"/>
-        <enumeration value="ALG"/>
-        <enumeration value="ALH"/>
-        <enumeration value="ALI"/>
-        <enumeration value="ALJ"/>
-        <enumeration value="ALK"/>
-        <enumeration value="ALL"/>
-        <enumeration value="ALM"/>
-        <enumeration value="ALN"/>
-        <enumeration value="ALO"/>
-        <enumeration value="ALP"/>
-        <enumeration value="ALQ"/>
-        <enumeration value="ARR"/>
-        <enumeration value="ARS"/>
-        <enumeration value="AUT"/>
-        <enumeration value="AUU"/>
-        <enumeration value="AUV"/>
-        <enumeration value="AUW"/>
-        <enumeration value="AUX"/>
-        <enumeration value="AUY"/>
-        <enumeration value="AUZ"/>
-        <enumeration value="AVA"/>
-        <enumeration value="AVB"/>
-        <enumeration value="AVC"/>
-        <enumeration value="AVD"/>
-        <enumeration value="AVE"/>
-        <enumeration value="AVF"/>
-        <enumeration value="BAG"/>
-        <enumeration value="BAH"/>
-        <enumeration value="BAI"/>
-        <enumeration value="BAJ"/>
-        <enumeration value="BAK"/>
-        <enumeration value="BAL"/>
-        <enumeration value="BAM"/>
-        <enumeration value="BAN"/>
-        <enumeration value="BAO"/>
-        <enumeration value="BAP"/>
-        <enumeration value="BAQ"/>
-        <enumeration value="BAR"/>
-        <enumeration value="BAS"/>
-        <enumeration value="BLC"/>
-        <enumeration value="BLD"/>
-        <enumeration value="BLE"/>
-        <enumeration value="BLF"/>
-        <enumeration value="BLG"/>
-        <enumeration value="BLH"/>
-        <enumeration value="BLI"/>
-        <enumeration value="BLJ"/>
-        <enumeration value="BLK"/>
-        <enumeration value="BLL"/>
-        <enumeration value="BLM"/>
-        <enumeration value="BLN"/>
-        <enumeration value="BLO"/>
-        <enumeration value="BLP"/>
-        <enumeration value="BLQ"/>
-        <enumeration value="BLR"/>
-        <enumeration value="BLS"/>
-        <enumeration value="BLT"/>
-        <enumeration value="BLU"/>
-        <enumeration value="BLV"/>
-        <enumeration value="BLW"/>
-        <enumeration value="BLX"/>
-        <enumeration value="BLY"/>
-        <enumeration value="BLZ"/>
-        <enumeration value="BMA"/>
-        <enumeration value="BMB"/>
-        <enumeration value="BMC"/>
-        <enumeration value="BMD"/>
-        <enumeration value="BME"/>
-        <enumeration value="CCI"/>
-        <enumeration value="CEX"/>
-        <enumeration value="CHG"/>
-        <enumeration value="CIP"/>
-        <enumeration value="CLP"/>
-        <enumeration value="CLR"/>
-        <enumeration value="COI"/>
-        <enumeration value="CUR"/>
-        <enumeration value="CUS"/>
-        <enumeration value="DAR"/>
-        <enumeration value="DCL"/>
-        <enumeration value="DEL"/>
-        <enumeration value="DIN"/>
-        <enumeration value="DOC"/>
-        <enumeration value="DUT"/>
-        <enumeration value="EUR"/>
-        <enumeration value="FBC"/>
-        <enumeration value="GBL"/>
-        <enumeration value="GEN"/>
-        <enumeration value="GS7"/>
-        <enumeration value="HAN"/>
-        <enumeration value="HAZ"/>
-        <enumeration value="ICN"/>
-        <enumeration value="IIN"/>
-        <enumeration value="IMI"/>
-        <enumeration value="IND"/>
-        <enumeration value="INS"/>
-        <enumeration value="INV"/>
-        <enumeration value="IRP"/>
-        <enumeration value="ITR"/>
-        <enumeration value="ITS"/>
-        <enumeration value="LAN"/>
-        <enumeration value="LIN"/>
-        <enumeration value="LOI"/>
-        <enumeration value="MCO"/>
-        <enumeration value="MDH"/>
-        <enumeration value="MKS"/>
-        <enumeration value="ORI"/>
-        <enumeration value="OSI"/>
-        <enumeration value="PAC"/>
-        <enumeration value="PAI"/>
-        <enumeration value="PAY"/>
-        <enumeration value="PKG"/>
-        <enumeration value="PKT"/>
-        <enumeration value="PMD"/>
-        <enumeration value="PMT"/>
-        <enumeration value="PRD"/>
-        <enumeration value="PRF"/>
-        <enumeration value="PRI"/>
-        <enumeration value="PUR"/>
-        <enumeration value="QIN"/>
-        <enumeration value="QQD"/>
-        <enumeration value="QUT"/>
-        <enumeration value="RAH"/>
-        <enumeration value="REG"/>
-        <enumeration value="RET"/>
-        <enumeration value="REV"/>
-        <enumeration value="RQR"/>
-        <enumeration value="SAF"/>
-        <enumeration value="SIC"/>
-        <enumeration value="SIN"/>
-        <enumeration value="SLR"/>
-        <enumeration value="SPA"/>
-        <enumeration value="SPG"/>
-        <enumeration value="SPH"/>
-        <enumeration value="SPP"/>
-        <enumeration value="SPT"/>
-        <enumeration value="SRN"/>
-        <enumeration value="SSR"/>
-        <enumeration value="SUR"/>
-        <enumeration value="TCA"/>
-        <enumeration value="TDT"/>
-        <enumeration value="TRA"/>
-        <enumeration value="TRR"/>
-        <enumeration value="TXD"/>
-        <enumeration value="WHI"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="4">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="5">
-        <enumeration value="X1A"/>
-        <enumeration value="X1B"/>
-        <enumeration value="X1D"/>
-        <enumeration value="X1F"/>
-        <enumeration value="X1G"/>
-        <enumeration value="X1W"/>
-        <enumeration value="X2C"/>
-        <enumeration value="X3A"/>
-        <enumeration value="X3H"/>
-        <enumeration value="X43"/>
-        <enumeration value="X44"/>
-        <enumeration value="X4A"/>
-        <enumeration value="X4B"/>
-        <enumeration value="X4C"/>
-        <enumeration value="X4D"/>
-        <enumeration value="X4F"/>
-        <enumeration value="X4G"/>
-        <enumeration value="X4H"/>
-        <enumeration value="X5H"/>
-        <enumeration value="X5L"/>
-        <enumeration value="X5M"/>
-        <enumeration value="X6H"/>
-        <enumeration value="X6P"/>
-        <enumeration value="X7A"/>
-        <enumeration value="X7B"/>
-        <enumeration value="X8A"/>
-        <enumeration value="X8B"/>
-        <enumeration value="X8C"/>
-        <enumeration value="XAA"/>
-        <enumeration value="XAB"/>
-        <enumeration value="XAC"/>
-        <enumeration value="XAD"/>
-        <enumeration value="XAE"/>
-        <enumeration value="XAF"/>
-        <enumeration value="XAG"/>
-        <enumeration value="XAH"/>
-        <enumeration value="XAI"/>
-        <enumeration value="XAJ"/>
-        <enumeration value="XAL"/>
-        <enumeration value="XAM"/>
-        <enumeration value="XAP"/>
-        <enumeration value="XAT"/>
-        <enumeration value="XAV"/>
-        <enumeration value="XB4"/>
-        <enumeration value="XBA"/>
-        <enumeration value="XBB"/>
-        <enumeration value="XBC"/>
-        <enumeration value="XBD"/>
-        <enumeration value="XBE"/>
-        <enumeration value="XBF"/>
-        <enumeration value="XBG"/>
-        <enumeration value="XBH"/>
-        <enumeration value="XBI"/>
-        <enumeration value="XBJ"/>
-        <enumeration value="XBK"/>
-        <enumeration value="XBL"/>
-        <enumeration value="XBM"/>
-        <enumeration value="XBN"/>
-        <enumeration value="XBO"/>
-        <enumeration value="XBP"/>
-        <enumeration value="XBQ"/>
-        <enumeration value="XBR"/>
-        <enumeration value="XBS"/>
-        <enumeration value="XBT"/>
-        <enumeration value="XBU"/>
-        <enumeration value="XBV"/>
-        <enumeration value="XBW"/>
-        <enumeration value="XBX"/>
-        <enumeration value="XBY"/>
-        <enumeration value="XBZ"/>
-        <enumeration value="XCA"/>
-        <enumeration value="XCB"/>
-        <enumeration value="XCC"/>
-        <enumeration value="XCD"/>
-        <enumeration value="XCE"/>
-        <enumeration value="XCF"/>
-        <enumeration value="XCG"/>
-        <enumeration value="XCH"/>
-        <enumeration value="XCI"/>
-        <enumeration value="XCJ"/>
-        <enumeration value="XCK"/>
-        <enumeration value="XCL"/>
-        <enumeration value="XCM"/>
-        <enumeration value="XCN"/>
-        <enumeration value="XCO"/>
-        <enumeration value="XCP"/>
-        <enumeration value="XCQ"/>
-        <enumeration value="XCR"/>
-        <enumeration value="XCS"/>
-        <enumeration value="XCT"/>
-        <enumeration value="XCU"/>
-        <enumeration value="XCV"/>
-        <enumeration value="XCW"/>
-        <enumeration value="XCX"/>
-        <enumeration value="XCY"/>
-        <enumeration value="XCZ"/>
-        <enumeration value="XDA"/>
-        <enumeration value="XDB"/>
-        <enumeration value="XDC"/>
-        <enumeration value="XDG"/>
-        <enumeration value="XDH"/>
-        <enumeration value="XDI"/>
-        <enumeration value="XDJ"/>
-        <enumeration value="XDK"/>
-        <enumeration value="XDL"/>
-        <enumeration value="XDM"/>
-        <enumeration value="XDN"/>
-        <enumeration value="XDP"/>
-        <enumeration value="XDR"/>
-        <enumeration value="XDS"/>
-        <enumeration value="XDT"/>
-        <enumeration value="XDU"/>
-        <enumeration value="XDV"/>
-        <enumeration value="XDW"/>
-        <enumeration value="XDX"/>
-        <enumeration value="XDY"/>
-        <enumeration value="XEC"/>
-        <enumeration value="XED"/>
-        <enumeration value="XEE"/>
-        <enumeration value="XEF"/>
-        <enumeration value="XEG"/>
-        <enumeration value="XEH"/>
-        <enumeration value="XEI"/>
-        <enumeration value="XEN"/>
-        <enumeration value="XFB"/>
-        <enumeration value="XFC"/>
-        <enumeration value="XFD"/>
-        <enumeration value="XFE"/>
-        <enumeration value="XFI"/>
-        <enumeration value="XFL"/>
-        <enumeration value="XFO"/>
-        <enumeration value="XFP"/>
-        <enumeration value="XFR"/>
-        <enumeration value="XFT"/>
-        <enumeration value="XFW"/>
-        <enumeration value="XFX"/>
-        <enumeration value="XGB"/>
-        <enumeration value="XGI"/>
-        <enumeration value="XGL"/>
-        <enumeration value="XGR"/>
-        <enumeration value="XGU"/>
-        <enumeration value="XGY"/>
-        <enumeration value="XGZ"/>
-        <enumeration value="XHA"/>
-        <enumeration value="XHB"/>
-        <enumeration value="XHC"/>
-        <enumeration value="XHG"/>
-        <enumeration value="XHN"/>
-        <enumeration value="XHR"/>
-        <enumeration value="XIA"/>
-        <enumeration value="XIB"/>
-        <enumeration value="XIC"/>
-        <enumeration value="XID"/>
-        <enumeration value="XIE"/>
-        <enumeration value="XIF"/>
-        <enumeration value="XIG"/>
-        <enumeration value="XIH"/>
-        <enumeration value="XIK"/>
-        <enumeration value="XIL"/>
-        <enumeration value="XIN"/>
-        <enumeration value="XIZ"/>
-        <enumeration value="XJB"/>
-        <enumeration value="XJC"/>
-        <enumeration value="XJG"/>
-        <enumeration value="XJR"/>
-        <enumeration value="XJT"/>
-        <enumeration value="XJY"/>
-        <enumeration value="XKG"/>
-        <enumeration value="XKI"/>
-        <enumeration value="XLE"/>
-        <enumeration value="XLG"/>
-        <enumeration value="XLT"/>
-        <enumeration value="XLU"/>
-        <enumeration value="XLV"/>
-        <enumeration value="XLZ"/>
-        <enumeration value="XMA"/>
-        <enumeration value="XMB"/>
-        <enumeration value="XMC"/>
-        <enumeration value="XME"/>
-        <enumeration value="XMR"/>
-        <enumeration value="XMS"/>
-        <enumeration value="XMT"/>
-        <enumeration value="XMW"/>
-        <enumeration value="XMX"/>
-        <enumeration value="XNA"/>
-        <enumeration value="XNE"/>
-        <enumeration value="XNF"/>
-        <enumeration value="XNG"/>
-        <enumeration value="XNS"/>
-        <enumeration value="XNT"/>
-        <enumeration value="XNU"/>
-        <enumeration value="XNV"/>
-        <enumeration value="XOA"/>
-        <enumeration value="XOB"/>
-        <enumeration value="XOC"/>
-        <enumeration value="XOD"/>
-        <enumeration value="XOE"/>
-        <enumeration value="XOF"/>
-        <enumeration value="XOK"/>
-        <enumeration value="XOT"/>
-        <enumeration value="XOU"/>
-        <enumeration value="XP2"/>
-        <enumeration value="XPA"/>
-        <enumeration value="XPB"/>
-        <enumeration value="XPC"/>
-        <enumeration value="XPD"/>
-        <enumeration value="XPE"/>
-        <enumeration value="XPF"/>
-        <enumeration value="XPG"/>
-        <enumeration value="XPH"/>
-        <enumeration value="XPI"/>
-        <enumeration value="XPJ"/>
-        <enumeration value="XPK"/>
-        <enumeration value="XPL"/>
-        <enumeration value="XPN"/>
-        <enumeration value="XPO"/>
-        <enumeration value="XPP"/>
-        <enumeration value="XPR"/>
-        <enumeration value="XPT"/>
-        <enumeration value="XPU"/>
-        <enumeration value="XPV"/>
-        <enumeration value="XPX"/>
-        <enumeration value="XPY"/>
-        <enumeration value="XPZ"/>
-        <enumeration value="XQA"/>
-        <enumeration value="XQB"/>
-        <enumeration value="XQC"/>
-        <enumeration value="XQD"/>
-        <enumeration value="XQF"/>
-        <enumeration value="XQG"/>
-        <enumeration value="XQH"/>
-        <enumeration value="XQJ"/>
-        <enumeration value="XQK"/>
-        <enumeration value="XQL"/>
-        <enumeration value="XQM"/>
-        <enumeration value="XQN"/>
-        <enumeration value="XQP"/>
-        <enumeration value="XQQ"/>
-        <enumeration value="XQR"/>
-        <enumeration value="XQS"/>
-        <enumeration value="XRD"/>
-        <enumeration value="XRG"/>
-        <enumeration value="XRJ"/>
-        <enumeration value="XRK"/>
-        <enumeration value="XRL"/>
-        <enumeration value="XRO"/>
-        <enumeration value="XRT"/>
-        <enumeration value="XRZ"/>
-        <enumeration value="XSA"/>
-        <enumeration value="XSB"/>
-        <enumeration value="XSC"/>
-        <enumeration value="XSD"/>
-        <enumeration value="XSE"/>
-        <enumeration value="XSH"/>
-        <enumeration value="XSI"/>
-        <enumeration value="XSK"/>
-        <enumeration value="XSL"/>
-        <enumeration value="XSM"/>
-        <enumeration value="XSO"/>
-        <enumeration value="XSP"/>
-        <enumeration value="XSS"/>
-        <enumeration value="XST"/>
-        <enumeration value="XSU"/>
-        <enumeration value="XSV"/>
-        <enumeration value="XSW"/>
-        <enumeration value="XSY"/>
-        <enumeration value="XSZ"/>
-        <enumeration value="XT1"/>
-        <enumeration value="XTB"/>
-        <enumeration value="XTC"/>
-        <enumeration value="XTD"/>
-        <enumeration value="XTE"/>
-        <enumeration value="XTG"/>
-        <enumeration value="XTI"/>
-        <enumeration value="XTK"/>
-        <enumeration value="XTL"/>
-        <enumeration value="XTN"/>
-        <enumeration value="XTO"/>
-        <enumeration value="XTR"/>
-        <enumeration value="XTS"/>
-        <enumeration value="XTT"/>
-        <enumeration value="XTU"/>
-        <enumeration value="XTV"/>
-        <enumeration value="XTW"/>
-        <enumeration value="XTY"/>
-        <enumeration value="XTZ"/>
-        <enumeration value="XUC"/>
-        <enumeration value="XUN"/>
-        <enumeration value="XVA"/>
-        <enumeration value="XVG"/>
-        <enumeration value="XVI"/>
-        <enumeration value="XVK"/>
-        <enumeration value="XVL"/>
-        <enumeration value="XVN"/>
-        <enumeration value="XVO"/>
-        <enumeration value="XVP"/>
-        <enumeration value="XVQ"/>
-        <enumeration value="XVR"/>
-        <enumeration value="XVS"/>
-        <enumeration value="XVY"/>
-        <enumeration value="XWA"/>
-        <enumeration value="XWB"/>
-        <enumeration value="XWC"/>
-        <enumeration value="XWD"/>
-        <enumeration value="XWF"/>
-        <enumeration value="XWG"/>
-        <enumeration value="XWH"/>
-        <enumeration value="XWJ"/>
-        <enumeration value="XWK"/>
-        <enumeration value="XWL"/>
-        <enumeration value="XWM"/>
-        <enumeration value="XWN"/>
-        <enumeration value="XWP"/>
-        <enumeration value="XWQ"/>
-        <enumeration value="XWR"/>
-        <enumeration value="XWS"/>
-        <enumeration value="XWT"/>
-        <enumeration value="XWU"/>
-        <enumeration value="XWV"/>
-        <enumeration value="XWW"/>
-        <enumeration value="XWX"/>
-        <enumeration value="XWY"/>
-        <enumeration value="XWZ"/>
-        <enumeration value="XXA"/>
-        <enumeration value="XXB"/>
-        <enumeration value="XXC"/>
-        <enumeration value="XXD"/>
-        <enumeration value="XXF"/>
-        <enumeration value="XXG"/>
-        <enumeration value="XXH"/>
-        <enumeration value="XXJ"/>
-        <enumeration value="XXK"/>
-        <enumeration value="XYA"/>
-        <enumeration value="XYB"/>
-        <enumeration value="XYC"/>
-        <enumeration value="XYD"/>
-        <enumeration value="XYF"/>
-        <enumeration value="XYG"/>
-        <enumeration value="XYH"/>
-        <enumeration value="XYJ"/>
-        <enumeration value="XYK"/>
-        <enumeration value="XYL"/>
-        <enumeration value="XYM"/>
-        <enumeration value="XYN"/>
-        <enumeration value="XYP"/>
-        <enumeration value="XYQ"/>
-        <enumeration value="XYR"/>
-        <enumeration value="XYS"/>
-        <enumeration value="XYT"/>
-        <enumeration value="XYV"/>
-        <enumeration value="XYW"/>
-        <enumeration value="XYX"/>
-        <enumeration value="XYY"/>
-        <enumeration value="XYZ"/>
-        <enumeration value="XZA"/>
-        <enumeration value="XZB"/>
-        <enumeration value="XZC"/>
-        <enumeration value="XZD"/>
-        <enumeration value="XZF"/>
-        <enumeration value="XZG"/>
-        <enumeration value="XZH"/>
-        <enumeration value="XZJ"/>
-        <enumeration value="XZK"/>
-        <enumeration value="XZL"/>
-        <enumeration value="XZM"/>
-        <enumeration value="XZN"/>
-        <enumeration value="XZP"/>
-        <enumeration value="XZQ"/>
-        <enumeration value="XZR"/>
-        <enumeration value="XZS"/>
-        <enumeration value="XZT"/>
-        <enumeration value="XZU"/>
-        <enumeration value="XZV"/>
-        <enumeration value="XZW"/>
-        <enumeration value="XZX"/>
-        <enumeration value="XZY"/>
-        <enumeration value="XZZ"/>
-        <enumeration value="10"/>
-        <enumeration value="11"/>
-        <enumeration value="13"/>
-        <enumeration value="14"/>
-        <enumeration value="15"/>
-        <enumeration value="20"/>
-        <enumeration value="21"/>
-        <enumeration value="22"/>
-        <enumeration value="23"/>
-        <enumeration value="24"/>
-        <enumeration value="25"/>
-        <enumeration value="27"/>
-        <enumeration value="28"/>
-        <enumeration value="33"/>
-        <enumeration value="34"/>
-        <enumeration value="35"/>
-        <enumeration value="37"/>
-        <enumeration value="38"/>
-        <enumeration value="40"/>
-        <enumeration value="41"/>
-        <enumeration value="56"/>
-        <enumeration value="57"/>
-        <enumeration value="58"/>
-        <enumeration value="59"/>
-        <enumeration value="60"/>
-        <enumeration value="61"/>
-        <enumeration value="64"/>
-        <enumeration value="66"/>
-        <enumeration value="74"/>
-        <enumeration value="76"/>
-        <enumeration value="77"/>
-        <enumeration value="78"/>
-        <enumeration value="80"/>
-        <enumeration value="81"/>
-        <enumeration value="84"/>
-        <enumeration value="85"/>
-        <enumeration value="87"/>
-        <enumeration value="89"/>
-        <enumeration value="91"/>
-        <enumeration value="1I"/>
-        <enumeration value="2A"/>
-        <enumeration value="2B"/>
-        <enumeration value="2C"/>
-        <enumeration value="2G"/>
-        <enumeration value="2H"/>
-        <enumeration value="2I"/>
-        <enumeration value="2J"/>
-        <enumeration value="2K"/>
-        <enumeration value="2L"/>
-        <enumeration value="2M"/>
-        <enumeration value="2N"/>
-        <enumeration value="2P"/>
-        <enumeration value="2Q"/>
-        <enumeration value="2R"/>
-        <enumeration value="2U"/>
-        <enumeration value="2X"/>
-        <enumeration value="2Y"/>
-        <enumeration value="2Z"/>
-        <enumeration value="3B"/>
-        <enumeration value="3C"/>
-        <enumeration value="4C"/>
-        <enumeration value="4G"/>
-        <enumeration value="4H"/>
-        <enumeration value="4K"/>
-        <enumeration value="4L"/>
-        <enumeration value="4M"/>
-        <enumeration value="4N"/>
-        <enumeration value="4O"/>
-        <enumeration value="4P"/>
-        <enumeration value="4Q"/>
-        <enumeration value="4R"/>
-        <enumeration value="4T"/>
-        <enumeration value="4U"/>
-        <enumeration value="4W"/>
-        <enumeration value="4X"/>
-        <enumeration value="5A"/>
-        <enumeration value="5B"/>
-        <enumeration value="5E"/>
-        <enumeration value="5J"/>
-        <enumeration value="A1"/>
-        <enumeration value="A10"/>
-        <enumeration value="A11"/>
-        <enumeration value="A12"/>
-        <enumeration value="A13"/>
-        <enumeration value="A14"/>
-        <enumeration value="A15"/>
-        <enumeration value="A16"/>
-        <enumeration value="A17"/>
-        <enumeration value="A18"/>
-        <enumeration value="A19"/>
-        <enumeration value="A2"/>
-        <enumeration value="A20"/>
-        <enumeration value="A21"/>
-        <enumeration value="A22"/>
-        <enumeration value="A23"/>
-        <enumeration value="A24"/>
-        <enumeration value="A25"/>
-        <enumeration value="A26"/>
-        <enumeration value="A27"/>
-        <enumeration value="A28"/>
-        <enumeration value="A29"/>
-        <enumeration value="A3"/>
-        <enumeration value="A30"/>
-        <enumeration value="A31"/>
-        <enumeration value="A32"/>
-        <enumeration value="A33"/>
-        <enumeration value="A34"/>
-        <enumeration value="A35"/>
-        <enumeration value="A36"/>
-        <enumeration value="A37"/>
-        <enumeration value="A38"/>
-        <enumeration value="A39"/>
-        <enumeration value="A4"/>
-        <enumeration value="A40"/>
-        <enumeration value="A41"/>
-        <enumeration value="A42"/>
-        <enumeration value="A43"/>
-        <enumeration value="A44"/>
-        <enumeration value="A45"/>
-        <enumeration value="A47"/>
-        <enumeration value="A48"/>
-        <enumeration value="A49"/>
-        <enumeration value="A5"/>
-        <enumeration value="A50"/>
-        <enumeration value="A51"/>
-        <enumeration value="A52"/>
-        <enumeration value="A53"/>
-        <enumeration value="A54"/>
-        <enumeration value="A55"/>
-        <enumeration value="A56"/>
-        <enumeration value="A57"/>
-        <enumeration value="A58"/>
-        <enumeration value="A59"/>
-        <enumeration value="A6"/>
-        <enumeration value="A60"/>
-        <enumeration value="A61"/>
-        <enumeration value="A62"/>
-        <enumeration value="A63"/>
-        <enumeration value="A64"/>
-        <enumeration value="A65"/>
-        <enumeration value="A66"/>
-        <enumeration value="A67"/>
-        <enumeration value="A68"/>
-        <enumeration value="A69"/>
-        <enumeration value="A7"/>
-        <enumeration value="A70"/>
-        <enumeration value="A71"/>
-        <enumeration value="A73"/>
-        <enumeration value="A74"/>
-        <enumeration value="A75"/>
-        <enumeration value="A76"/>
-        <enumeration value="A77"/>
-        <enumeration value="A78"/>
-        <enumeration value="A79"/>
-        <enumeration value="A8"/>
-        <enumeration value="A80"/>
-        <enumeration value="A81"/>
-        <enumeration value="A82"/>
-        <enumeration value="A83"/>
-        <enumeration value="A84"/>
-        <enumeration value="A85"/>
-        <enumeration value="A86"/>
-        <enumeration value="A87"/>
-        <enumeration value="A88"/>
-        <enumeration value="A89"/>
-        <enumeration value="A9"/>
-        <enumeration value="A90"/>
-        <enumeration value="A91"/>
-        <enumeration value="A93"/>
-        <enumeration value="A94"/>
-        <enumeration value="A95"/>
-        <enumeration value="A96"/>
-        <enumeration value="A97"/>
-        <enumeration value="A98"/>
-        <enumeration value="A99"/>
-        <enumeration value="AA"/>
-        <enumeration value="AB"/>
-        <enumeration value="ACR"/>
-        <enumeration value="ACT"/>
-        <enumeration value="AD"/>
-        <enumeration value="AE"/>
-        <enumeration value="AH"/>
-        <enumeration value="AI"/>
-        <enumeration value="AK"/>
-        <enumeration value="AL"/>
-        <enumeration value="AMH"/>
-        <enumeration value="AMP"/>
-        <enumeration value="ANN"/>
-        <enumeration value="APZ"/>
-        <enumeration value="AQ"/>
-        <enumeration value="ARE"/>
-        <enumeration value="AS"/>
-        <enumeration value="ASM"/>
-        <enumeration value="ASU"/>
-        <enumeration value="ATM"/>
-        <enumeration value="ATT"/>
-        <enumeration value="AWG"/>
-        <enumeration value="AY"/>
-        <enumeration value="AZ"/>
-        <enumeration value="B1"/>
-        <enumeration value="B10"/>
-        <enumeration value="B11"/>
-        <enumeration value="B12"/>
-        <enumeration value="B13"/>
-        <enumeration value="B14"/>
-        <enumeration value="B15"/>
-        <enumeration value="B16"/>
-        <enumeration value="B17"/>
-        <enumeration value="B18"/>
-        <enumeration value="B19"/>
-        <enumeration value="B20"/>
-        <enumeration value="B21"/>
-        <enumeration value="B22"/>
-        <enumeration value="B23"/>
-        <enumeration value="B24"/>
-        <enumeration value="B25"/>
-        <enumeration value="B26"/>
-        <enumeration value="B27"/>
-        <enumeration value="B28"/>
-        <enumeration value="B29"/>
-        <enumeration value="B3"/>
-        <enumeration value="B30"/>
-        <enumeration value="B31"/>
-        <enumeration value="B32"/>
-        <enumeration value="B33"/>
-        <enumeration value="B34"/>
-        <enumeration value="B35"/>
-        <enumeration value="B36"/>
-        <enumeration value="B37"/>
-        <enumeration value="B38"/>
-        <enumeration value="B39"/>
-        <enumeration value="B4"/>
-        <enumeration value="B40"/>
-        <enumeration value="B41"/>
-        <enumeration value="B42"/>
-        <enumeration value="B43"/>
-        <enumeration value="B44"/>
-        <enumeration value="B45"/>
-        <enumeration value="B46"/>
-        <enumeration value="B47"/>
-        <enumeration value="B48"/>
-        <enumeration value="B49"/>
-        <enumeration value="B50"/>
-        <enumeration value="B51"/>
-        <enumeration value="B52"/>
-        <enumeration value="B53"/>
-        <enumeration value="B54"/>
-        <enumeration value="B55"/>
-        <enumeration value="B56"/>
-        <enumeration value="B57"/>
-        <enumeration value="B58"/>
-        <enumeration value="B59"/>
-        <enumeration value="B60"/>
-        <enumeration value="B61"/>
-        <enumeration value="B62"/>
-        <enumeration value="B63"/>
-        <enumeration value="B64"/>
-        <enumeration value="B65"/>
-        <enumeration value="B66"/>
-        <enumeration value="B67"/>
-        <enumeration value="B68"/>
-        <enumeration value="B69"/>
-        <enumeration value="B7"/>
-        <enumeration value="B70"/>
-        <enumeration value="B71"/>
-        <enumeration value="B72"/>
-        <enumeration value="B73"/>
-        <enumeration value="B74"/>
-        <enumeration value="B75"/>
-        <enumeration value="B76"/>
-        <enumeration value="B77"/>
-        <enumeration value="B78"/>
-        <enumeration value="B79"/>
-        <enumeration value="B8"/>
-        <enumeration value="B80"/>
-        <enumeration value="B81"/>
-        <enumeration value="B82"/>
-        <enumeration value="B83"/>
-        <enumeration value="B84"/>
-        <enumeration value="B85"/>
-        <enumeration value="B86"/>
-        <enumeration value="B87"/>
-        <enumeration value="B88"/>
-        <enumeration value="B89"/>
-        <enumeration value="B90"/>
-        <enumeration value="B91"/>
-        <enumeration value="B92"/>
-        <enumeration value="B93"/>
-        <enumeration value="B94"/>
-        <enumeration value="B95"/>
-        <enumeration value="B96"/>
-        <enumeration value="B97"/>
-        <enumeration value="B98"/>
-        <enumeration value="B99"/>
-        <enumeration value="BAR"/>
-        <enumeration value="BB"/>
-        <enumeration value="BFT"/>
-        <enumeration value="BHP"/>
-        <enumeration value="BIL"/>
-        <enumeration value="BLD"/>
-        <enumeration value="BLL"/>
-        <enumeration value="BP"/>
-        <enumeration value="BPM"/>
-        <enumeration value="BQL"/>
-        <enumeration value="BTU"/>
-        <enumeration value="BUA"/>
-        <enumeration value="BUI"/>
-        <enumeration value="C0"/>
-        <enumeration value="C10"/>
-        <enumeration value="C11"/>
-        <enumeration value="C12"/>
-        <enumeration value="C13"/>
-        <enumeration value="C14"/>
-        <enumeration value="C15"/>
-        <enumeration value="C16"/>
-        <enumeration value="C17"/>
-        <enumeration value="C18"/>
-        <enumeration value="C19"/>
-        <enumeration value="C20"/>
-        <enumeration value="C21"/>
-        <enumeration value="C22"/>
-        <enumeration value="C23"/>
-        <enumeration value="C24"/>
-        <enumeration value="C25"/>
-        <enumeration value="C26"/>
-        <enumeration value="C27"/>
-        <enumeration value="C28"/>
-        <enumeration value="C29"/>
-        <enumeration value="C3"/>
-        <enumeration value="C30"/>
-        <enumeration value="C31"/>
-        <enumeration value="C32"/>
-        <enumeration value="C33"/>
-        <enumeration value="C34"/>
-        <enumeration value="C35"/>
-        <enumeration value="C36"/>
-        <enumeration value="C37"/>
-        <enumeration value="C38"/>
-        <enumeration value="C39"/>
-        <enumeration value="C40"/>
-        <enumeration value="C41"/>
-        <enumeration value="C42"/>
-        <enumeration value="C43"/>
-        <enumeration value="C44"/>
-        <enumeration value="C45"/>
-        <enumeration value="C46"/>
-        <enumeration value="C47"/>
-        <enumeration value="C48"/>
-        <enumeration value="C49"/>
-        <enumeration value="C50"/>
-        <enumeration value="C51"/>
-        <enumeration value="C52"/>
-        <enumeration value="C53"/>
-        <enumeration value="C54"/>
-        <enumeration value="C55"/>
-        <enumeration value="C56"/>
-        <enumeration value="C57"/>
-        <enumeration value="C58"/>
-        <enumeration value="C59"/>
-        <enumeration value="C60"/>
-        <enumeration value="C61"/>
-        <enumeration value="C62"/>
-        <enumeration value="C63"/>
-        <enumeration value="C64"/>
-        <enumeration value="C65"/>
-        <enumeration value="C66"/>
-        <enumeration value="C67"/>
-        <enumeration value="C68"/>
-        <enumeration value="C69"/>
-        <enumeration value="C7"/>
-        <enumeration value="C70"/>
-        <enumeration value="C71"/>
-        <enumeration value="C72"/>
-        <enumeration value="C73"/>
-        <enumeration value="C74"/>
-        <enumeration value="C75"/>
-        <enumeration value="C76"/>
-        <enumeration value="C78"/>
-        <enumeration value="C79"/>
-        <enumeration value="C8"/>
-        <enumeration value="C80"/>
-        <enumeration value="C81"/>
-        <enumeration value="C82"/>
-        <enumeration value="C83"/>
-        <enumeration value="C84"/>
-        <enumeration value="C85"/>
-        <enumeration value="C86"/>
-        <enumeration value="C87"/>
-        <enumeration value="C88"/>
-        <enumeration value="C89"/>
-        <enumeration value="C9"/>
-        <enumeration value="C90"/>
-        <enumeration value="C91"/>
-        <enumeration value="C92"/>
-        <enumeration value="C93"/>
-        <enumeration value="C94"/>
-        <enumeration value="C95"/>
-        <enumeration value="C96"/>
-        <enumeration value="C97"/>
-        <enumeration value="C99"/>
-        <enumeration value="CCT"/>
-        <enumeration value="CDL"/>
-        <enumeration value="CEL"/>
-        <enumeration value="CEN"/>
-        <enumeration value="CG"/>
-        <enumeration value="CGM"/>
-        <enumeration value="CKG"/>
-        <enumeration value="CLF"/>
-        <enumeration value="CLT"/>
-        <enumeration value="CMK"/>
-        <enumeration value="CMQ"/>
-        <enumeration value="CMT"/>
-        <enumeration value="CNP"/>
-        <enumeration value="CNT"/>
-        <enumeration value="COU"/>
-        <enumeration value="CTG"/>
-        <enumeration value="CTM"/>
-        <enumeration value="CTN"/>
-        <enumeration value="CUR"/>
-        <enumeration value="CWA"/>
-        <enumeration value="CWI"/>
-        <enumeration value="D03"/>
-        <enumeration value="D04"/>
-        <enumeration value="D1"/>
-        <enumeration value="D10"/>
-        <enumeration value="D11"/>
-        <enumeration value="D12"/>
-        <enumeration value="D13"/>
-        <enumeration value="D15"/>
-        <enumeration value="D16"/>
-        <enumeration value="D17"/>
-        <enumeration value="D18"/>
-        <enumeration value="D19"/>
-        <enumeration value="D2"/>
-        <enumeration value="D20"/>
-        <enumeration value="D21"/>
-        <enumeration value="D22"/>
-        <enumeration value="D23"/>
-        <enumeration value="D24"/>
-        <enumeration value="D25"/>
-        <enumeration value="D26"/>
-        <enumeration value="D27"/>
-        <enumeration value="D29"/>
-        <enumeration value="D30"/>
-        <enumeration value="D31"/>
-        <enumeration value="D32"/>
-        <enumeration value="D33"/>
-        <enumeration value="D34"/>
-        <enumeration value="D35"/>
-        <enumeration value="D36"/>
-        <enumeration value="D37"/>
-        <enumeration value="D38"/>
-        <enumeration value="D39"/>
-        <enumeration value="D41"/>
-        <enumeration value="D42"/>
-        <enumeration value="D43"/>
-        <enumeration value="D44"/>
-        <enumeration value="D45"/>
-        <enumeration value="D46"/>
-        <enumeration value="D47"/>
-        <enumeration value="D48"/>
-        <enumeration value="D49"/>
-        <enumeration value="D5"/>
-        <enumeration value="D50"/>
-        <enumeration value="D51"/>
-        <enumeration value="D52"/>
-        <enumeration value="D53"/>
-        <enumeration value="D54"/>
-        <enumeration value="D55"/>
-        <enumeration value="D56"/>
-        <enumeration value="D57"/>
-        <enumeration value="D58"/>
-        <enumeration value="D59"/>
-        <enumeration value="D6"/>
-        <enumeration value="D60"/>
-        <enumeration value="D61"/>
-        <enumeration value="D62"/>
-        <enumeration value="D63"/>
-        <enumeration value="D65"/>
-        <enumeration value="D68"/>
-        <enumeration value="D69"/>
-        <enumeration value="D70"/>
-        <enumeration value="D71"/>
-        <enumeration value="D72"/>
-        <enumeration value="D73"/>
-        <enumeration value="D74"/>
-        <enumeration value="D75"/>
-        <enumeration value="D76"/>
-        <enumeration value="D77"/>
-        <enumeration value="D78"/>
-        <enumeration value="D80"/>
-        <enumeration value="D81"/>
-        <enumeration value="D82"/>
-        <enumeration value="D83"/>
-        <enumeration value="D85"/>
-        <enumeration value="D86"/>
-        <enumeration value="D87"/>
-        <enumeration value="D88"/>
-        <enumeration value="D89"/>
-        <enumeration value="D9"/>
-        <enumeration value="D91"/>
-        <enumeration value="D93"/>
-        <enumeration value="D94"/>
-        <enumeration value="D95"/>
-        <enumeration value="DAA"/>
-        <enumeration value="DAD"/>
-        <enumeration value="DAY"/>
-        <enumeration value="DB"/>
-        <enumeration value="DD"/>
-        <enumeration value="DEC"/>
-        <enumeration value="DG"/>
-        <enumeration value="DJ"/>
-        <enumeration value="DLT"/>
-        <enumeration value="DMA"/>
-        <enumeration value="DMK"/>
-        <enumeration value="DMO"/>
-        <enumeration value="DMQ"/>
-        <enumeration value="DMT"/>
-        <enumeration value="DN"/>
-        <enumeration value="DPC"/>
-        <enumeration value="DPR"/>
-        <enumeration value="DPT"/>
-        <enumeration value="DRA"/>
-        <enumeration value="DRI"/>
-        <enumeration value="DRL"/>
-        <enumeration value="DT"/>
-        <enumeration value="DTN"/>
-        <enumeration value="DU"/>
-        <enumeration value="DWT"/>
-        <enumeration value="DX"/>
-        <enumeration value="DZN"/>
-        <enumeration value="DZP"/>
-        <enumeration value="E01"/>
-        <enumeration value="E07"/>
-        <enumeration value="E08"/>
-        <enumeration value="E09"/>
-        <enumeration value="E10"/>
-        <enumeration value="E11"/>
-        <enumeration value="E12"/>
-        <enumeration value="E14"/>
-        <enumeration value="E15"/>
-        <enumeration value="E16"/>
-        <enumeration value="E17"/>
-        <enumeration value="E18"/>
-        <enumeration value="E19"/>
-        <enumeration value="E20"/>
-        <enumeration value="E21"/>
-        <enumeration value="E22"/>
-        <enumeration value="E23"/>
-        <enumeration value="E25"/>
-        <enumeration value="E27"/>
-        <enumeration value="E28"/>
-        <enumeration value="E30"/>
-        <enumeration value="E31"/>
-        <enumeration value="E32"/>
-        <enumeration value="E33"/>
-        <enumeration value="E34"/>
-        <enumeration value="E35"/>
-        <enumeration value="E36"/>
-        <enumeration value="E37"/>
-        <enumeration value="E38"/>
-        <enumeration value="E39"/>
-        <enumeration value="E4"/>
-        <enumeration value="E40"/>
-        <enumeration value="E41"/>
-        <enumeration value="E42"/>
-        <enumeration value="E43"/>
-        <enumeration value="E44"/>
-        <enumeration value="E45"/>
-        <enumeration value="E46"/>
-        <enumeration value="E47"/>
-        <enumeration value="E48"/>
-        <enumeration value="E49"/>
-        <enumeration value="E50"/>
-        <enumeration value="E51"/>
-        <enumeration value="E52"/>
-        <enumeration value="E53"/>
-        <enumeration value="E54"/>
-        <enumeration value="E55"/>
-        <enumeration value="E56"/>
-        <enumeration value="E57"/>
-        <enumeration value="E58"/>
-        <enumeration value="E59"/>
-        <enumeration value="E60"/>
-        <enumeration value="E61"/>
-        <enumeration value="E62"/>
-        <enumeration value="E63"/>
-        <enumeration value="E64"/>
-        <enumeration value="E65"/>
-        <enumeration value="E66"/>
-        <enumeration value="E67"/>
-        <enumeration value="E68"/>
-        <enumeration value="E69"/>
-        <enumeration value="E70"/>
-        <enumeration value="E71"/>
-        <enumeration value="E72"/>
-        <enumeration value="E73"/>
-        <enumeration value="E74"/>
-        <enumeration value="E75"/>
-        <enumeration value="E76"/>
-        <enumeration value="E77"/>
-        <enumeration value="E78"/>
-        <enumeration value="E79"/>
-        <enumeration value="E80"/>
-        <enumeration value="E81"/>
-        <enumeration value="E82"/>
-        <enumeration value="E83"/>
-        <enumeration value="E84"/>
-        <enumeration value="E85"/>
-        <enumeration value="E86"/>
-        <enumeration value="E87"/>
-        <enumeration value="E88"/>
-        <enumeration value="E89"/>
-        <enumeration value="E90"/>
-        <enumeration value="E91"/>
-        <enumeration value="E92"/>
-        <enumeration value="E93"/>
-        <enumeration value="E94"/>
-        <enumeration value="E95"/>
-        <enumeration value="E96"/>
-        <enumeration value="E97"/>
-        <enumeration value="E98"/>
-        <enumeration value="E99"/>
-        <enumeration value="EA"/>
-        <enumeration value="EB"/>
-        <enumeration value="EQ"/>
-        <enumeration value="F01"/>
-        <enumeration value="F02"/>
-        <enumeration value="F03"/>
-        <enumeration value="F04"/>
-        <enumeration value="F05"/>
-        <enumeration value="F06"/>
-        <enumeration value="F07"/>
-        <enumeration value="F08"/>
-        <enumeration value="F10"/>
-        <enumeration value="F11"/>
-        <enumeration value="F12"/>
-        <enumeration value="F13"/>
-        <enumeration value="F14"/>
-        <enumeration value="F15"/>
-        <enumeration value="F16"/>
-        <enumeration value="F17"/>
-        <enumeration value="F18"/>
-        <enumeration value="F19"/>
-        <enumeration value="F20"/>
-        <enumeration value="F21"/>
-        <enumeration value="F22"/>
-        <enumeration value="F23"/>
-        <enumeration value="F24"/>
-        <enumeration value="F25"/>
-        <enumeration value="F26"/>
-        <enumeration value="F27"/>
-        <enumeration value="F28"/>
-        <enumeration value="F29"/>
-        <enumeration value="F30"/>
-        <enumeration value="F31"/>
-        <enumeration value="F32"/>
-        <enumeration value="F33"/>
-        <enumeration value="F34"/>
-        <enumeration value="F35"/>
-        <enumeration value="F36"/>
-        <enumeration value="F37"/>
-        <enumeration value="F38"/>
-        <enumeration value="F39"/>
-        <enumeration value="F40"/>
-        <enumeration value="F41"/>
-        <enumeration value="F42"/>
-        <enumeration value="F43"/>
-        <enumeration value="F44"/>
-        <enumeration value="F45"/>
-        <enumeration value="F46"/>
-        <enumeration value="F47"/>
-        <enumeration value="F48"/>
-        <enumeration value="F49"/>
-        <enumeration value="F50"/>
-        <enumeration value="F51"/>
-        <enumeration value="F52"/>
-        <enumeration value="F53"/>
-        <enumeration value="F54"/>
-        <enumeration value="F55"/>
-        <enumeration value="F56"/>
-        <enumeration value="F57"/>
-        <enumeration value="F58"/>
-        <enumeration value="F59"/>
-        <enumeration value="F60"/>
-        <enumeration value="F61"/>
-        <enumeration value="F62"/>
-        <enumeration value="F63"/>
-        <enumeration value="F64"/>
-        <enumeration value="F65"/>
-        <enumeration value="F66"/>
-        <enumeration value="F67"/>
-        <enumeration value="F68"/>
-        <enumeration value="F69"/>
-        <enumeration value="F70"/>
-        <enumeration value="F71"/>
-        <enumeration value="F72"/>
-        <enumeration value="F73"/>
-        <enumeration value="F74"/>
-        <enumeration value="F75"/>
-        <enumeration value="F76"/>
-        <enumeration value="F77"/>
-        <enumeration value="F78"/>
-        <enumeration value="F79"/>
-        <enumeration value="F80"/>
-        <enumeration value="F81"/>
-        <enumeration value="F82"/>
-        <enumeration value="F83"/>
-        <enumeration value="F84"/>
-        <enumeration value="F85"/>
-        <enumeration value="F86"/>
-        <enumeration value="F87"/>
-        <enumeration value="F88"/>
-        <enumeration value="F89"/>
-        <enumeration value="F90"/>
-        <enumeration value="F91"/>
-        <enumeration value="F92"/>
-        <enumeration value="F93"/>
-        <enumeration value="F94"/>
-        <enumeration value="F95"/>
-        <enumeration value="F96"/>
-        <enumeration value="F97"/>
-        <enumeration value="F98"/>
-        <enumeration value="F99"/>
-        <enumeration value="FAH"/>
-        <enumeration value="FAR"/>
-        <enumeration value="FBM"/>
-        <enumeration value="FC"/>
-        <enumeration value="FF"/>
-        <enumeration value="FH"/>
-        <enumeration value="FIT"/>
-        <enumeration value="FL"/>
-        <enumeration value="FOT"/>
-        <enumeration value="FP"/>
-        <enumeration value="FR"/>
-        <enumeration value="FS"/>
-        <enumeration value="FTK"/>
-        <enumeration value="FTQ"/>
-        <enumeration value="G01"/>
-        <enumeration value="G04"/>
-        <enumeration value="G05"/>
-        <enumeration value="G06"/>
-        <enumeration value="G08"/>
-        <enumeration value="G09"/>
-        <enumeration value="G10"/>
-        <enumeration value="G11"/>
-        <enumeration value="G12"/>
-        <enumeration value="G13"/>
-        <enumeration value="G14"/>
-        <enumeration value="G15"/>
-        <enumeration value="G16"/>
-        <enumeration value="G17"/>
-        <enumeration value="G18"/>
-        <enumeration value="G19"/>
-        <enumeration value="G2"/>
-        <enumeration value="G20"/>
-        <enumeration value="G21"/>
-        <enumeration value="G23"/>
-        <enumeration value="G24"/>
-        <enumeration value="G25"/>
-        <enumeration value="G26"/>
-        <enumeration value="G27"/>
-        <enumeration value="G28"/>
-        <enumeration value="G29"/>
-        <enumeration value="G3"/>
-        <enumeration value="G30"/>
-        <enumeration value="G31"/>
-        <enumeration value="G32"/>
-        <enumeration value="G33"/>
-        <enumeration value="G34"/>
-        <enumeration value="G35"/>
-        <enumeration value="G36"/>
-        <enumeration value="G37"/>
-        <enumeration value="G38"/>
-        <enumeration value="G39"/>
-        <enumeration value="G40"/>
-        <enumeration value="G41"/>
-        <enumeration value="G42"/>
-        <enumeration value="G43"/>
-        <enumeration value="G44"/>
-        <enumeration value="G45"/>
-        <enumeration value="G46"/>
-        <enumeration value="G47"/>
-        <enumeration value="G48"/>
-        <enumeration value="G49"/>
-        <enumeration value="G50"/>
-        <enumeration value="G51"/>
-        <enumeration value="G52"/>
-        <enumeration value="G53"/>
-        <enumeration value="G54"/>
-        <enumeration value="G55"/>
-        <enumeration value="G56"/>
-        <enumeration value="G57"/>
-        <enumeration value="G58"/>
-        <enumeration value="G59"/>
-        <enumeration value="G60"/>
-        <enumeration value="G61"/>
-        <enumeration value="G62"/>
-        <enumeration value="G63"/>
-        <enumeration value="G64"/>
-        <enumeration value="G65"/>
-        <enumeration value="G66"/>
-        <enumeration value="G67"/>
-        <enumeration value="G68"/>
-        <enumeration value="G69"/>
-        <enumeration value="G70"/>
-        <enumeration value="G71"/>
-        <enumeration value="G72"/>
-        <enumeration value="G73"/>
-        <enumeration value="G74"/>
-        <enumeration value="G75"/>
-        <enumeration value="G76"/>
-        <enumeration value="G77"/>
-        <enumeration value="G78"/>
-        <enumeration value="G79"/>
-        <enumeration value="G80"/>
-        <enumeration value="G81"/>
-        <enumeration value="G82"/>
-        <enumeration value="G83"/>
-        <enumeration value="G84"/>
-        <enumeration value="G85"/>
-        <enumeration value="G86"/>
-        <enumeration value="G87"/>
-        <enumeration value="G88"/>
-        <enumeration value="G89"/>
-        <enumeration value="G90"/>
-        <enumeration value="G91"/>
-        <enumeration value="G92"/>
-        <enumeration value="G93"/>
-        <enumeration value="G94"/>
-        <enumeration value="G95"/>
-        <enumeration value="G96"/>
-        <enumeration value="G97"/>
-        <enumeration value="G98"/>
-        <enumeration value="G99"/>
-        <enumeration value="GB"/>
-        <enumeration value="GBQ"/>
-        <enumeration value="GDW"/>
-        <enumeration value="GE"/>
-        <enumeration value="GF"/>
-        <enumeration value="GFI"/>
-        <enumeration value="GGR"/>
-        <enumeration value="GIA"/>
-        <enumeration value="GIC"/>
-        <enumeration value="GII"/>
-        <enumeration value="GIP"/>
-        <enumeration value="GJ"/>
-        <enumeration value="GL"/>
-        <enumeration value="GLD"/>
-        <enumeration value="GLI"/>
-        <enumeration value="GLL"/>
-        <enumeration value="GM"/>
-        <enumeration value="GO"/>
-        <enumeration value="GP"/>
-        <enumeration value="GQ"/>
-        <enumeration value="GRM"/>
-        <enumeration value="GRN"/>
-        <enumeration value="GRO"/>
-        <enumeration value="GRT"/>
-        <enumeration value="GT"/>
-        <enumeration value="GV"/>
-        <enumeration value="GWH"/>
-        <enumeration value="H03"/>
-        <enumeration value="H04"/>
-        <enumeration value="H05"/>
-        <enumeration value="H06"/>
-        <enumeration value="H07"/>
-        <enumeration value="H08"/>
-        <enumeration value="H09"/>
-        <enumeration value="H10"/>
-        <enumeration value="H11"/>
-        <enumeration value="H12"/>
-        <enumeration value="H13"/>
-        <enumeration value="H14"/>
-        <enumeration value="H15"/>
-        <enumeration value="H16"/>
-        <enumeration value="H18"/>
-        <enumeration value="H19"/>
-        <enumeration value="H20"/>
-        <enumeration value="H21"/>
-        <enumeration value="H22"/>
-        <enumeration value="H23"/>
-        <enumeration value="H24"/>
-        <enumeration value="H25"/>
-        <enumeration value="H26"/>
-        <enumeration value="H27"/>
-        <enumeration value="H28"/>
-        <enumeration value="H29"/>
-        <enumeration value="H30"/>
-        <enumeration value="H31"/>
-        <enumeration value="H32"/>
-        <enumeration value="H33"/>
-        <enumeration value="H34"/>
-        <enumeration value="H35"/>
-        <enumeration value="H36"/>
-        <enumeration value="H37"/>
-        <enumeration value="H38"/>
-        <enumeration value="H39"/>
-        <enumeration value="H40"/>
-        <enumeration value="H41"/>
-        <enumeration value="H42"/>
-        <enumeration value="H43"/>
-        <enumeration value="H44"/>
-        <enumeration value="H45"/>
-        <enumeration value="H46"/>
-        <enumeration value="H47"/>
-        <enumeration value="H48"/>
-        <enumeration value="H49"/>
-        <enumeration value="H50"/>
-        <enumeration value="H51"/>
-        <enumeration value="H52"/>
-        <enumeration value="H53"/>
-        <enumeration value="H54"/>
-        <enumeration value="H55"/>
-        <enumeration value="H56"/>
-        <enumeration value="H57"/>
-        <enumeration value="H58"/>
-        <enumeration value="H59"/>
-        <enumeration value="H60"/>
-        <enumeration value="H61"/>
-        <enumeration value="H62"/>
-        <enumeration value="H63"/>
-        <enumeration value="H64"/>
-        <enumeration value="H65"/>
-        <enumeration value="H66"/>
-        <enumeration value="H67"/>
-        <enumeration value="H68"/>
-        <enumeration value="H69"/>
-        <enumeration value="H70"/>
-        <enumeration value="H71"/>
-        <enumeration value="H72"/>
-        <enumeration value="H73"/>
-        <enumeration value="H74"/>
-        <enumeration value="H75"/>
-        <enumeration value="H76"/>
-        <enumeration value="H77"/>
-        <enumeration value="H78"/>
-        <enumeration value="H79"/>
-        <enumeration value="H80"/>
-        <enumeration value="H81"/>
-        <enumeration value="H82"/>
-        <enumeration value="H83"/>
-        <enumeration value="H84"/>
-        <enumeration value="H85"/>
-        <enumeration value="H87"/>
-        <enumeration value="H88"/>
-        <enumeration value="H89"/>
-        <enumeration value="H90"/>
-        <enumeration value="H91"/>
-        <enumeration value="H92"/>
-        <enumeration value="H93"/>
-        <enumeration value="H94"/>
-        <enumeration value="H95"/>
-        <enumeration value="H96"/>
-        <enumeration value="H98"/>
-        <enumeration value="H99"/>
-        <enumeration value="HA"/>
-        <enumeration value="HAR"/>
-        <enumeration value="HBA"/>
-        <enumeration value="HBX"/>
-        <enumeration value="HC"/>
-        <enumeration value="HDW"/>
-        <enumeration value="HEA"/>
-        <enumeration value="HGM"/>
-        <enumeration value="HH"/>
-        <enumeration value="HIU"/>
-        <enumeration value="HJ"/>
-        <enumeration value="HKM"/>
-        <enumeration value="HLT"/>
-        <enumeration value="HM"/>
-        <enumeration value="HMQ"/>
-        <enumeration value="HMT"/>
-        <enumeration value="HN"/>
-        <enumeration value="HP"/>
-        <enumeration value="HPA"/>
-        <enumeration value="HTZ"/>
-        <enumeration value="HUR"/>
-        <enumeration value="IA"/>
-        <enumeration value="IE"/>
-        <enumeration value="INH"/>
-        <enumeration value="INK"/>
-        <enumeration value="INQ"/>
-        <enumeration value="ISD"/>
-        <enumeration value="IU"/>
-        <enumeration value="IV"/>
-        <enumeration value="J10"/>
-        <enumeration value="J12"/>
-        <enumeration value="J13"/>
-        <enumeration value="J14"/>
-        <enumeration value="J15"/>
-        <enumeration value="J16"/>
-        <enumeration value="J17"/>
-        <enumeration value="J18"/>
-        <enumeration value="J19"/>
-        <enumeration value="J2"/>
-        <enumeration value="J20"/>
-        <enumeration value="J21"/>
-        <enumeration value="J22"/>
-        <enumeration value="J23"/>
-        <enumeration value="J24"/>
-        <enumeration value="J25"/>
-        <enumeration value="J26"/>
-        <enumeration value="J27"/>
-        <enumeration value="J28"/>
-        <enumeration value="J29"/>
-        <enumeration value="J30"/>
-        <enumeration value="J31"/>
-        <enumeration value="J32"/>
-        <enumeration value="J33"/>
-        <enumeration value="J34"/>
-        <enumeration value="J35"/>
-        <enumeration value="J36"/>
-        <enumeration value="J38"/>
-        <enumeration value="J39"/>
-        <enumeration value="J40"/>
-        <enumeration value="J41"/>
-        <enumeration value="J42"/>
-        <enumeration value="J43"/>
-        <enumeration value="J44"/>
-        <enumeration value="J45"/>
-        <enumeration value="J46"/>
-        <enumeration value="J47"/>
-        <enumeration value="J48"/>
-        <enumeration value="J49"/>
-        <enumeration value="J50"/>
-        <enumeration value="J51"/>
-        <enumeration value="J52"/>
-        <enumeration value="J53"/>
-        <enumeration value="J54"/>
-        <enumeration value="J55"/>
-        <enumeration value="J56"/>
-        <enumeration value="J57"/>
-        <enumeration value="J58"/>
-        <enumeration value="J59"/>
-        <enumeration value="J60"/>
-        <enumeration value="J61"/>
-        <enumeration value="J62"/>
-        <enumeration value="J63"/>
-        <enumeration value="J64"/>
-        <enumeration value="J65"/>
-        <enumeration value="J66"/>
-        <enumeration value="J67"/>
-        <enumeration value="J68"/>
-        <enumeration value="J69"/>
-        <enumeration value="J70"/>
-        <enumeration value="J71"/>
-        <enumeration value="J72"/>
-        <enumeration value="J73"/>
-        <enumeration value="J74"/>
-        <enumeration value="J75"/>
-        <enumeration value="J76"/>
-        <enumeration value="J78"/>
-        <enumeration value="J79"/>
-        <enumeration value="J81"/>
-        <enumeration value="J82"/>
-        <enumeration value="J83"/>
-        <enumeration value="J84"/>
-        <enumeration value="J85"/>
-        <enumeration value="J87"/>
-        <enumeration value="J89"/>
-        <enumeration value="J90"/>
-        <enumeration value="J91"/>
-        <enumeration value="J92"/>
-        <enumeration value="J93"/>
-        <enumeration value="J94"/>
-        <enumeration value="J95"/>
-        <enumeration value="J96"/>
-        <enumeration value="J97"/>
-        <enumeration value="J98"/>
-        <enumeration value="J99"/>
-        <enumeration value="JE"/>
-        <enumeration value="JK"/>
-        <enumeration value="JM"/>
-        <enumeration value="JNT"/>
-        <enumeration value="JOU"/>
-        <enumeration value="JPS"/>
-        <enumeration value="JWL"/>
-        <enumeration value="K1"/>
-        <enumeration value="K10"/>
-        <enumeration value="K11"/>
-        <enumeration value="K12"/>
-        <enumeration value="K13"/>
-        <enumeration value="K14"/>
-        <enumeration value="K15"/>
-        <enumeration value="K16"/>
-        <enumeration value="K17"/>
-        <enumeration value="K18"/>
-        <enumeration value="K19"/>
-        <enumeration value="K2"/>
-        <enumeration value="K20"/>
-        <enumeration value="K21"/>
-        <enumeration value="K22"/>
-        <enumeration value="K23"/>
-        <enumeration value="K24"/>
-        <enumeration value="K25"/>
-        <enumeration value="K26"/>
-        <enumeration value="K27"/>
-        <enumeration value="K28"/>
-        <enumeration value="K3"/>
-        <enumeration value="K30"/>
-        <enumeration value="K31"/>
-        <enumeration value="K32"/>
-        <enumeration value="K33"/>
-        <enumeration value="K34"/>
-        <enumeration value="K35"/>
-        <enumeration value="K36"/>
-        <enumeration value="K37"/>
-        <enumeration value="K38"/>
-        <enumeration value="K39"/>
-        <enumeration value="K40"/>
-        <enumeration value="K41"/>
-        <enumeration value="K42"/>
-        <enumeration value="K43"/>
-        <enumeration value="K45"/>
-        <enumeration value="K46"/>
-        <enumeration value="K47"/>
-        <enumeration value="K48"/>
-        <enumeration value="K49"/>
-        <enumeration value="K5"/>
-        <enumeration value="K50"/>
-        <enumeration value="K51"/>
-        <enumeration value="K52"/>
-        <enumeration value="K53"/>
-        <enumeration value="K54"/>
-        <enumeration value="K55"/>
-        <enumeration value="K58"/>
-        <enumeration value="K59"/>
-        <enumeration value="K6"/>
-        <enumeration value="K60"/>
-        <enumeration value="K61"/>
-        <enumeration value="K62"/>
-        <enumeration value="K63"/>
-        <enumeration value="K64"/>
-        <enumeration value="K65"/>
-        <enumeration value="K66"/>
-        <enumeration value="K67"/>
-        <enumeration value="K68"/>
-        <enumeration value="K69"/>
-        <enumeration value="K70"/>
-        <enumeration value="K71"/>
-        <enumeration value="K73"/>
-        <enumeration value="K74"/>
-        <enumeration value="K75"/>
-        <enumeration value="K76"/>
-        <enumeration value="K77"/>
-        <enumeration value="K78"/>
-        <enumeration value="K79"/>
-        <enumeration value="K80"/>
-        <enumeration value="K81"/>
-        <enumeration value="K82"/>
-        <enumeration value="K83"/>
-        <enumeration value="K84"/>
-        <enumeration value="K85"/>
-        <enumeration value="K86"/>
-        <enumeration value="K87"/>
-        <enumeration value="K88"/>
-        <enumeration value="K89"/>
-        <enumeration value="K90"/>
-        <enumeration value="K91"/>
-        <enumeration value="K92"/>
-        <enumeration value="K93"/>
-        <enumeration value="K94"/>
-        <enumeration value="K95"/>
-        <enumeration value="K96"/>
-        <enumeration value="K97"/>
-        <enumeration value="K98"/>
-        <enumeration value="K99"/>
-        <enumeration value="KA"/>
-        <enumeration value="KAT"/>
-        <enumeration value="KB"/>
-        <enumeration value="KBA"/>
-        <enumeration value="KCC"/>
-        <enumeration value="KDW"/>
-        <enumeration value="KEL"/>
-        <enumeration value="KGM"/>
-        <enumeration value="KGS"/>
-        <enumeration value="KHY"/>
-        <enumeration value="KHZ"/>
-        <enumeration value="KI"/>
-        <enumeration value="KIC"/>
-        <enumeration value="KIP"/>
-        <enumeration value="KJ"/>
-        <enumeration value="KJO"/>
-        <enumeration value="KL"/>
-        <enumeration value="KLK"/>
-        <enumeration value="KLX"/>
-        <enumeration value="KMA"/>
-        <enumeration value="KMH"/>
-        <enumeration value="KMK"/>
-        <enumeration value="KMQ"/>
-        <enumeration value="KMT"/>
-        <enumeration value="KNI"/>
-        <enumeration value="KNM"/>
-        <enumeration value="KNS"/>
-        <enumeration value="KNT"/>
-        <enumeration value="KO"/>
-        <enumeration value="KPA"/>
-        <enumeration value="KPH"/>
-        <enumeration value="KPO"/>
-        <enumeration value="KPP"/>
-        <enumeration value="KR"/>
-        <enumeration value="KSD"/>
-        <enumeration value="KSH"/>
-        <enumeration value="KT"/>
-        <enumeration value="KTN"/>
-        <enumeration value="KUR"/>
-        <enumeration value="KVA"/>
-        <enumeration value="KVR"/>
-        <enumeration value="KVT"/>
-        <enumeration value="KW"/>
-        <enumeration value="KWH"/>
-        <enumeration value="KWN"/>
-        <enumeration value="KWO"/>
-        <enumeration value="KWS"/>
-        <enumeration value="KWT"/>
-        <enumeration value="KX"/>
-        <enumeration value="L10"/>
-        <enumeration value="L11"/>
-        <enumeration value="L12"/>
-        <enumeration value="L13"/>
-        <enumeration value="L14"/>
-        <enumeration value="L15"/>
-        <enumeration value="L16"/>
-        <enumeration value="L17"/>
-        <enumeration value="L18"/>
-        <enumeration value="L19"/>
-        <enumeration value="L2"/>
-        <enumeration value="L20"/>
-        <enumeration value="L21"/>
-        <enumeration value="L23"/>
-        <enumeration value="L24"/>
-        <enumeration value="L25"/>
-        <enumeration value="L26"/>
-        <enumeration value="L27"/>
-        <enumeration value="L28"/>
-        <enumeration value="L29"/>
-        <enumeration value="L30"/>
-        <enumeration value="L31"/>
-        <enumeration value="L32"/>
-        <enumeration value="L33"/>
-        <enumeration value="L34"/>
-        <enumeration value="L35"/>
-        <enumeration value="L36"/>
-        <enumeration value="L37"/>
-        <enumeration value="L38"/>
-        <enumeration value="L39"/>
-        <enumeration value="L40"/>
-        <enumeration value="L41"/>
-        <enumeration value="L42"/>
-        <enumeration value="L43"/>
-        <enumeration value="L44"/>
-        <enumeration value="L45"/>
-        <enumeration value="L46"/>
-        <enumeration value="L47"/>
-        <enumeration value="L48"/>
-        <enumeration value="L49"/>
-        <enumeration value="L50"/>
-        <enumeration value="L51"/>
-        <enumeration value="L52"/>
-        <enumeration value="L53"/>
-        <enumeration value="L54"/>
-        <enumeration value="L55"/>
-        <enumeration value="L56"/>
-        <enumeration value="L57"/>
-        <enumeration value="L58"/>
-        <enumeration value="L59"/>
-        <enumeration value="L60"/>
-        <enumeration value="L63"/>
-        <enumeration value="L64"/>
-        <enumeration value="L65"/>
-        <enumeration value="L66"/>
-        <enumeration value="L67"/>
-        <enumeration value="L68"/>
-        <enumeration value="L69"/>
-        <enumeration value="L70"/>
-        <enumeration value="L71"/>
-        <enumeration value="L72"/>
-        <enumeration value="L73"/>
-        <enumeration value="L74"/>
-        <enumeration value="L75"/>
-        <enumeration value="L76"/>
-        <enumeration value="L77"/>
-        <enumeration value="L78"/>
-        <enumeration value="L79"/>
-        <enumeration value="L80"/>
-        <enumeration value="L81"/>
-        <enumeration value="L82"/>
-        <enumeration value="L83"/>
-        <enumeration value="L84"/>
-        <enumeration value="L85"/>
-        <enumeration value="L86"/>
-        <enumeration value="L87"/>
-        <enumeration value="L88"/>
-        <enumeration value="L89"/>
-        <enumeration value="L90"/>
-        <enumeration value="L91"/>
-        <enumeration value="L92"/>
-        <enumeration value="L93"/>
-        <enumeration value="L94"/>
-        <enumeration value="L95"/>
-        <enumeration value="L96"/>
-        <enumeration value="L98"/>
-        <enumeration value="L99"/>
-        <enumeration value="LA"/>
-        <enumeration value="LAC"/>
-        <enumeration value="LBR"/>
-        <enumeration value="LBT"/>
-        <enumeration value="LD"/>
-        <enumeration value="LEF"/>
-        <enumeration value="LF"/>
-        <enumeration value="LH"/>
-        <enumeration value="LK"/>
-        <enumeration value="LM"/>
-        <enumeration value="LN"/>
-        <enumeration value="LO"/>
-        <enumeration value="LP"/>
-        <enumeration value="LPA"/>
-        <enumeration value="LR"/>
-        <enumeration value="LS"/>
-        <enumeration value="LTN"/>
-        <enumeration value="LTR"/>
-        <enumeration value="LUB"/>
-        <enumeration value="LUM"/>
-        <enumeration value="LUX"/>
-        <enumeration value="LY"/>
-        <enumeration value="M1"/>
-        <enumeration value="M10"/>
-        <enumeration value="M11"/>
-        <enumeration value="M12"/>
-        <enumeration value="M13"/>
-        <enumeration value="M14"/>
-        <enumeration value="M15"/>
-        <enumeration value="M16"/>
-        <enumeration value="M17"/>
-        <enumeration value="M18"/>
-        <enumeration value="M19"/>
-        <enumeration value="M20"/>
-        <enumeration value="M21"/>
-        <enumeration value="M22"/>
-        <enumeration value="M23"/>
-        <enumeration value="M24"/>
-        <enumeration value="M25"/>
-        <enumeration value="M26"/>
-        <enumeration value="M27"/>
-        <enumeration value="M29"/>
-        <enumeration value="M30"/>
-        <enumeration value="M31"/>
-        <enumeration value="M32"/>
-        <enumeration value="M33"/>
-        <enumeration value="M34"/>
-        <enumeration value="M35"/>
-        <enumeration value="M36"/>
-        <enumeration value="M37"/>
-        <enumeration value="M38"/>
-        <enumeration value="M39"/>
-        <enumeration value="M4"/>
-        <enumeration value="M40"/>
-        <enumeration value="M41"/>
-        <enumeration value="M42"/>
-        <enumeration value="M43"/>
-        <enumeration value="M44"/>
-        <enumeration value="M45"/>
-        <enumeration value="M46"/>
-        <enumeration value="M47"/>
-        <enumeration value="M48"/>
-        <enumeration value="M49"/>
-        <enumeration value="M5"/>
-        <enumeration value="M50"/>
-        <enumeration value="M51"/>
-        <enumeration value="M52"/>
-        <enumeration value="M53"/>
-        <enumeration value="M55"/>
-        <enumeration value="M56"/>
-        <enumeration value="M57"/>
-        <enumeration value="M58"/>
-        <enumeration value="M59"/>
-        <enumeration value="M60"/>
-        <enumeration value="M61"/>
-        <enumeration value="M62"/>
-        <enumeration value="M63"/>
-        <enumeration value="M64"/>
-        <enumeration value="M65"/>
-        <enumeration value="M66"/>
-        <enumeration value="M67"/>
-        <enumeration value="M68"/>
-        <enumeration value="M69"/>
-        <enumeration value="M7"/>
-        <enumeration value="M70"/>
-        <enumeration value="M71"/>
-        <enumeration value="M72"/>
-        <enumeration value="M73"/>
-        <enumeration value="M74"/>
-        <enumeration value="M75"/>
-        <enumeration value="M76"/>
-        <enumeration value="M77"/>
-        <enumeration value="M78"/>
-        <enumeration value="M79"/>
-        <enumeration value="M80"/>
-        <enumeration value="M81"/>
-        <enumeration value="M82"/>
-        <enumeration value="M83"/>
-        <enumeration value="M84"/>
-        <enumeration value="M85"/>
-        <enumeration value="M86"/>
-        <enumeration value="M87"/>
-        <enumeration value="M88"/>
-        <enumeration value="M89"/>
-        <enumeration value="M9"/>
-        <enumeration value="M90"/>
-        <enumeration value="M91"/>
-        <enumeration value="M92"/>
-        <enumeration value="M93"/>
-        <enumeration value="M94"/>
-        <enumeration value="M95"/>
-        <enumeration value="M96"/>
-        <enumeration value="M97"/>
-        <enumeration value="M98"/>
-        <enumeration value="M99"/>
-        <enumeration value="MAH"/>
-        <enumeration value="MAL"/>
-        <enumeration value="MAM"/>
-        <enumeration value="MAR"/>
-        <enumeration value="MAW"/>
-        <enumeration value="MBE"/>
-        <enumeration value="MBF"/>
-        <enumeration value="MBR"/>
-        <enumeration value="MC"/>
-        <enumeration value="MCU"/>
-        <enumeration value="MD"/>
-        <enumeration value="MGM"/>
-        <enumeration value="MHZ"/>
-        <enumeration value="MIK"/>
-        <enumeration value="MIL"/>
-        <enumeration value="MIN"/>
-        <enumeration value="MIO"/>
-        <enumeration value="MIU"/>
-        <enumeration value="MLD"/>
-        <enumeration value="MLT"/>
-        <enumeration value="MMK"/>
-        <enumeration value="MMQ"/>
-        <enumeration value="MMT"/>
-        <enumeration value="MND"/>
-        <enumeration value="MON"/>
-        <enumeration value="MPA"/>
-        <enumeration value="MQH"/>
-        <enumeration value="MQS"/>
-        <enumeration value="MSK"/>
-        <enumeration value="MTK"/>
-        <enumeration value="MTQ"/>
-        <enumeration value="MTR"/>
-        <enumeration value="MTS"/>
-        <enumeration value="MVA"/>
-        <enumeration value="MWH"/>
-        <enumeration value="N1"/>
-        <enumeration value="N10"/>
-        <enumeration value="N11"/>
-        <enumeration value="N12"/>
-        <enumeration value="N13"/>
-        <enumeration value="N14"/>
-        <enumeration value="N15"/>
-        <enumeration value="N16"/>
-        <enumeration value="N17"/>
-        <enumeration value="N18"/>
-        <enumeration value="N19"/>
-        <enumeration value="N20"/>
-        <enumeration value="N21"/>
-        <enumeration value="N22"/>
-        <enumeration value="N23"/>
-        <enumeration value="N24"/>
-        <enumeration value="N25"/>
-        <enumeration value="N26"/>
-        <enumeration value="N27"/>
-        <enumeration value="N28"/>
-        <enumeration value="N29"/>
-        <enumeration value="N3"/>
-        <enumeration value="N30"/>
-        <enumeration value="N31"/>
-        <enumeration value="N32"/>
-        <enumeration value="N33"/>
-        <enumeration value="N34"/>
-        <enumeration value="N35"/>
-        <enumeration value="N36"/>
-        <enumeration value="N37"/>
-        <enumeration value="N38"/>
-        <enumeration value="N39"/>
-        <enumeration value="N40"/>
-        <enumeration value="N41"/>
-        <enumeration value="N42"/>
-        <enumeration value="N43"/>
-        <enumeration value="N44"/>
-        <enumeration value="N45"/>
-        <enumeration value="N46"/>
-        <enumeration value="N47"/>
-        <enumeration value="N48"/>
-        <enumeration value="N49"/>
-        <enumeration value="N50"/>
-        <enumeration value="N51"/>
-        <enumeration value="N52"/>
-        <enumeration value="N53"/>
-        <enumeration value="N54"/>
-        <enumeration value="N55"/>
-        <enumeration value="N56"/>
-        <enumeration value="N57"/>
-        <enumeration value="N58"/>
-        <enumeration value="N59"/>
-        <enumeration value="N60"/>
-        <enumeration value="N61"/>
-        <enumeration value="N62"/>
-        <enumeration value="N63"/>
-        <enumeration value="N64"/>
-        <enumeration value="N65"/>
-        <enumeration value="N66"/>
-        <enumeration value="N67"/>
-        <enumeration value="N68"/>
-        <enumeration value="N69"/>
-        <enumeration value="N70"/>
-        <enumeration value="N71"/>
-        <enumeration value="N72"/>
-        <enumeration value="N73"/>
-        <enumeration value="N74"/>
-        <enumeration value="N75"/>
-        <enumeration value="N76"/>
-        <enumeration value="N77"/>
-        <enumeration value="N78"/>
-        <enumeration value="N79"/>
-        <enumeration value="N80"/>
-        <enumeration value="N81"/>
-        <enumeration value="N82"/>
-        <enumeration value="N83"/>
-        <enumeration value="N84"/>
-        <enumeration value="N85"/>
-        <enumeration value="N86"/>
-        <enumeration value="N87"/>
-        <enumeration value="N88"/>
-        <enumeration value="N89"/>
-        <enumeration value="N90"/>
-        <enumeration value="N91"/>
-        <enumeration value="N92"/>
-        <enumeration value="N93"/>
-        <enumeration value="N94"/>
-        <enumeration value="N95"/>
-        <enumeration value="N96"/>
-        <enumeration value="N97"/>
-        <enumeration value="N98"/>
-        <enumeration value="N99"/>
-        <enumeration value="NA"/>
-        <enumeration value="NAR"/>
-        <enumeration value="NCL"/>
-        <enumeration value="NEW"/>
-        <enumeration value="NF"/>
-        <enumeration value="NIL"/>
-        <enumeration value="NIU"/>
-        <enumeration value="NL"/>
-        <enumeration value="NM3"/>
-        <enumeration value="NMI"/>
-        <enumeration value="NMP"/>
-        <enumeration value="NPR"/>
-        <enumeration value="NPT"/>
-        <enumeration value="NQ"/>
-        <enumeration value="NR"/>
-        <enumeration value="NT"/>
-        <enumeration value="NTT"/>
-        <enumeration value="NU"/>
-        <enumeration value="NX"/>
-        <enumeration value="OA"/>
-        <enumeration value="ODE"/>
-        <enumeration value="OHM"/>
-        <enumeration value="ON"/>
-        <enumeration value="ONZ"/>
-        <enumeration value="OPM"/>
-        <enumeration value="OT"/>
-        <enumeration value="OZ"/>
-        <enumeration value="OZA"/>
-        <enumeration value="OZI"/>
-        <enumeration value="P1"/>
-        <enumeration value="P10"/>
-        <enumeration value="P11"/>
-        <enumeration value="P12"/>
-        <enumeration value="P13"/>
-        <enumeration value="P14"/>
-        <enumeration value="P15"/>
-        <enumeration value="P16"/>
-        <enumeration value="P17"/>
-        <enumeration value="P18"/>
-        <enumeration value="P19"/>
-        <enumeration value="P2"/>
-        <enumeration value="P20"/>
-        <enumeration value="P21"/>
-        <enumeration value="P22"/>
-        <enumeration value="P23"/>
-        <enumeration value="P24"/>
-        <enumeration value="P25"/>
-        <enumeration value="P26"/>
-        <enumeration value="P27"/>
-        <enumeration value="P28"/>
-        <enumeration value="P29"/>
-        <enumeration value="P30"/>
-        <enumeration value="P31"/>
-        <enumeration value="P32"/>
-        <enumeration value="P33"/>
-        <enumeration value="P34"/>
-        <enumeration value="P35"/>
-        <enumeration value="P36"/>
-        <enumeration value="P37"/>
-        <enumeration value="P38"/>
-        <enumeration value="P39"/>
-        <enumeration value="P40"/>
-        <enumeration value="P41"/>
-        <enumeration value="P42"/>
-        <enumeration value="P43"/>
-        <enumeration value="P44"/>
-        <enumeration value="P45"/>
-        <enumeration value="P46"/>
-        <enumeration value="P47"/>
-        <enumeration value="P48"/>
-        <enumeration value="P49"/>
-        <enumeration value="P5"/>
-        <enumeration value="P50"/>
-        <enumeration value="P51"/>
-        <enumeration value="P52"/>
-        <enumeration value="P53"/>
-        <enumeration value="P54"/>
-        <enumeration value="P55"/>
-        <enumeration value="P56"/>
-        <enumeration value="P57"/>
-        <enumeration value="P58"/>
-        <enumeration value="P59"/>
-        <enumeration value="P60"/>
-        <enumeration value="P61"/>
-        <enumeration value="P62"/>
-        <enumeration value="P63"/>
-        <enumeration value="P64"/>
-        <enumeration value="P65"/>
-        <enumeration value="P66"/>
-        <enumeration value="P67"/>
-        <enumeration value="P68"/>
-        <enumeration value="P69"/>
-        <enumeration value="P70"/>
-        <enumeration value="P71"/>
-        <enumeration value="P72"/>
-        <enumeration value="P73"/>
-        <enumeration value="P74"/>
-        <enumeration value="P75"/>
-        <enumeration value="P76"/>
-        <enumeration value="P77"/>
-        <enumeration value="P78"/>
-        <enumeration value="P79"/>
-        <enumeration value="P80"/>
-        <enumeration value="P81"/>
-        <enumeration value="P82"/>
-        <enumeration value="P83"/>
-        <enumeration value="P84"/>
-        <enumeration value="P85"/>
-        <enumeration value="P86"/>
-        <enumeration value="P87"/>
-        <enumeration value="P88"/>
-        <enumeration value="P89"/>
-        <enumeration value="P90"/>
-        <enumeration value="P91"/>
-        <enumeration value="P92"/>
-        <enumeration value="P93"/>
-        <enumeration value="P94"/>
-        <enumeration value="P95"/>
-        <enumeration value="P96"/>
-        <enumeration value="P97"/>
-        <enumeration value="P98"/>
-        <enumeration value="P99"/>
-        <enumeration value="PAL"/>
-        <enumeration value="PD"/>
-        <enumeration value="PFL"/>
-        <enumeration value="PGL"/>
-        <enumeration value="PI"/>
-        <enumeration value="PLA"/>
-        <enumeration value="PO"/>
-        <enumeration value="PQ"/>
-        <enumeration value="PR"/>
-        <enumeration value="PS"/>
-        <enumeration value="PT"/>
-        <enumeration value="PTD"/>
-        <enumeration value="PTI"/>
-        <enumeration value="PTL"/>
-        <enumeration value="PTN"/>
-        <enumeration value="Q10"/>
-        <enumeration value="Q11"/>
-        <enumeration value="Q12"/>
-        <enumeration value="Q13"/>
-        <enumeration value="Q14"/>
-        <enumeration value="Q15"/>
-        <enumeration value="Q16"/>
-        <enumeration value="Q17"/>
-        <enumeration value="Q18"/>
-        <enumeration value="Q19"/>
-        <enumeration value="Q20"/>
-        <enumeration value="Q21"/>
-        <enumeration value="Q22"/>
-        <enumeration value="Q23"/>
-        <enumeration value="Q24"/>
-        <enumeration value="Q25"/>
-        <enumeration value="Q26"/>
-        <enumeration value="Q27"/>
-        <enumeration value="Q28"/>
-        <enumeration value="Q29"/>
-        <enumeration value="Q3"/>
-        <enumeration value="Q30"/>
-        <enumeration value="Q31"/>
-        <enumeration value="Q32"/>
-        <enumeration value="Q33"/>
-        <enumeration value="Q34"/>
-        <enumeration value="Q35"/>
-        <enumeration value="Q36"/>
-        <enumeration value="Q37"/>
-        <enumeration value="Q38"/>
-        <enumeration value="Q39"/>
-        <enumeration value="Q40"/>
-        <enumeration value="Q41"/>
-        <enumeration value="Q42"/>
-        <enumeration value="QA"/>
-        <enumeration value="QAN"/>
-        <enumeration value="QB"/>
-        <enumeration value="QR"/>
-        <enumeration value="QT"/>
-        <enumeration value="QTD"/>
-        <enumeration value="QTI"/>
-        <enumeration value="QTL"/>
-        <enumeration value="QTR"/>
-        <enumeration value="R1"/>
-        <enumeration value="R9"/>
-        <enumeration value="RH"/>
-        <enumeration value="RM"/>
-        <enumeration value="ROM"/>
-        <enumeration value="RP"/>
-        <enumeration value="RPM"/>
-        <enumeration value="RPS"/>
-        <enumeration value="RT"/>
-        <enumeration value="S3"/>
-        <enumeration value="S4"/>
-        <enumeration value="SAN"/>
-        <enumeration value="SCO"/>
-        <enumeration value="SCR"/>
-        <enumeration value="SEC"/>
-        <enumeration value="SET"/>
-        <enumeration value="SG"/>
-        <enumeration value="SHT"/>
-        <enumeration value="SIE"/>
-        <enumeration value="SM3"/>
-        <enumeration value="SMI"/>
-        <enumeration value="SQ"/>
-        <enumeration value="SQR"/>
-        <enumeration value="SR"/>
-        <enumeration value="STC"/>
-        <enumeration value="STI"/>
-        <enumeration value="STK"/>
-        <enumeration value="STL"/>
-        <enumeration value="STN"/>
-        <enumeration value="STW"/>
-        <enumeration value="SW"/>
-        <enumeration value="SX"/>
-        <enumeration value="SYR"/>
-        <enumeration value="T0"/>
-        <enumeration value="T3"/>
-        <enumeration value="TAH"/>
-        <enumeration value="TAN"/>
-        <enumeration value="TI"/>
-        <enumeration value="TIC"/>
-        <enumeration value="TIP"/>
-        <enumeration value="TKM"/>
-        <enumeration value="TMS"/>
-        <enumeration value="TNE"/>
-        <enumeration value="TP"/>
-        <enumeration value="TPI"/>
-        <enumeration value="TPR"/>
-        <enumeration value="TQD"/>
-        <enumeration value="TRL"/>
-        <enumeration value="TST"/>
-        <enumeration value="TTS"/>
-        <enumeration value="U1"/>
-        <enumeration value="U2"/>
-        <enumeration value="UA"/>
-        <enumeration value="UB"/>
-        <enumeration value="UC"/>
-        <enumeration value="VA"/>
-        <enumeration value="VLT"/>
-        <enumeration value="VP"/>
-        <enumeration value="W2"/>
-        <enumeration value="WA"/>
-        <enumeration value="WB"/>
-        <enumeration value="WCD"/>
-        <enumeration value="WE"/>
-        <enumeration value="WEB"/>
-        <enumeration value="WEE"/>
-        <enumeration value="WG"/>
-        <enumeration value="WHR"/>
-        <enumeration value="WM"/>
-        <enumeration value="WSD"/>
-        <enumeration value="WTT"/>
-        <enumeration value="WW"/>
-        <enumeration value="X1"/>
-        <enumeration value="YDK"/>
-        <enumeration value="YDQ"/>
-        <enumeration value="YRD"/>
-        <enumeration value="Z11"/>
-        <enumeration value="ZP"/>
-        <enumeration value="ZZ"/>
-    </cl>
-    <cl id="6">
-        <enumeration value="VAT"/>
-    </cl>
-    <cl id="7">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="8">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="9">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="10">
-        <enumeration value="0002"/>
-        <enumeration value="0007"/>
-        <enumeration value="0009"/>
-        <enumeration value="0037"/>
-        <enumeration value="0060"/>
-        <enumeration value="0088"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0106"/>
-        <enumeration value="0130"/>
-        <enumeration value="0135"/>
-        <enumeration value="0142"/>
-        <enumeration value="0151"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-        <enumeration value="9901"/>
-        <enumeration value="9902"/>
-        <enumeration value="9904"/>
-        <enumeration value="9905"/>
-        <enumeration value="9906"/>
-        <enumeration value="9907"/>
-        <enumeration value="9910"/>
-        <enumeration value="9913"/>
-        <enumeration value="9914"/>
-        <enumeration value="9915"/>
-        <enumeration value="9918"/>
-        <enumeration value="9919"/>
-        <enumeration value="9920"/>
-        <enumeration value="9922"/>
-        <enumeration value="9923"/>
-        <enumeration value="9924"/>
-        <enumeration value="9925"/>
-        <enumeration value="9926"/>
-        <enumeration value="9927"/>
-        <enumeration value="9928"/>
-        <enumeration value="9929"/>
-        <enumeration value="9930"/>
-        <enumeration value="9931"/>
-        <enumeration value="9932"/>
-        <enumeration value="9933"/>
-        <enumeration value="9934"/>
-        <enumeration value="9935"/>
-        <enumeration value="9936"/>
-        <enumeration value="9937"/>
-        <enumeration value="9938"/>
-        <enumeration value="9939"/>
-        <enumeration value="9940"/>
-        <enumeration value="9941"/>
-        <enumeration value="9942"/>
-        <enumeration value="9943"/>
-        <enumeration value="9944"/>
-        <enumeration value="9945"/>
-        <enumeration value="9946"/>
-        <enumeration value="9947"/>
-        <enumeration value="9948"/>
-        <enumeration value="9949"/>
-        <enumeration value="9950"/>
-        <enumeration value="9951"/>
-        <enumeration value="9952"/>
-        <enumeration value="9953"/>
-        <enumeration value="9955"/>
-        <enumeration value="9956"/>
-        <enumeration value="9957"/>
-        <enumeration value="9958"/>
-        <enumeration value="AN"/>
-        <enumeration value="AQ"/>
-        <enumeration value="AS"/>
-        <enumeration value="AU"/>
-        <enumeration value="EM"/>
-    </cl>
-    <cl id="11">
-        <enumeration value="FC"/>
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="12">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="13">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="14">
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="15">
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="16">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="17">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="18">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="19">
-        <enumeration value="10"/>
-        <enumeration value="20"/>
-        <enumeration value="30"/>
-        <enumeration value="42"/>
-        <enumeration value="48"/>
-        <enumeration value="49"/>
-        <enumeration value="57"/>
-        <enumeration value="58"/>
-        <enumeration value="59"/>
-        <enumeration value="97"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="20">
-        <enumeration value="VAT"/>
-    </cl>
-    <cl id="21">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="22">
-        <enumeration value="vatex-eu-132"/>
-        <enumeration value="VATEX-EU-132"/>
-        <enumeration value="vatex-eu-132-1a"/>
-        <enumeration value="VATEX-EU-132-1A"/>
-        <enumeration value="vatex-eu-132-1b"/>
-        <enumeration value="VATEX-EU-132-1B"/>
-        <enumeration value="vatex-eu-132-1c"/>
-        <enumeration value="VATEX-EU-132-1C"/>
-        <enumeration value="vatex-eu-132-1d"/>
-        <enumeration value="VATEX-EU-132-1D"/>
-        <enumeration value="vatex-eu-132-1e"/>
-        <enumeration value="VATEX-EU-132-1E"/>
-        <enumeration value="vatex-eu-132-1f"/>
-        <enumeration value="VATEX-EU-132-1F"/>
-        <enumeration value="vatex-eu-132-1g"/>
-        <enumeration value="VATEX-EU-132-1G"/>
-        <enumeration value="vatex-eu-132-1h"/>
-        <enumeration value="VATEX-EU-132-1H"/>
-        <enumeration value="vatex-eu-132-1i"/>
-        <enumeration value="VATEX-EU-132-1I"/>
-        <enumeration value="vatex-eu-132-1j"/>
-        <enumeration value="VATEX-EU-132-1J"/>
-        <enumeration value="vatex-eu-132-1k"/>
-        <enumeration value="VATEX-EU-132-1K"/>
-        <enumeration value="vatex-eu-132-1l"/>
-        <enumeration value="VATEX-EU-132-1L"/>
-        <enumeration value="vatex-eu-132-1m"/>
-        <enumeration value="VATEX-EU-132-1M"/>
-        <enumeration value="vatex-eu-132-1n"/>
-        <enumeration value="VATEX-EU-132-1N"/>
-        <enumeration value="vatex-eu-132-1o"/>
-        <enumeration value="VATEX-EU-132-1O"/>
-        <enumeration value="vatex-eu-132-1p"/>
-        <enumeration value="VATEX-EU-132-1P"/>
-        <enumeration value="vatex-eu-132-1q"/>
-        <enumeration value="VATEX-EU-132-1Q"/>
-        <enumeration value="vatex-eu-143"/>
-        <enumeration value="VATEX-EU-143"/>
-        <enumeration value="vatex-eu-143-1a"/>
-        <enumeration value="VATEX-EU-143-1A"/>
-        <enumeration value="vatex-eu-143-1b"/>
-        <enumeration value="VATEX-EU-143-1B"/>
-        <enumeration value="vatex-eu-143-1c"/>
-        <enumeration value="VATEX-EU-143-1C"/>
-        <enumeration value="vatex-eu-143-1d"/>
-        <enumeration value="VATEX-EU-143-1D"/>
-        <enumeration value="vatex-eu-143-1e"/>
-        <enumeration value="VATEX-EU-143-1E"/>
-        <enumeration value="vatex-eu-143-1f"/>
-        <enumeration value="VATEX-EU-143-1F"/>
-        <enumeration value="vatex-eu-143-1fa"/>
-        <enumeration value="VATEX-EU-143-1FA"/>
-        <enumeration value="vatex-eu-143-1g"/>
-        <enumeration value="VATEX-EU-143-1G"/>
-        <enumeration value="vatex-eu-143-1h"/>
-        <enumeration value="VATEX-EU-143-1H"/>
-        <enumeration value="vatex-eu-143-1i"/>
-        <enumeration value="VATEX-EU-143-1I"/>
-        <enumeration value="vatex-eu-143-1j"/>
-        <enumeration value="VATEX-EU-143-1J"/>
-        <enumeration value="vatex-eu-143-1k"/>
-        <enumeration value="VATEX-EU-143-1K"/>
-        <enumeration value="vatex-eu-143-1l"/>
-        <enumeration value="VATEX-EU-143-1L"/>
-        <enumeration value="vatex-eu-148"/>
-        <enumeration value="VATEX-EU-148"/>
-        <enumeration value="vatex-eu-148-a"/>
-        <enumeration value="VATEX-EU-148-A"/>
-        <enumeration value="vatex-eu-148-b"/>
-        <enumeration value="VATEX-EU-148-B"/>
-        <enumeration value="vatex-eu-148-c"/>
-        <enumeration value="VATEX-EU-148-C"/>
-        <enumeration value="vatex-eu-148-d"/>
-        <enumeration value="VATEX-EU-148-D"/>
-        <enumeration value="vatex-eu-148-e"/>
-        <enumeration value="VATEX-EU-148-E"/>
-        <enumeration value="vatex-eu-148-f"/>
-        <enumeration value="VATEX-EU-148-F"/>
-        <enumeration value="vatex-eu-148-g"/>
-        <enumeration value="VATEX-EU-148-G"/>
-        <enumeration value="vatex-eu-151"/>
-        <enumeration value="VATEX-EU-151"/>
-        <enumeration value="vatex-eu-151-1a"/>
-        <enumeration value="VATEX-EU-151-1A"/>
-        <enumeration value="vatex-eu-151-1aa"/>
-        <enumeration value="VATEX-EU-151-1AA"/>
-        <enumeration value="vatex-eu-151-1b"/>
-        <enumeration value="VATEX-EU-151-1B"/>
-        <enumeration value="vatex-eu-151-1c"/>
-        <enumeration value="VATEX-EU-151-1C"/>
-        <enumeration value="vatex-eu-151-1d"/>
-        <enumeration value="VATEX-EU-151-1D"/>
-        <enumeration value="vatex-eu-151-1e"/>
-        <enumeration value="VATEX-EU-151-1E"/>
-        <enumeration value="vatex-eu-309"/>
-        <enumeration value="VATEX-EU-309"/>
-        <enumeration value="vatex-eu-ae"/>
-        <enumeration value="VATEX-EU-AE"/>
-        <enumeration value="vatex-eu-d"/>
-        <enumeration value="VATEX-EU-D"/>
-        <enumeration value="vatex-eu-f"/>
-        <enumeration value="VATEX-EU-F"/>
-        <enumeration value="vatex-eu-g"/>
-        <enumeration value="VATEX-EU-G"/>
-        <enumeration value="vatex-eu-i"/>
-        <enumeration value="VATEX-EU-I"/>
-        <enumeration value="vatex-eu-ic"/>
-        <enumeration value="VATEX-EU-IC"/>
-        <enumeration value="vatex-eu-j"/>
-        <enumeration value="VATEX-EU-J"/>
-        <enumeration value="vatex-eu-o"/>
-        <enumeration value="VATEX-EU-O"/>
-    </cl>
-    <cl id="23">
-        <enumeration value="VAT"/>
-    </cl>
-    <cl id="24">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="25">
-        <enumeration value="AED"/>
-        <enumeration value="AFN"/>
-        <enumeration value="ALL"/>
-        <enumeration value="AMD"/>
-        <enumeration value="ANG"/>
-        <enumeration value="AOA"/>
-        <enumeration value="ARS"/>
-        <enumeration value="AUD"/>
-        <enumeration value="AWG"/>
-        <enumeration value="AZN"/>
-        <enumeration value="BAM"/>
-        <enumeration value="BBD"/>
-        <enumeration value="BDT"/>
-        <enumeration value="BGN"/>
-        <enumeration value="BHD"/>
-        <enumeration value="BIF"/>
-        <enumeration value="BMD"/>
-        <enumeration value="BND"/>
-        <enumeration value="BOB"/>
-        <enumeration value="BOV"/>
-        <enumeration value="BRL"/>
-        <enumeration value="BSD"/>
-        <enumeration value="BTN"/>
-        <enumeration value="BWP"/>
-        <enumeration value="BYN"/>
-        <enumeration value="BZD"/>
-        <enumeration value="CAD"/>
-        <enumeration value="CDF"/>
-        <enumeration value="CHE"/>
-        <enumeration value="CHF"/>
-        <enumeration value="CHW"/>
-        <enumeration value="CLF"/>
-        <enumeration value="CLP"/>
-        <enumeration value="CNY"/>
-        <enumeration value="COP"/>
-        <enumeration value="COU"/>
-        <enumeration value="CRC"/>
-        <enumeration value="CUC"/>
-        <enumeration value="CUP"/>
-        <enumeration value="CVE"/>
-        <enumeration value="CZK"/>
-        <enumeration value="DJF"/>
-        <enumeration value="DKK"/>
-        <enumeration value="DOP"/>
-        <enumeration value="DZD"/>
-        <enumeration value="EGP"/>
-        <enumeration value="ERN"/>
-        <enumeration value="ETB"/>
-        <enumeration value="EUR"/>
-        <enumeration value="FJD"/>
-        <enumeration value="FKP"/>
-        <enumeration value="GBP"/>
-        <enumeration value="GEL"/>
-        <enumeration value="GHS"/>
-        <enumeration value="GIP"/>
-        <enumeration value="GMD"/>
-        <enumeration value="GNF"/>
-        <enumeration value="GTQ"/>
-        <enumeration value="GYD"/>
-        <enumeration value="HKD"/>
-        <enumeration value="HNL"/>
-        <enumeration value="HRK"/>
-        <enumeration value="HTG"/>
-        <enumeration value="HUF"/>
-        <enumeration value="IDR"/>
-        <enumeration value="ILS"/>
-        <enumeration value="INR"/>
-        <enumeration value="IQD"/>
-        <enumeration value="IRR"/>
-        <enumeration value="ISK"/>
-        <enumeration value="JMD"/>
-        <enumeration value="JOD"/>
-        <enumeration value="JPY"/>
-        <enumeration value="KES"/>
-        <enumeration value="KGS"/>
-        <enumeration value="KHR"/>
-        <enumeration value="KMF"/>
-        <enumeration value="KPW"/>
-        <enumeration value="KRW"/>
-        <enumeration value="KWD"/>
-        <enumeration value="KYD"/>
-        <enumeration value="KZT"/>
-        <enumeration value="LAK"/>
-        <enumeration value="LBP"/>
-        <enumeration value="LKR"/>
-        <enumeration value="LRD"/>
-        <enumeration value="LSL"/>
-        <enumeration value="LYD"/>
-        <enumeration value="MAD"/>
-        <enumeration value="MDL"/>
-        <enumeration value="MGA"/>
-        <enumeration value="MKD"/>
-        <enumeration value="MMK"/>
-        <enumeration value="MNT"/>
-        <enumeration value="MOP"/>
-        <enumeration value="MRU"/>
-        <enumeration value="MUR"/>
-        <enumeration value="MVR"/>
-        <enumeration value="MWK"/>
-        <enumeration value="MXN"/>
-        <enumeration value="MXV"/>
-        <enumeration value="MYR"/>
-        <enumeration value="MZN"/>
-        <enumeration value="NAD"/>
-        <enumeration value="NGN"/>
-        <enumeration value="NIO"/>
-        <enumeration value="NOK"/>
-        <enumeration value="NPR"/>
-        <enumeration value="NZD"/>
-        <enumeration value="OMR"/>
-        <enumeration value="PAB"/>
-        <enumeration value="PEN"/>
-        <enumeration value="PGK"/>
-        <enumeration value="PHP"/>
-        <enumeration value="PKR"/>
-        <enumeration value="PLN"/>
-        <enumeration value="PYG"/>
-        <enumeration value="QAR"/>
-        <enumeration value="RON"/>
-        <enumeration value="RSD"/>
-        <enumeration value="RUB"/>
-        <enumeration value="RWF"/>
-        <enumeration value="SAR"/>
-        <enumeration value="SBD"/>
-        <enumeration value="SCR"/>
-        <enumeration value="SDG"/>
-        <enumeration value="SEK"/>
-        <enumeration value="SGD"/>
-        <enumeration value="SHP"/>
-        <enumeration value="SLL"/>
-        <enumeration value="SOS"/>
-        <enumeration value="SRD"/>
-        <enumeration value="SSP"/>
-        <enumeration value="STN"/>
-        <enumeration value="SVC"/>
-        <enumeration value="SYP"/>
-        <enumeration value="SZL"/>
-        <enumeration value="THB"/>
-        <enumeration value="TJS"/>
-        <enumeration value="TMT"/>
-        <enumeration value="TND"/>
-        <enumeration value="TOP"/>
-        <enumeration value="TRY"/>
-        <enumeration value="TTD"/>
-        <enumeration value="TWD"/>
-        <enumeration value="TZS"/>
-        <enumeration value="UAH"/>
-        <enumeration value="UGX"/>
-        <enumeration value="USD"/>
-        <enumeration value="USN"/>
-        <enumeration value="UYI"/>
-        <enumeration value="UYU"/>
-        <enumeration value="UYW"/>
-        <enumeration value="UZS"/>
-        <enumeration value="VES"/>
-        <enumeration value="VND"/>
-        <enumeration value="VUV"/>
-        <enumeration value="WST"/>
-        <enumeration value="XAF"/>
-        <enumeration value="XAG"/>
-        <enumeration value="XAU"/>
-        <enumeration value="XBA"/>
-        <enumeration value="XBB"/>
-        <enumeration value="XBC"/>
-        <enumeration value="XBD"/>
-        <enumeration value="XCD"/>
-        <enumeration value="XDR"/>
-        <enumeration value="XOF"/>
-        <enumeration value="XPD"/>
-        <enumeration value="XPF"/>
-        <enumeration value="XPT"/>
-        <enumeration value="XSU"/>
-        <enumeration value="XTS"/>
-        <enumeration value="XUA"/>
-        <enumeration value="XXX"/>
-        <enumeration value="YER"/>
-        <enumeration value="ZAR"/>
-        <enumeration value="ZMW"/>
-        <enumeration value="ZWL"/>
-    </cl>
-    <cl id="26">
-        <enumeration value="102"/>
-    </cl>
+  <cl id="1">
+    <enumeration value="urn:factur-x.eu:1p0:basicwl"/>
+  </cl>
+  <cl id="2">
+    <enumeration value="71"/>
+    <enumeration value="80"/>
+    <enumeration value="81"/>
+    <enumeration value="82"/>
+    <enumeration value="83"/>
+    <enumeration value="84"/>
+    <enumeration value="102"/>
+    <enumeration value="130"/>
+    <enumeration value="202"/>
+    <enumeration value="203"/>
+    <enumeration value="204"/>
+    <enumeration value="211"/>
+    <enumeration value="218"/>
+    <enumeration value="219"/>
+    <enumeration value="261"/>
+    <enumeration value="262"/>
+    <enumeration value="295"/>
+    <enumeration value="296"/>
+    <enumeration value="308"/>
+    <enumeration value="325"/>
+    <enumeration value="326"/>
+    <enumeration value="331"/>
+    <enumeration value="380"/>
+    <enumeration value="381"/>
+    <enumeration value="382"/>
+    <enumeration value="383"/>
+    <enumeration value="384"/>
+    <enumeration value="385"/>
+    <enumeration value="386"/>
+    <enumeration value="387"/>
+    <enumeration value="388"/>
+    <enumeration value="389"/>
+    <enumeration value="390"/>
+    <enumeration value="393"/>
+    <enumeration value="394"/>
+    <enumeration value="395"/>
+    <enumeration value="396"/>
+    <enumeration value="420"/>
+    <enumeration value="456"/>
+    <enumeration value="457"/>
+    <enumeration value="458"/>
+    <enumeration value="527"/>
+    <enumeration value="532"/>
+    <enumeration value="553"/>
+    <enumeration value="575"/>
+    <enumeration value="623"/>
+    <enumeration value="633"/>
+    <enumeration value="751"/>
+    <enumeration value="780"/>
+    <enumeration value="817"/>
+    <enumeration value="870"/>
+    <enumeration value="875"/>
+    <enumeration value="876"/>
+    <enumeration value="877"/>
+    <enumeration value="935"/>
+  </cl>
+  <cl id="3">
+    <enumeration value="102"/>
+  </cl>
+  <cl id="4">
+    <enumeration value="AAA"/>
+    <enumeration value="AAB"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAG"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAJ"/>
+    <enumeration value="AAK"/>
+    <enumeration value="AAL"/>
+    <enumeration value="AAM"/>
+    <enumeration value="AAN"/>
+    <enumeration value="AAO"/>
+    <enumeration value="AAP"/>
+    <enumeration value="AAQ"/>
+    <enumeration value="AAR"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAU"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAW"/>
+    <enumeration value="AAX"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABE"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABG"/>
+    <enumeration value="ABH"/>
+    <enumeration value="ABI"/>
+    <enumeration value="ABJ"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABM"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABO"/>
+    <enumeration value="ABP"/>
+    <enumeration value="ABQ"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ABV"/>
+    <enumeration value="ABW"/>
+    <enumeration value="ABX"/>
+    <enumeration value="ABZ"/>
+    <enumeration value="ACA"/>
+    <enumeration value="ACB"/>
+    <enumeration value="ACC"/>
+    <enumeration value="ACD"/>
+    <enumeration value="ACE"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACN"/>
+    <enumeration value="ACO"/>
+    <enumeration value="ACP"/>
+    <enumeration value="ACQ"/>
+    <enumeration value="ACR"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ACT"/>
+    <enumeration value="ACU"/>
+    <enumeration value="ACV"/>
+    <enumeration value="ACW"/>
+    <enumeration value="ACX"/>
+    <enumeration value="ACY"/>
+    <enumeration value="ACZ"/>
+    <enumeration value="ADA"/>
+    <enumeration value="ADB"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADD"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADF"/>
+    <enumeration value="ADG"/>
+    <enumeration value="ADH"/>
+    <enumeration value="ADI"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADS"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADU"/>
+    <enumeration value="ADV"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADX"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEE"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEG"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AEQ"/>
+    <enumeration value="AER"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AFA"/>
+    <enumeration value="AFB"/>
+    <enumeration value="AFC"/>
+    <enumeration value="AFD"/>
+    <enumeration value="AFE"/>
+    <enumeration value="AFF"/>
+    <enumeration value="AFG"/>
+    <enumeration value="AFH"/>
+    <enumeration value="AFI"/>
+    <enumeration value="AFJ"/>
+    <enumeration value="AFK"/>
+    <enumeration value="AFL"/>
+    <enumeration value="AFM"/>
+    <enumeration value="AFN"/>
+    <enumeration value="AFO"/>
+    <enumeration value="AFP"/>
+    <enumeration value="AFQ"/>
+    <enumeration value="AFR"/>
+    <enumeration value="AFS"/>
+    <enumeration value="AFT"/>
+    <enumeration value="AFU"/>
+    <enumeration value="AFV"/>
+    <enumeration value="AFW"/>
+    <enumeration value="AFX"/>
+    <enumeration value="AFY"/>
+    <enumeration value="AFZ"/>
+    <enumeration value="AGA"/>
+    <enumeration value="AGB"/>
+    <enumeration value="AGC"/>
+    <enumeration value="AGD"/>
+    <enumeration value="AGE"/>
+    <enumeration value="AGF"/>
+    <enumeration value="AGG"/>
+    <enumeration value="AGH"/>
+    <enumeration value="AGI"/>
+    <enumeration value="AGJ"/>
+    <enumeration value="AGK"/>
+    <enumeration value="AGL"/>
+    <enumeration value="AGM"/>
+    <enumeration value="AGN"/>
+    <enumeration value="AGO"/>
+    <enumeration value="AGP"/>
+    <enumeration value="AGQ"/>
+    <enumeration value="AGR"/>
+    <enumeration value="AGS"/>
+    <enumeration value="AGT"/>
+    <enumeration value="AGU"/>
+    <enumeration value="AGV"/>
+    <enumeration value="AGW"/>
+    <enumeration value="AGX"/>
+    <enumeration value="AGY"/>
+    <enumeration value="AGZ"/>
+    <enumeration value="AHA"/>
+    <enumeration value="AHB"/>
+    <enumeration value="AHC"/>
+    <enumeration value="AHD"/>
+    <enumeration value="AHE"/>
+    <enumeration value="AHF"/>
+    <enumeration value="AHG"/>
+    <enumeration value="AHH"/>
+    <enumeration value="AHI"/>
+    <enumeration value="AHJ"/>
+    <enumeration value="AHK"/>
+    <enumeration value="AHL"/>
+    <enumeration value="AHM"/>
+    <enumeration value="AHN"/>
+    <enumeration value="AHO"/>
+    <enumeration value="AHP"/>
+    <enumeration value="AHQ"/>
+    <enumeration value="AHR"/>
+    <enumeration value="AHS"/>
+    <enumeration value="AHT"/>
+    <enumeration value="AHU"/>
+    <enumeration value="AHV"/>
+    <enumeration value="AHW"/>
+    <enumeration value="AHX"/>
+    <enumeration value="AHY"/>
+    <enumeration value="AHZ"/>
+    <enumeration value="AIA"/>
+    <enumeration value="AIB"/>
+    <enumeration value="AIC"/>
+    <enumeration value="AID"/>
+    <enumeration value="AIE"/>
+    <enumeration value="AIF"/>
+    <enumeration value="AIG"/>
+    <enumeration value="AIH"/>
+    <enumeration value="AII"/>
+    <enumeration value="AIJ"/>
+    <enumeration value="AIK"/>
+    <enumeration value="AIL"/>
+    <enumeration value="AIM"/>
+    <enumeration value="AIN"/>
+    <enumeration value="AIO"/>
+    <enumeration value="AIP"/>
+    <enumeration value="AIQ"/>
+    <enumeration value="AIR"/>
+    <enumeration value="AIS"/>
+    <enumeration value="AIT"/>
+    <enumeration value="AIU"/>
+    <enumeration value="AIV"/>
+    <enumeration value="AIW"/>
+    <enumeration value="AIX"/>
+    <enumeration value="AIY"/>
+    <enumeration value="AIZ"/>
+    <enumeration value="AJA"/>
+    <enumeration value="AJB"/>
+    <enumeration value="ALC"/>
+    <enumeration value="ALD"/>
+    <enumeration value="ALE"/>
+    <enumeration value="ALF"/>
+    <enumeration value="ALG"/>
+    <enumeration value="ALH"/>
+    <enumeration value="ALI"/>
+    <enumeration value="ALJ"/>
+    <enumeration value="ALK"/>
+    <enumeration value="ALL"/>
+    <enumeration value="ALM"/>
+    <enumeration value="ALN"/>
+    <enumeration value="ALO"/>
+    <enumeration value="ALP"/>
+    <enumeration value="ALQ"/>
+    <enumeration value="ARR"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUT"/>
+    <enumeration value="AUU"/>
+    <enumeration value="AUV"/>
+    <enumeration value="AUW"/>
+    <enumeration value="AUX"/>
+    <enumeration value="AUY"/>
+    <enumeration value="AUZ"/>
+    <enumeration value="AVA"/>
+    <enumeration value="AVB"/>
+    <enumeration value="AVC"/>
+    <enumeration value="AVD"/>
+    <enumeration value="AVE"/>
+    <enumeration value="AVF"/>
+    <enumeration value="BAG"/>
+    <enumeration value="BAH"/>
+    <enumeration value="BAI"/>
+    <enumeration value="BAJ"/>
+    <enumeration value="BAK"/>
+    <enumeration value="BAL"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BAN"/>
+    <enumeration value="BAO"/>
+    <enumeration value="BAP"/>
+    <enumeration value="BAQ"/>
+    <enumeration value="BAR"/>
+    <enumeration value="BAS"/>
+    <enumeration value="BAT"/>
+    <enumeration value="BAU"/>
+    <enumeration value="BAV"/>
+    <enumeration value="BAW"/>
+    <enumeration value="BAX"/>
+    <enumeration value="BAY"/>
+    <enumeration value="BAZ"/>
+    <enumeration value="BBA"/>
+    <enumeration value="BBB"/>
+    <enumeration value="BLC"/>
+    <enumeration value="BLD"/>
+    <enumeration value="BLE"/>
+    <enumeration value="BLF"/>
+    <enumeration value="BLG"/>
+    <enumeration value="BLH"/>
+    <enumeration value="BLI"/>
+    <enumeration value="BLJ"/>
+    <enumeration value="BLK"/>
+    <enumeration value="BLL"/>
+    <enumeration value="BLM"/>
+    <enumeration value="BLN"/>
+    <enumeration value="BLO"/>
+    <enumeration value="BLP"/>
+    <enumeration value="BLQ"/>
+    <enumeration value="BLR"/>
+    <enumeration value="BLS"/>
+    <enumeration value="BLT"/>
+    <enumeration value="BLU"/>
+    <enumeration value="BLV"/>
+    <enumeration value="BLW"/>
+    <enumeration value="BLX"/>
+    <enumeration value="BLY"/>
+    <enumeration value="BLZ"/>
+    <enumeration value="BMA"/>
+    <enumeration value="BMB"/>
+    <enumeration value="BMC"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BME"/>
+    <enumeration value="BMF"/>
+    <enumeration value="BMG"/>
+    <enumeration value="BMH"/>
+    <enumeration value="CCI"/>
+    <enumeration value="CCJ"/>
+    <enumeration value="CCK"/>
+    <enumeration value="CCL"/>
+    <enumeration value="CCM"/>
+    <enumeration value="CCN"/>
+    <enumeration value="CCO"/>
+    <enumeration value="CEX"/>
+    <enumeration value="CHG"/>
+    <enumeration value="CIP"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CLR"/>
+    <enumeration value="COI"/>
+    <enumeration value="CUR"/>
+    <enumeration value="CUS"/>
+    <enumeration value="DAR"/>
+    <enumeration value="DCL"/>
+    <enumeration value="DEL"/>
+    <enumeration value="DIN"/>
+    <enumeration value="DOC"/>
+    <enumeration value="DUT"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FBC"/>
+    <enumeration value="GBL"/>
+    <enumeration value="GEN"/>
+    <enumeration value="GS7"/>
+    <enumeration value="HAN"/>
+    <enumeration value="HAZ"/>
+    <enumeration value="ICN"/>
+    <enumeration value="IIN"/>
+    <enumeration value="IMI"/>
+    <enumeration value="IND"/>
+    <enumeration value="INS"/>
+    <enumeration value="INV"/>
+    <enumeration value="IRP"/>
+    <enumeration value="ITR"/>
+    <enumeration value="ITS"/>
+    <enumeration value="LAN"/>
+    <enumeration value="LIN"/>
+    <enumeration value="LOI"/>
+    <enumeration value="MCO"/>
+    <enumeration value="MDH"/>
+    <enumeration value="MKS"/>
+    <enumeration value="ORI"/>
+    <enumeration value="OSI"/>
+    <enumeration value="PAC"/>
+    <enumeration value="PAI"/>
+    <enumeration value="PAY"/>
+    <enumeration value="PKG"/>
+    <enumeration value="PKT"/>
+    <enumeration value="PMD"/>
+    <enumeration value="PMT"/>
+    <enumeration value="PRD"/>
+    <enumeration value="PRF"/>
+    <enumeration value="PRI"/>
+    <enumeration value="PUR"/>
+    <enumeration value="QIN"/>
+    <enumeration value="QQD"/>
+    <enumeration value="QUT"/>
+    <enumeration value="RAH"/>
+    <enumeration value="REG"/>
+    <enumeration value="RET"/>
+    <enumeration value="REV"/>
+    <enumeration value="RQR"/>
+    <enumeration value="SAF"/>
+    <enumeration value="SIC"/>
+    <enumeration value="SIN"/>
+    <enumeration value="SLR"/>
+    <enumeration value="SPA"/>
+    <enumeration value="SPG"/>
+    <enumeration value="SPH"/>
+    <enumeration value="SPP"/>
+    <enumeration value="SPT"/>
+    <enumeration value="SRN"/>
+    <enumeration value="SSR"/>
+    <enumeration value="SUR"/>
+    <enumeration value="TCA"/>
+    <enumeration value="TDT"/>
+    <enumeration value="TRA"/>
+    <enumeration value="TRR"/>
+    <enumeration value="TXD"/>
+    <enumeration value="WHI"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="5">
+    <enumeration value="0002"/>
+    <enumeration value="0003"/>
+    <enumeration value="0004"/>
+    <enumeration value="0005"/>
+    <enumeration value="0006"/>
+    <enumeration value="0007"/>
+    <enumeration value="0008"/>
+    <enumeration value="0009"/>
+    <enumeration value="0010"/>
+    <enumeration value="0011"/>
+    <enumeration value="0012"/>
+    <enumeration value="0013"/>
+    <enumeration value="0014"/>
+    <enumeration value="0015"/>
+    <enumeration value="0016"/>
+    <enumeration value="0017"/>
+    <enumeration value="0018"/>
+    <enumeration value="0019"/>
+    <enumeration value="0020"/>
+    <enumeration value="0021"/>
+    <enumeration value="0022"/>
+    <enumeration value="0023"/>
+    <enumeration value="0024"/>
+    <enumeration value="0025"/>
+    <enumeration value="0026"/>
+    <enumeration value="0027"/>
+    <enumeration value="0028"/>
+    <enumeration value="0029"/>
+    <enumeration value="0030"/>
+    <enumeration value="0031"/>
+    <enumeration value="0032"/>
+    <enumeration value="0033"/>
+    <enumeration value="0034"/>
+    <enumeration value="0035"/>
+    <enumeration value="0036"/>
+    <enumeration value="0037"/>
+    <enumeration value="0038"/>
+    <enumeration value="0039"/>
+    <enumeration value="0040"/>
+    <enumeration value="0041"/>
+    <enumeration value="0042"/>
+    <enumeration value="0043"/>
+    <enumeration value="0044"/>
+    <enumeration value="0045"/>
+    <enumeration value="0046"/>
+    <enumeration value="0047"/>
+    <enumeration value="0048"/>
+    <enumeration value="0049"/>
+    <enumeration value="0050"/>
+    <enumeration value="0051"/>
+    <enumeration value="0052"/>
+    <enumeration value="0053"/>
+    <enumeration value="0054"/>
+    <enumeration value="0055"/>
+    <enumeration value="0056"/>
+    <enumeration value="0057"/>
+    <enumeration value="0058"/>
+    <enumeration value="0059"/>
+    <enumeration value="0060"/>
+    <enumeration value="0061"/>
+    <enumeration value="0062"/>
+    <enumeration value="0063"/>
+    <enumeration value="0064"/>
+    <enumeration value="0065"/>
+    <enumeration value="0066"/>
+    <enumeration value="0067"/>
+    <enumeration value="0068"/>
+    <enumeration value="0069"/>
+    <enumeration value="0070"/>
+    <enumeration value="0071"/>
+    <enumeration value="0072"/>
+    <enumeration value="0073"/>
+    <enumeration value="0074"/>
+    <enumeration value="0075"/>
+    <enumeration value="0076"/>
+    <enumeration value="0077"/>
+    <enumeration value="0078"/>
+    <enumeration value="0079"/>
+    <enumeration value="0080"/>
+    <enumeration value="0081"/>
+    <enumeration value="0082"/>
+    <enumeration value="0083"/>
+    <enumeration value="0084"/>
+    <enumeration value="0085"/>
+    <enumeration value="0086"/>
+    <enumeration value="0087"/>
+    <enumeration value="0088"/>
+    <enumeration value="0089"/>
+    <enumeration value="0090"/>
+    <enumeration value="0091"/>
+    <enumeration value="0093"/>
+    <enumeration value="0094"/>
+    <enumeration value="0095"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0098"/>
+    <enumeration value="0099"/>
+    <enumeration value="0100"/>
+    <enumeration value="0101"/>
+    <enumeration value="0102"/>
+    <enumeration value="0104"/>
+    <enumeration value="0105"/>
+    <enumeration value="0106"/>
+    <enumeration value="0107"/>
+    <enumeration value="0108"/>
+    <enumeration value="0109"/>
+    <enumeration value="0110"/>
+    <enumeration value="0111"/>
+    <enumeration value="0112"/>
+    <enumeration value="0113"/>
+    <enumeration value="0114"/>
+    <enumeration value="0115"/>
+    <enumeration value="0116"/>
+    <enumeration value="0117"/>
+    <enumeration value="0118"/>
+    <enumeration value="0119"/>
+    <enumeration value="0120"/>
+    <enumeration value="0121"/>
+    <enumeration value="0122"/>
+    <enumeration value="0123"/>
+    <enumeration value="0124"/>
+    <enumeration value="0125"/>
+    <enumeration value="0126"/>
+    <enumeration value="0127"/>
+    <enumeration value="0128"/>
+    <enumeration value="0129"/>
+    <enumeration value="0130"/>
+    <enumeration value="0131"/>
+    <enumeration value="0132"/>
+    <enumeration value="0133"/>
+    <enumeration value="0134"/>
+    <enumeration value="0135"/>
+    <enumeration value="0136"/>
+    <enumeration value="0137"/>
+    <enumeration value="0138"/>
+    <enumeration value="0139"/>
+    <enumeration value="0140"/>
+    <enumeration value="0141"/>
+    <enumeration value="0142"/>
+    <enumeration value="0143"/>
+    <enumeration value="0144"/>
+    <enumeration value="0145"/>
+    <enumeration value="0146"/>
+    <enumeration value="0147"/>
+    <enumeration value="0148"/>
+    <enumeration value="0149"/>
+    <enumeration value="0150"/>
+    <enumeration value="0151"/>
+    <enumeration value="0152"/>
+    <enumeration value="0153"/>
+    <enumeration value="0154"/>
+    <enumeration value="0155"/>
+    <enumeration value="0156"/>
+    <enumeration value="0157"/>
+    <enumeration value="0158"/>
+    <enumeration value="0159"/>
+    <enumeration value="0160"/>
+    <enumeration value="0161"/>
+    <enumeration value="0162"/>
+    <enumeration value="0163"/>
+    <enumeration value="0164"/>
+    <enumeration value="0165"/>
+    <enumeration value="0166"/>
+    <enumeration value="0167"/>
+    <enumeration value="0168"/>
+    <enumeration value="0169"/>
+    <enumeration value="0170"/>
+    <enumeration value="0171"/>
+    <enumeration value="0172"/>
+    <enumeration value="0173"/>
+    <enumeration value="0174"/>
+    <enumeration value="0175"/>
+    <enumeration value="0176"/>
+    <enumeration value="0177"/>
+    <enumeration value="0178"/>
+    <enumeration value="0179"/>
+    <enumeration value="0180"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0185"/>
+    <enumeration value="0186"/>
+    <enumeration value="0187"/>
+    <enumeration value="0188"/>
+    <enumeration value="0189"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0197"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
+  </cl>
+  <cl id="6">
+    <enumeration value="0002"/>
+    <enumeration value="0003"/>
+    <enumeration value="0004"/>
+    <enumeration value="0005"/>
+    <enumeration value="0006"/>
+    <enumeration value="0007"/>
+    <enumeration value="0008"/>
+    <enumeration value="0009"/>
+    <enumeration value="0010"/>
+    <enumeration value="0011"/>
+    <enumeration value="0012"/>
+    <enumeration value="0013"/>
+    <enumeration value="0014"/>
+    <enumeration value="0015"/>
+    <enumeration value="0016"/>
+    <enumeration value="0017"/>
+    <enumeration value="0018"/>
+    <enumeration value="0019"/>
+    <enumeration value="0020"/>
+    <enumeration value="0021"/>
+    <enumeration value="0022"/>
+    <enumeration value="0023"/>
+    <enumeration value="0024"/>
+    <enumeration value="0025"/>
+    <enumeration value="0026"/>
+    <enumeration value="0027"/>
+    <enumeration value="0028"/>
+    <enumeration value="0029"/>
+    <enumeration value="0030"/>
+    <enumeration value="0031"/>
+    <enumeration value="0032"/>
+    <enumeration value="0033"/>
+    <enumeration value="0034"/>
+    <enumeration value="0035"/>
+    <enumeration value="0036"/>
+    <enumeration value="0037"/>
+    <enumeration value="0038"/>
+    <enumeration value="0039"/>
+    <enumeration value="0040"/>
+    <enumeration value="0041"/>
+    <enumeration value="0042"/>
+    <enumeration value="0043"/>
+    <enumeration value="0044"/>
+    <enumeration value="0045"/>
+    <enumeration value="0046"/>
+    <enumeration value="0047"/>
+    <enumeration value="0048"/>
+    <enumeration value="0049"/>
+    <enumeration value="0050"/>
+    <enumeration value="0051"/>
+    <enumeration value="0052"/>
+    <enumeration value="0053"/>
+    <enumeration value="0054"/>
+    <enumeration value="0055"/>
+    <enumeration value="0056"/>
+    <enumeration value="0057"/>
+    <enumeration value="0058"/>
+    <enumeration value="0059"/>
+    <enumeration value="0060"/>
+    <enumeration value="0061"/>
+    <enumeration value="0062"/>
+    <enumeration value="0063"/>
+    <enumeration value="0064"/>
+    <enumeration value="0065"/>
+    <enumeration value="0066"/>
+    <enumeration value="0067"/>
+    <enumeration value="0068"/>
+    <enumeration value="0069"/>
+    <enumeration value="0070"/>
+    <enumeration value="0071"/>
+    <enumeration value="0072"/>
+    <enumeration value="0073"/>
+    <enumeration value="0074"/>
+    <enumeration value="0075"/>
+    <enumeration value="0076"/>
+    <enumeration value="0077"/>
+    <enumeration value="0078"/>
+    <enumeration value="0079"/>
+    <enumeration value="0080"/>
+    <enumeration value="0081"/>
+    <enumeration value="0082"/>
+    <enumeration value="0083"/>
+    <enumeration value="0084"/>
+    <enumeration value="0085"/>
+    <enumeration value="0086"/>
+    <enumeration value="0087"/>
+    <enumeration value="0088"/>
+    <enumeration value="0089"/>
+    <enumeration value="0090"/>
+    <enumeration value="0091"/>
+    <enumeration value="0093"/>
+    <enumeration value="0094"/>
+    <enumeration value="0095"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0098"/>
+    <enumeration value="0099"/>
+    <enumeration value="0100"/>
+    <enumeration value="0101"/>
+    <enumeration value="0102"/>
+    <enumeration value="0104"/>
+    <enumeration value="0105"/>
+    <enumeration value="0106"/>
+    <enumeration value="0107"/>
+    <enumeration value="0108"/>
+    <enumeration value="0109"/>
+    <enumeration value="0110"/>
+    <enumeration value="0111"/>
+    <enumeration value="0112"/>
+    <enumeration value="0113"/>
+    <enumeration value="0114"/>
+    <enumeration value="0115"/>
+    <enumeration value="0116"/>
+    <enumeration value="0117"/>
+    <enumeration value="0118"/>
+    <enumeration value="0119"/>
+    <enumeration value="0120"/>
+    <enumeration value="0121"/>
+    <enumeration value="0122"/>
+    <enumeration value="0123"/>
+    <enumeration value="0124"/>
+    <enumeration value="0125"/>
+    <enumeration value="0126"/>
+    <enumeration value="0127"/>
+    <enumeration value="0128"/>
+    <enumeration value="0129"/>
+    <enumeration value="0130"/>
+    <enumeration value="0131"/>
+    <enumeration value="0132"/>
+    <enumeration value="0133"/>
+    <enumeration value="0134"/>
+    <enumeration value="0135"/>
+    <enumeration value="0136"/>
+    <enumeration value="0137"/>
+    <enumeration value="0138"/>
+    <enumeration value="0139"/>
+    <enumeration value="0140"/>
+    <enumeration value="0141"/>
+    <enumeration value="0142"/>
+    <enumeration value="0143"/>
+    <enumeration value="0144"/>
+    <enumeration value="0145"/>
+    <enumeration value="0146"/>
+    <enumeration value="0147"/>
+    <enumeration value="0148"/>
+    <enumeration value="0149"/>
+    <enumeration value="0150"/>
+    <enumeration value="0151"/>
+    <enumeration value="0152"/>
+    <enumeration value="0153"/>
+    <enumeration value="0154"/>
+    <enumeration value="0155"/>
+    <enumeration value="0156"/>
+    <enumeration value="0157"/>
+    <enumeration value="0158"/>
+    <enumeration value="0159"/>
+    <enumeration value="0160"/>
+    <enumeration value="0161"/>
+    <enumeration value="0162"/>
+    <enumeration value="0163"/>
+    <enumeration value="0164"/>
+    <enumeration value="0165"/>
+    <enumeration value="0166"/>
+    <enumeration value="0167"/>
+    <enumeration value="0168"/>
+    <enumeration value="0169"/>
+    <enumeration value="0170"/>
+    <enumeration value="0171"/>
+    <enumeration value="0172"/>
+    <enumeration value="0173"/>
+    <enumeration value="0174"/>
+    <enumeration value="0175"/>
+    <enumeration value="0176"/>
+    <enumeration value="0177"/>
+    <enumeration value="0178"/>
+    <enumeration value="0179"/>
+    <enumeration value="0180"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0185"/>
+    <enumeration value="0186"/>
+    <enumeration value="0187"/>
+    <enumeration value="0188"/>
+    <enumeration value="0189"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0197"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
+  </cl>
+  <cl id="7">
+    <enumeration value="AD"/>
+    <enumeration value="AE"/>
+    <enumeration value="AF"/>
+    <enumeration value="AG"/>
+    <enumeration value="AI"/>
+    <enumeration value="AL"/>
+    <enumeration value="AM"/>
+    <enumeration value="AO"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AR"/>
+    <enumeration value="AS"/>
+    <enumeration value="AT"/>
+    <enumeration value="AU"/>
+    <enumeration value="AW"/>
+    <enumeration value="AX"/>
+    <enumeration value="AZ"/>
+    <enumeration value="BA"/>
+    <enumeration value="BB"/>
+    <enumeration value="BD"/>
+    <enumeration value="BE"/>
+    <enumeration value="BF"/>
+    <enumeration value="BG"/>
+    <enumeration value="BH"/>
+    <enumeration value="BI"/>
+    <enumeration value="BJ"/>
+    <enumeration value="BL"/>
+    <enumeration value="BM"/>
+    <enumeration value="BN"/>
+    <enumeration value="BO"/>
+    <enumeration value="BQ"/>
+    <enumeration value="BR"/>
+    <enumeration value="BS"/>
+    <enumeration value="BT"/>
+    <enumeration value="BV"/>
+    <enumeration value="BW"/>
+    <enumeration value="BY"/>
+    <enumeration value="BZ"/>
+    <enumeration value="CA"/>
+    <enumeration value="CC"/>
+    <enumeration value="CD"/>
+    <enumeration value="CF"/>
+    <enumeration value="CG"/>
+    <enumeration value="CH"/>
+    <enumeration value="CI"/>
+    <enumeration value="CK"/>
+    <enumeration value="CL"/>
+    <enumeration value="CM"/>
+    <enumeration value="CN"/>
+    <enumeration value="CO"/>
+    <enumeration value="CR"/>
+    <enumeration value="CU"/>
+    <enumeration value="CV"/>
+    <enumeration value="CW"/>
+    <enumeration value="CX"/>
+    <enumeration value="CY"/>
+    <enumeration value="CZ"/>
+    <enumeration value="DE"/>
+    <enumeration value="DJ"/>
+    <enumeration value="DK"/>
+    <enumeration value="DM"/>
+    <enumeration value="DO"/>
+    <enumeration value="DZ"/>
+    <enumeration value="EC"/>
+    <enumeration value="EE"/>
+    <enumeration value="EG"/>
+    <enumeration value="EH"/>
+    <enumeration value="ER"/>
+    <enumeration value="ES"/>
+    <enumeration value="ET"/>
+    <enumeration value="FI"/>
+    <enumeration value="FJ"/>
+    <enumeration value="FK"/>
+    <enumeration value="FM"/>
+    <enumeration value="FO"/>
+    <enumeration value="FR"/>
+    <enumeration value="GA"/>
+    <enumeration value="GB"/>
+    <enumeration value="GD"/>
+    <enumeration value="GE"/>
+    <enumeration value="GF"/>
+    <enumeration value="GG"/>
+    <enumeration value="GH"/>
+    <enumeration value="GI"/>
+    <enumeration value="GL"/>
+    <enumeration value="GM"/>
+    <enumeration value="GN"/>
+    <enumeration value="GP"/>
+    <enumeration value="GQ"/>
+    <enumeration value="GR"/>
+    <enumeration value="GS"/>
+    <enumeration value="GT"/>
+    <enumeration value="GU"/>
+    <enumeration value="GW"/>
+    <enumeration value="GY"/>
+    <enumeration value="HK"/>
+    <enumeration value="HM"/>
+    <enumeration value="HN"/>
+    <enumeration value="HR"/>
+    <enumeration value="HT"/>
+    <enumeration value="HU"/>
+    <enumeration value="ID"/>
+    <enumeration value="IE"/>
+    <enumeration value="IL"/>
+    <enumeration value="IM"/>
+    <enumeration value="IN"/>
+    <enumeration value="IO"/>
+    <enumeration value="IQ"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="IT"/>
+    <enumeration value="JE"/>
+    <enumeration value="JM"/>
+    <enumeration value="JO"/>
+    <enumeration value="JP"/>
+    <enumeration value="KE"/>
+    <enumeration value="KG"/>
+    <enumeration value="KH"/>
+    <enumeration value="KI"/>
+    <enumeration value="KM"/>
+    <enumeration value="KN"/>
+    <enumeration value="KP"/>
+    <enumeration value="KR"/>
+    <enumeration value="KW"/>
+    <enumeration value="KY"/>
+    <enumeration value="KZ"/>
+    <enumeration value="LA"/>
+    <enumeration value="LB"/>
+    <enumeration value="LC"/>
+    <enumeration value="LI"/>
+    <enumeration value="LK"/>
+    <enumeration value="LR"/>
+    <enumeration value="LS"/>
+    <enumeration value="LT"/>
+    <enumeration value="LU"/>
+    <enumeration value="LV"/>
+    <enumeration value="LY"/>
+    <enumeration value="MA"/>
+    <enumeration value="MC"/>
+    <enumeration value="MD"/>
+    <enumeration value="ME"/>
+    <enumeration value="MF"/>
+    <enumeration value="MG"/>
+    <enumeration value="MH"/>
+    <enumeration value="MK"/>
+    <enumeration value="ML"/>
+    <enumeration value="MM"/>
+    <enumeration value="MN"/>
+    <enumeration value="MO"/>
+    <enumeration value="MP"/>
+    <enumeration value="MQ"/>
+    <enumeration value="MR"/>
+    <enumeration value="MS"/>
+    <enumeration value="MT"/>
+    <enumeration value="MU"/>
+    <enumeration value="MV"/>
+    <enumeration value="MW"/>
+    <enumeration value="MX"/>
+    <enumeration value="MY"/>
+    <enumeration value="MZ"/>
+    <enumeration value="NA"/>
+    <enumeration value="NC"/>
+    <enumeration value="NE"/>
+    <enumeration value="NF"/>
+    <enumeration value="NG"/>
+    <enumeration value="NI"/>
+    <enumeration value="NL"/>
+    <enumeration value="NO"/>
+    <enumeration value="NP"/>
+    <enumeration value="NR"/>
+    <enumeration value="NU"/>
+    <enumeration value="NZ"/>
+    <enumeration value="OM"/>
+    <enumeration value="PA"/>
+    <enumeration value="PE"/>
+    <enumeration value="PF"/>
+    <enumeration value="PG"/>
+    <enumeration value="PH"/>
+    <enumeration value="PK"/>
+    <enumeration value="PL"/>
+    <enumeration value="PM"/>
+    <enumeration value="PN"/>
+    <enumeration value="PR"/>
+    <enumeration value="PS"/>
+    <enumeration value="PT"/>
+    <enumeration value="PW"/>
+    <enumeration value="PY"/>
+    <enumeration value="QA"/>
+    <enumeration value="RE"/>
+    <enumeration value="RO"/>
+    <enumeration value="RS"/>
+    <enumeration value="RU"/>
+    <enumeration value="RW"/>
+    <enumeration value="SA"/>
+    <enumeration value="SB"/>
+    <enumeration value="SC"/>
+    <enumeration value="SD"/>
+    <enumeration value="SE"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SI"/>
+    <enumeration value="SJ"/>
+    <enumeration value="SK"/>
+    <enumeration value="SL"/>
+    <enumeration value="SM"/>
+    <enumeration value="SN"/>
+    <enumeration value="SO"/>
+    <enumeration value="SR"/>
+    <enumeration value="SS"/>
+    <enumeration value="ST"/>
+    <enumeration value="SV"/>
+    <enumeration value="SX"/>
+    <enumeration value="SY"/>
+    <enumeration value="SZ"/>
+    <enumeration value="TC"/>
+    <enumeration value="TD"/>
+    <enumeration value="TF"/>
+    <enumeration value="TG"/>
+    <enumeration value="TH"/>
+    <enumeration value="TJ"/>
+    <enumeration value="TK"/>
+    <enumeration value="TL"/>
+    <enumeration value="TM"/>
+    <enumeration value="TN"/>
+    <enumeration value="TO"/>
+    <enumeration value="TR"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="TW"/>
+    <enumeration value="TZ"/>
+    <enumeration value="UA"/>
+    <enumeration value="UG"/>
+    <enumeration value="UM"/>
+    <enumeration value="US"/>
+    <enumeration value="UY"/>
+    <enumeration value="UZ"/>
+    <enumeration value="VA"/>
+    <enumeration value="VC"/>
+    <enumeration value="VE"/>
+    <enumeration value="VG"/>
+    <enumeration value="VI"/>
+    <enumeration value="VN"/>
+    <enumeration value="VU"/>
+    <enumeration value="WF"/>
+    <enumeration value="WS"/>
+    <enumeration value="YE"/>
+    <enumeration value="YT"/>
+    <enumeration value="ZA"/>
+    <enumeration value="ZM"/>
+    <enumeration value="ZW"/>
+    <enumeration value="1A"/>
+    <enumeration value="XI"/>
+  </cl>
+  <cl id="8">
+    <enumeration value="0002"/>
+    <enumeration value="0007"/>
+    <enumeration value="0009"/>
+    <enumeration value="0037"/>
+    <enumeration value="0060"/>
+    <enumeration value="0088"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0106"/>
+    <enumeration value="0130"/>
+    <enumeration value="0135"/>
+    <enumeration value="0142"/>
+    <enumeration value="0147"/>
+    <enumeration value="0151"/>
+    <enumeration value="0170"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0188"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0221"/>
+    <enumeration value="0225"/>
+    <enumeration value="0230"/>
+    <enumeration value="9901"/>
+    <enumeration value="9910"/>
+    <enumeration value="9913"/>
+    <enumeration value="9914"/>
+    <enumeration value="9915"/>
+    <enumeration value="9918"/>
+    <enumeration value="9919"/>
+    <enumeration value="9920"/>
+    <enumeration value="9922"/>
+    <enumeration value="9923"/>
+    <enumeration value="9924"/>
+    <enumeration value="9925"/>
+    <enumeration value="9926"/>
+    <enumeration value="9927"/>
+    <enumeration value="9928"/>
+    <enumeration value="9929"/>
+    <enumeration value="9930"/>
+    <enumeration value="9931"/>
+    <enumeration value="9932"/>
+    <enumeration value="9933"/>
+    <enumeration value="9934"/>
+    <enumeration value="9935"/>
+    <enumeration value="9936"/>
+    <enumeration value="9937"/>
+    <enumeration value="9938"/>
+    <enumeration value="9939"/>
+    <enumeration value="9940"/>
+    <enumeration value="9941"/>
+    <enumeration value="9942"/>
+    <enumeration value="9943"/>
+    <enumeration value="9944"/>
+    <enumeration value="9945"/>
+    <enumeration value="9946"/>
+    <enumeration value="9947"/>
+    <enumeration value="9948"/>
+    <enumeration value="9949"/>
+    <enumeration value="9950"/>
+    <enumeration value="9951"/>
+    <enumeration value="9952"/>
+    <enumeration value="9953"/>
+    <enumeration value="9957"/>
+    <enumeration value="9959"/>
+    <enumeration value="AN"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AS"/>
+    <enumeration value="AU"/>
+    <enumeration value="EM"/>
+  </cl>
+  <cl id="9">
+    <enumeration value="VA"/>
+  </cl>
+  <cl id="10">
+    <enumeration value="VA"/>
+  </cl>
+  <cl id="11">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="12">
+    <enumeration value="1"/>
+    <enumeration value="2"/>
+    <enumeration value="3"/>
+    <enumeration value="4"/>
+    <enumeration value="5"/>
+    <enumeration value="6"/>
+    <enumeration value="7"/>
+    <enumeration value="8"/>
+    <enumeration value="9"/>
+    <enumeration value="10"/>
+    <enumeration value="11"/>
+    <enumeration value="12"/>
+    <enumeration value="13"/>
+    <enumeration value="14"/>
+    <enumeration value="15"/>
+    <enumeration value="16"/>
+    <enumeration value="17"/>
+    <enumeration value="18"/>
+    <enumeration value="19"/>
+    <enumeration value="20"/>
+    <enumeration value="21"/>
+    <enumeration value="22"/>
+    <enumeration value="23"/>
+    <enumeration value="24"/>
+    <enumeration value="25"/>
+    <enumeration value="26"/>
+    <enumeration value="27"/>
+    <enumeration value="28"/>
+    <enumeration value="29"/>
+    <enumeration value="30"/>
+    <enumeration value="31"/>
+    <enumeration value="32"/>
+    <enumeration value="33"/>
+    <enumeration value="34"/>
+    <enumeration value="35"/>
+    <enumeration value="36"/>
+    <enumeration value="37"/>
+    <enumeration value="38"/>
+    <enumeration value="39"/>
+    <enumeration value="40"/>
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="43"/>
+    <enumeration value="44"/>
+    <enumeration value="45"/>
+    <enumeration value="46"/>
+    <enumeration value="47"/>
+    <enumeration value="48"/>
+    <enumeration value="49"/>
+    <enumeration value="50"/>
+    <enumeration value="51"/>
+    <enumeration value="52"/>
+    <enumeration value="53"/>
+    <enumeration value="54"/>
+    <enumeration value="55"/>
+    <enumeration value="56"/>
+    <enumeration value="57"/>
+    <enumeration value="58"/>
+    <enumeration value="59"/>
+    <enumeration value="60"/>
+    <enumeration value="61"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="69"/>
+    <enumeration value="70"/>
+    <enumeration value="74"/>
+    <enumeration value="75"/>
+    <enumeration value="76"/>
+    <enumeration value="77"/>
+    <enumeration value="78"/>
+    <enumeration value="91"/>
+    <enumeration value="92"/>
+    <enumeration value="93"/>
+    <enumeration value="94"/>
+    <enumeration value="95"/>
+    <enumeration value="96"/>
+    <enumeration value="97"/>
+    <enumeration value="98"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="13">
+    <enumeration value="VAT"/>
+  </cl>
+  <cl id="14">
+    <enumeration value="AE"/>
+    <enumeration value="E"/>
+    <enumeration value="G"/>
+    <enumeration value="K"/>
+    <enumeration value="L"/>
+    <enumeration value="M"/>
+    <enumeration value="O"/>
+    <enumeration value="S"/>
+    <enumeration value="Z"/>
+  </cl>
+  <cl id="15">
+    <enumeration value="VATEX-EU-132"/>
+    <enumeration value="VATEX-EU-132-1A"/>
+    <enumeration value="VATEX-EU-132-1B"/>
+    <enumeration value="VATEX-EU-132-1C"/>
+    <enumeration value="VATEX-EU-132-1D"/>
+    <enumeration value="VATEX-EU-132-1E"/>
+    <enumeration value="VATEX-EU-132-1F"/>
+    <enumeration value="VATEX-EU-132-1G"/>
+    <enumeration value="VATEX-EU-132-1H"/>
+    <enumeration value="VATEX-EU-132-1I"/>
+    <enumeration value="VATEX-EU-132-1J"/>
+    <enumeration value="VATEX-EU-132-1K"/>
+    <enumeration value="VATEX-EU-132-1L"/>
+    <enumeration value="VATEX-EU-132-1M"/>
+    <enumeration value="VATEX-EU-132-1N"/>
+    <enumeration value="VATEX-EU-132-1O"/>
+    <enumeration value="VATEX-EU-132-1P"/>
+    <enumeration value="VATEX-EU-132-1Q"/>
+    <enumeration value="VATEX-EU-143"/>
+    <enumeration value="VATEX-EU-143-1A"/>
+    <enumeration value="VATEX-EU-143-1B"/>
+    <enumeration value="VATEX-EU-143-1C"/>
+    <enumeration value="VATEX-EU-143-1D"/>
+    <enumeration value="VATEX-EU-143-1E"/>
+    <enumeration value="VATEX-EU-143-1F"/>
+    <enumeration value="VATEX-EU-143-1FA"/>
+    <enumeration value="VATEX-EU-143-1G"/>
+    <enumeration value="VATEX-EU-143-1H"/>
+    <enumeration value="VATEX-EU-143-1I"/>
+    <enumeration value="VATEX-EU-143-1J"/>
+    <enumeration value="VATEX-EU-143-1K"/>
+    <enumeration value="VATEX-EU-143-1L"/>
+    <enumeration value="VATEX-EU-148"/>
+    <enumeration value="VATEX-EU-148-A"/>
+    <enumeration value="VATEX-EU-148-B"/>
+    <enumeration value="VATEX-EU-148-C"/>
+    <enumeration value="VATEX-EU-148-D"/>
+    <enumeration value="VATEX-EU-148-E"/>
+    <enumeration value="VATEX-EU-148-F"/>
+    <enumeration value="VATEX-EU-148-G"/>
+    <enumeration value="VATEX-EU-151"/>
+    <enumeration value="VATEX-EU-151-1A"/>
+    <enumeration value="VATEX-EU-151-1AA"/>
+    <enumeration value="VATEX-EU-151-1B"/>
+    <enumeration value="VATEX-EU-151-1C"/>
+    <enumeration value="VATEX-EU-151-1D"/>
+    <enumeration value="VATEX-EU-151-1E"/>
+    <enumeration value="VATEX-EU-309"/>
+    <enumeration value="VATEX-EU-79-C"/>
+    <enumeration value="VATEX-EU-AE"/>
+    <enumeration value="VATEX-EU-D"/>
+    <enumeration value="VATEX-EU-F"/>
+    <enumeration value="VATEX-EU-G"/>
+    <enumeration value="VATEX-EU-I"/>
+    <enumeration value="VATEX-EU-IC"/>
+    <enumeration value="VATEX-EU-J"/>
+    <enumeration value="VATEX-EU-O"/>
+    <enumeration value="VATEX-FR-CNWVAT"/>
+    <enumeration value="VATEX-FR-FRANCHISE"/>
+  </cl>
+  <cl id="16">
+    <enumeration value="5"/>
+    <enumeration value="29"/>
+    <enumeration value="72"/>
+  </cl>
+  <cl id="17">
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="60"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="70"/>
+    <enumeration value="71"/>
+    <enumeration value="88"/>
+    <enumeration value="95"/>
+    <enumeration value="100"/>
+    <enumeration value="102"/>
+    <enumeration value="103"/>
+    <enumeration value="104"/>
+    <enumeration value="105"/>
+  </cl>
+  <cl id="18">
+    <enumeration value="AA"/>
+    <enumeration value="AAA"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAH"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AJ"/>
+    <enumeration value="AU"/>
+    <enumeration value="CA"/>
+    <enumeration value="CAB"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CAE"/>
+    <enumeration value="CAF"/>
+    <enumeration value="CAI"/>
+    <enumeration value="CAJ"/>
+    <enumeration value="CAK"/>
+    <enumeration value="CAL"/>
+    <enumeration value="CAM"/>
+    <enumeration value="CAN"/>
+    <enumeration value="CAO"/>
+    <enumeration value="CAP"/>
+    <enumeration value="CAQ"/>
+    <enumeration value="CAR"/>
+    <enumeration value="CAS"/>
+    <enumeration value="CAT"/>
+    <enumeration value="CAU"/>
+    <enumeration value="CAV"/>
+    <enumeration value="CAW"/>
+    <enumeration value="CAX"/>
+    <enumeration value="CAY"/>
+    <enumeration value="CAZ"/>
+    <enumeration value="CD"/>
+    <enumeration value="CG"/>
+    <enumeration value="CS"/>
+    <enumeration value="CT"/>
+    <enumeration value="DAB"/>
+    <enumeration value="DAC"/>
+    <enumeration value="DAD"/>
+    <enumeration value="DAF"/>
+    <enumeration value="DAG"/>
+    <enumeration value="DAH"/>
+    <enumeration value="DAI"/>
+    <enumeration value="DAJ"/>
+    <enumeration value="DAK"/>
+    <enumeration value="DAL"/>
+    <enumeration value="DAM"/>
+    <enumeration value="DAN"/>
+    <enumeration value="DAO"/>
+    <enumeration value="DAP"/>
+    <enumeration value="DAQ"/>
+    <enumeration value="DL"/>
+    <enumeration value="EG"/>
+    <enumeration value="EP"/>
+    <enumeration value="ER"/>
+    <enumeration value="FAA"/>
+    <enumeration value="FAB"/>
+    <enumeration value="FAC"/>
+    <enumeration value="FC"/>
+    <enumeration value="FH"/>
+    <enumeration value="FI"/>
+    <enumeration value="GAA"/>
+    <enumeration value="HAA"/>
+    <enumeration value="HD"/>
+    <enumeration value="HH"/>
+    <enumeration value="IAA"/>
+    <enumeration value="IAB"/>
+    <enumeration value="ID"/>
+    <enumeration value="IF"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="KO"/>
+    <enumeration value="L1"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAA"/>
+    <enumeration value="LAB"/>
+    <enumeration value="LF"/>
+    <enumeration value="MAE"/>
+    <enumeration value="MI"/>
+    <enumeration value="ML"/>
+    <enumeration value="NAA"/>
+    <enumeration value="OA"/>
+    <enumeration value="PA"/>
+    <enumeration value="PAA"/>
+    <enumeration value="PC"/>
+    <enumeration value="PL"/>
+    <enumeration value="PRV"/>
+    <enumeration value="RAB"/>
+    <enumeration value="RAC"/>
+    <enumeration value="RAD"/>
+    <enumeration value="RAF"/>
+    <enumeration value="RE"/>
+    <enumeration value="RF"/>
+    <enumeration value="RH"/>
+    <enumeration value="RV"/>
+    <enumeration value="SA"/>
+    <enumeration value="SAA"/>
+    <enumeration value="SAD"/>
+    <enumeration value="SAE"/>
+    <enumeration value="SAI"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SM"/>
+    <enumeration value="SU"/>
+    <enumeration value="TAB"/>
+    <enumeration value="TAC"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="V1"/>
+    <enumeration value="V2"/>
+    <enumeration value="WH"/>
+    <enumeration value="XAA"/>
+    <enumeration value="YY"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="19">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="20">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="21">
+    <enumeration value="102"/>
+  </cl>
 </codedb>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EN16931.sch
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EN16931.sch	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EN16931.sch	(revision 8504)
@@ -1,9500 +1,2905 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<schema xmlns="http://purl.oclc.org/dsdl/schematron" schemaVersion="iso">
-    <title>Schema for FACTUR-X; 1.0; EN16931-COMPLIANT (FULLY)</title>
-    <ns uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" prefix="rsm"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" prefix="qdt"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" prefix="ram"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" prefix="udt"/>
-    <pattern>
-        <rule context="//ram:AdditionalReferencedDocument">
-            <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
-                Each Additional supporting document (BG-24) shall contain a Supporting document reference (BT-122).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="(ram:BasisAmount)">
-                Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).</assert>
-            <assert test="(ram:CalculatedAmount)">
-                Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).</assert>
-            <assert test="(ram:CategoryCode)">
-                Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).</assert>
-            <assert test="(ram:RateApplicablePercent) or (ram:CategoryCode = &apos;O&apos;)">
-                Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.</assert>
-            <assert test="((ram:TaxPointDate) and not (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and not (ram:DueDateTypeCode))">
-                Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.</assert>
-            <assert test="ram:CalculatedAmount = round(ram:BasisAmount * ram:RateApplicablePercent) div 100 +0 or not (ram:RateApplicablePercent)">
-                VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2.</assert>
-            <assert test="string-length(substring-after(ram:CalculatedAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;Z&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amount (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âZero rated".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" shall equal 0 (zero).</assert>
-            <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.=&apos;S&apos;]">
-            <assert test="../ram:CalculatedAmount = round(../ram:BasisAmount * ../ram:RateApplicablePercent) div 100 +0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
-            <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
-                If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).</assert>
-            <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
-                If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).</assert>
-            <assert test="(ram:CategoryTradeTax/ram:CategoryCode)">
-                Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).</assert>
-            <assert test="true()">
-                Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Document level charge (BG-21) shall have a Document level charge amount (BT-99).</assert>
-            <assert test="(ram:CategoryTradeTax/ram:CategoryCode)">
-                Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).</assert>
-            <assert test="true()">
-                Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level charge amount (BT-92) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level charge base amount (BT-93) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableProductCharacteristic">
-            <assert test="(ram:Description) and (ram:Value)">
-                Each Item attribute (BG-32) shall contain an Item attribute name (BT-160) and an Item attribute value (BT-161).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableTradeSettlementFinancialCard">
-            <assert test="string-length(ram:ID)&lt;=6 and string-length(ram:ID)&gt;=4">
-                The last 4 to 6 digits of the Payment card primary account number (BT-87) shall be present if Payment card information (BG-18) is provided in the Invoice.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:IncludedSupplyChainTradeLineItem">
-            <assert test="(ram:AssociatedDocumentLineDocument/ram:LineID!=&apos;&apos;)">
-                Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).</assert>
-            <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)">
-                Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).</assert>
-            <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)">
-                An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).</assert>
-            <assert test="(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)">
-                Each Invoice line (BG-25) shall have an Invoice line net amount (BT-131).</assert>
-            <assert test="(ram:SpecifiedTradeProduct/ram:Name!=&apos;&apos;)">
-                Each Invoice line (BG-25) shall contain the Item name (BT-153).</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)">
-                Each Invoice line (BG-25) shall contain the Item net price (BT-146).</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount) &gt;= 0">
-                The Item net price (BT-146) shall NOT be negative.</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount &gt;= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)">
-                The Item gross price (BT-148) shall NOT be negative.</assert>
-            <assert test="ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID!=&apos;&apos; or not (ram:SpecifiedTradeProduct/ram:GlobalID)">
-                The Item standard identifier (BT-157) shall have a Scheme identifier</assert>
-            <assert test="(ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode/@listID!=&apos;&apos;) or not (ram:SpecifiedTradeProduct/ram:DesignatedProductClassification)">
-                The Item classification identifier (BT-158) shall have a Scheme identifier</assert>
-            <assert test="(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode)">
-                Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).</assert>
-            <assert test="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-                An Invoice shall at least have one VAT breakdown group (BG-23).</assert>
-            <assert test="string-length(substring-after(ram:SpecifiedTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line net amount (BT-131) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:PayeeTradeParty">
-            <assert test="(ram:Name) and (not(ram:Name = ../ram:SellerTradeParty/ram:Name) and not(ram:ID = ../ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))">
-                The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SellerTaxRepresentativeTradeParty">
-            <assert test="(ram:Name)">
-                The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:PostalTradeAddress)">
-                The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:PostalTradeAddress/ram:CountryID)">
-                The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]!=&apos;&apos;)">
-                Each Seller tax representative party (BG-11) shall have a Seller tax representative VAT identifier (BT-63).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SellerTradeParty">
-            <assert test="(ram:ID) or (ram:GlobalID) or (ram:SpecifiedLegalOrganization/ram:ID) or (ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;])">
-                In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod">
-            <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
-                If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).</assert>
-            <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
-                If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = &apos;false&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Invoice line allowance (BG-27) shall have an Invoice line allowance amount (BT-136).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).</assert>
-            <assert test="true()">
-                Invoice line allowance reason code (BT-140) and Invoice line allowance reason (BT-139) shall indicate the same type of allowance reason.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line allowance amount (BT-136) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line allowance base amount (BT-137) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = &apos;true&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Invoice line charge (BG-28) shall have an Invoice line charge amount (BT-141).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line charge (BG-28) shall have an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145).</assert>
-            <assert test="true()">
-                Invoice line charge reason code (BT-145) and Invoice line charge reason (BT144) shall indicate the same type of charge reason.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line charge amount (BT-141) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line charge base amount (BT-142) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]">
-            <assert test="contains(&apos; EL AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CX CY CZ DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW &apos;, concat(&apos; &apos;, substring(.,1,2), &apos; &apos;))">
-                The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix âELâ.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT", the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                A Document level allowance (BG-20) where VAT category code (BT-95) is "Not subject to VAT" shall not contain a Document level allowance VAT rate (BT-96).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT", the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                A Document level charge (BG-21) where the VAT category code (BT-102) is "Not subject to VAT" shall not contain a Document level charge VAT rate (BT-103).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Zero rated" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation">
-            <assert test="(ram:TaxBasisTotalAmount)">
-                An Invoice shall have the Invoice total amount without VAT (BT-109).</assert>
-            <assert test="(ram:GrandTotalAmount)">
-                An Invoice shall have the Invoice total amount with VAT (BT-112).</assert>
-            <assert test="(ram:DuePayableAmount)">
-                An Invoice shall have the Amount due for payment (BT-115).</assert>
-            <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:ActualAmount)* 10 * 10 ) div 100)">
-                Sum of allowances on document level (BT-107) = S Document level allowance amount (BT-92).</assert>
-            <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;])and not (ram:ChargeTotalAmount)) or ram:ChargeTotalAmount = &#13;&#10;((round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:ActualAmount)* 10 * 10 ) div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100))">
-                Sum of charges on document level (BT-108) = S Document level charge amount (BT-99).</assert>
-            <assert test="(ram:GrandTotalAmount = round(ram:TaxBasisTotalAmount*100 + ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]*100 +0) div 100) or ((ram:GrandTotalAmount = ram:TaxBasisTotalAmount) and not (ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]))">
-                Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).</assert>
-            <assert test="string-length(substring-after(ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2.</assert>
-            <assert test="string-length(substring-after(ram:AllowanceTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.</assert>
-            <assert test="string-length(substring-after(ram:ChargeTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2.</assert>
-            <assert test="string-length(substring-after(ram:TaxBasisTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.</assert>
-            <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]">
-                The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.</assert>
-            <assert test="string-length(substring-after(ram:GrandTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.</assert>
-            <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]">
-                The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.</assert>
-            <assert test="string-length(substring-after(ram:TotalPrepaidAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Paid amount (BT-113) is 2.</assert>
-            <assert test="string-length(substring-after(ram:RoundingAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Rounding amount (BT-114) is 2.</assert>
-            <assert test="string-length(substring-after(ram:DuePayableAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.</assert>
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))">
-                If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided.</assert>
-            <assert test="(ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 - ram:AllowanceTotalAmount*100 + ram:ChargeTotalAmount*100) div 100)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 - ram:AllowanceTotalAmount*100) div 100)) and not (ram:ChargeTotalAmount)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 + ram:ChargeTotalAmount*100) div 100)) and not (ram:AllowanceTotalAmount)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount * 100) div 100)) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))">
-                Invoice total amount without VAT (BT-109) = S Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).</assert>
-            <assert test="(ram:DuePayableAmount = (round(ram:GrandTotalAmount*100 - ram:TotalPrepaidAmount*100 + ram:RoundingAmount*100) div 100)) or ((ram:DuePayableAmount = ram:GrandTotalAmount + ram:RoundingAmount) and not (ram:TotalPrepaidAmount)) or ((ram:DuePayableAmount = (round(ram:GrandTotalAmount*100 - ram:TotalPrepaidAmount*100) div 100)) and not (ram:RoundingAmount)) or ((ram:DuePayableAmount = (round(ram:GrandTotalAmount*100) div 100)) and not (ram:TotalPrepaidAmount) and not (ram:RoundingAmount))">
-                Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).</assert>
-            <assert test="(ram:LineTotalAmount)">
-                An Invoice shall have the Sum of Invoice line net amount (BT-106).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]">
-            <assert test=". = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount)*10*10)div 100)">
-                Invoice total VAT amount (BT-110) = S VAT category tax amount (BT-117).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementPaymentMeans">
-            <assert test="(ram:TypeCode)">
-                A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode=&apos;30&apos; or ram:TypeCode=&apos;58&apos;]/ram:PayerPartyDebtorFinancialAccount">
-            <assert test="(ram:IBANID) or (ram:ProprietaryID)">
-                A Payment account identifier (BT-84) shall be present if Credit transfer (BG-16) information is provided in the Invoice.</assert>
-            <assert test="(ram:IBANID) or (ram:ProprietaryID)">
-                If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;AE&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âReverse charge".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âReverse chargeâ shall be 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;E&apos;]">
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) In a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).</assert>
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;E&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Exempt from VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âExempt from VAT".</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;G&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âExport outside the EU".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âExport outside the EUâ shall be 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.= &apos;K&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âIntra-community supply".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).</assert>
-            <assert test="(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString) or (../../ram:BillingSpecifiedPeriod/ram:StartDateTime) or (../../ram:BillingSpecifiedPeriod/ram:EndDateTime)">
-                In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.</assert>
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
-                In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Deliver to country code (BT-80) shall not be blank.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;L&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100)">
-                For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IGIC", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is âIGICâ and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
-            <assert test="true()">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IGIC" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;M&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100)">
-                For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IPSI", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is âIPSIâ and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
-            <assert test="true()">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IPSI" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;O&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âNot subject to VAT".</assert>
-            <assert test="ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âNot subject to VATâ shall be 0 (zero).</assert>
-            <assert test="(ram:ExemptionReason) or (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).</assert>
-            <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain other VAT breakdown groups (BG-23).</assert>
-            <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is not "Not subject to VAT".</assert>
-            <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".</assert>
-            <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level charges (BG-21) where Document level charge VAT category code (BT-102) is not "Not subject to VAT".</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT", the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intracommunity supply" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" the invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" the Invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-46).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                An Invoice line (BG-25) where the VAT category code (BT-151) is "Not subject to VAT" shall not contain an Invoiced item VAT rate (BT-152).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" the Invoiced item VAT rate (BT-152) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Zero rated" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice">
-            <assert test="(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID != &apos;&apos;)">
-                An Invoice shall have a Specification identifier (BT-24).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:ID !=&apos;&apos;)">
-                An Invoice shall have an Invoice number (BT-1).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format=&apos;102&apos;]!=&apos;&apos;)">
-                An Invoice shall have an Invoice issue date (BT-2).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:TypeCode!=&apos;&apos;)">
-                An Invoice shall have an Invoice type code (BT-3).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode!=&apos;&apos;)">
-                An Invoice shall have an Invoice currency code (BT-5).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name!=&apos;&apos;)">
-                An Invoice shall contain the Seller name (BT-27).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name!=&apos;&apos;)">
-                An Invoice shall contain the Buyer name (BT-44).</assert>
-            <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress">
-                An Invoice shall contain the Seller postal address (BG-5).</assert>
-            <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
-                The Seller postal address (BG-5) shall contain a Seller country code (BT-40).</assert>
-            <assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID/@schemeID!=&apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)">
-                The Seller electronic address (BT-34) shall have a Scheme identifier.</assert>
-            <assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID/@schemeID!=&apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)">
-                The Buyer electronic address (BT-49) shall have a Scheme identifier.</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âStandard ratedâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âZero ratedâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExempt from VATâ shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âReverse chargeâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIntra-community supplyâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Intra-community supply".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExport outside the EUâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU".</assert>
-            <assert test="not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or (     count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;])=1 and     (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;] or    //ram:CategoryTradeTax[ram:CategoryCode=&apos;O&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âNot subject to VATâ shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIGICâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC".</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIPSIâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IPSI".</assert>
-            <assert test="(number(//ram:DuePayableAmount) &gt; 0 and ((//ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime) or (//ram:SpecifiedTradePaymentTerms/ram:Description))) or not(number(//ram:DuePayableAmount)&gt;0)">
-                In case the Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.</assert>
-            <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress">
-                An Invoice shall contain the Buyer postal address (BG-8).</assert>
-            <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
-                The Buyer postal address shall contain a Buyer country code (BT-55).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:CategoryCode">
-            <report test="true()">
-                Element 'ram:CategoryCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ControlRequirementIndicator">
-            <report test="true()">
-                Element 'ram:ControlRequirementIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote">
-            <assert test="count(ram:Content)=1">
-                Element 'ram:Content' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode">
-            <report test="true()">
-                Element 'ram:ContentCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Content[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Content[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Subject">
-            <report test="true()">
-                Element 'ram:Subject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode">
-            <let name="codeValue3" value="."/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
-                Value of 'ram:SubjectCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID">
-            <report test="true()">
-                Element 'ram:LanguageID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Purpose">
-            <report test="true()">
-                Element 'ram:Purpose' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:RevisionDateTime">
-            <report test="true()">
-                Element 'ram:RevisionDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
-            <let name="codeValue1" value="."/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=1]/enumeration[@value=$codeValue1]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:VersionID">
-            <report test="true()">
-                Element 'ram:VersionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext">
-            <assert test="count(ram:BusinessProcessSpecifiedDocumentContextParameter)&lt;=1">
-                Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GuidelineSpecifiedDocumentContextParameter)=1">
-                Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:ApplicationSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:ApplicationSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BIMSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:BIMSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:SpecifiedDocumentVersion">
-            <report test="true()">
-                Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:Value">
-            <report test="true()">
-                Element 'ram:Value' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:SpecifiedDocumentVersion">
-            <report test="true()">
-                Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:Value">
-            <report test="true()">
-                Element 'ram:Value' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:MessageStandardSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:MessageStandardSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:ScenarioSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:ScenarioSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:SpecifiedTransactionID">
-            <report test="true()">
-                Element 'ram:SpecifiedTransactionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:SubsetSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:SubsetSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:TestIndicator">
-            <report test="true()">
-                Element 'ram:TestIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction">
-            <assert test="count(ram:IncludedSupplyChainTradeLineItem)&gt;=1">
-                Element 'ram:IncludedSupplyChainTradeLineItem' must occur at least 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement">
-            <assert test="count(ram:SellerTradeParty)=1">
-                Element 'ram:SellerTradeParty' must occur exactly 1 times.</assert>
-            <assert test="count(ram:BuyerTradeParty)=1">
-                Element 'ram:BuyerTradeParty' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:Name)&lt;=1">
-                Element 'ram:Name' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:AttachmentBinaryObject)&lt;=1">
-                Element 'ram:AttachmentBinaryObject' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@characterSetCode]">
-            <report test="true()">
-                Attribute @characterSetCode' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@encodingCode]">
-            <report test="true()">
-                Attribute @encodingCode' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@mimeCode]">
-            <let name="codeValue19" value="@mimeCode"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
-                Value of '@mimeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@uri]">
-            <report test="true()">
-                Attribute @uri' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode">
-            <let name="codeValue18" value="."/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ApplicableTradeDeliveryTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradeDeliveryTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerAgentTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAssignedAccountantTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerAssignedAccountantTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerRequisitionerTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerRequisitionerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerTaxRepresentativeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
-                Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <report test="true()">
-                Element 'ram:FaxUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue14" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue15" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue16" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=16]/enumeration[@value=$codeValue16]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:DemandForecastReferencedDocument">
-            <report test="true()">
-                Element 'ram:DemandForecastReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:OrderResponseReferencedDocument">
-            <report test="true()">
-                Element 'ram:OrderResponseReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PriceListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PriceListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty">
-            <report test="true()">
-                Element 'ram:ProductEndUserTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PromotionalDealReferencedDocument">
-            <report test="true()">
-                Element 'ram:PromotionalDealReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PurchaseConditionsReferencedDocument">
-            <report test="true()">
-                Element 'ram:PurchaseConditionsReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument">
-            <report test="true()">
-                Element 'ram:QuotationReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:Reference">
-            <report test="true()">
-                Element 'ram:Reference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:RequisitionerReferencedDocument">
-            <report test="true()">
-                Element 'ram:RequisitionerReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty">
-            <report test="true()">
-                Element 'ram:SalesAgentTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerAssignedAccountantTradeParty">
-            <report test="true()">
-                Element 'ram:SellerAssignedAccountantTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:SpecifiedTaxRegistration)=1">
-                Element 'ram:SpecifiedTaxRegistration' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization">
-            <report test="true()">
-                Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue17" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:Description)&lt;=1">
-                Element 'ram:Description' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <report test="true()">
-                Element 'ram:FaxUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue10" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue11" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SupplyInstructionReferencedDocument">
-            <report test="true()">
-                Element 'ram:SupplyInstructionReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:UltimateCustomerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery">
-            <assert test="(ram:ShipToTradeParty/ram:PostalTradeAddress and ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;) or not (ram:ShipToTradeParty/ram:PostalTradeAddress)">
-                Each Deliver to address (BG-15) shall contain a Deliver to country code (BT-80).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:DescriptionBinaryObject">
-            <report test="true()">
-                Element 'ram:DescriptionBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:EarliestOccurrenceDateTime">
-            <report test="true()">
-                Element 'ram:EarliestOccurrenceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:LatestOccurrenceDateTime">
-            <report test="true()">
-                Element 'ram:LatestOccurrenceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceLogisticsLocation">
-            <report test="true()">
-                Element 'ram:OccurrenceLogisticsLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:OccurrenceSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:UnitQuantity">
-            <report test="true()">
-                Element 'ram:UnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDespatchSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualDespatchSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualPickUpSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualPickUpSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualReceiptSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualReceiptSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ConsumptionReportReferencedDocument">
-            <report test="true()">
-                Element 'ram:ConsumptionReportReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument">
-            <report test="true()">
-                Element 'ram:DeliveryNoteReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:PackingListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PackingListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:PreviousDeliverySupplyChainEvent">
-            <report test="true()">
-                Element 'ram:PreviousDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment">
-            <report test="true()">
-                Element 'ram:RelatedSupplyChainConsignment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty">
-            <report test="true()">
-                Element 'ram:ShipFromTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GlobalID)&lt;=1">
-                Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue20" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization">
-            <report test="true()">
-                Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration">
-            <report test="true()">
-                Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty">
-            <report test="true()">
-                Element 'ram:UltimateShipToTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
-            <assert test="count(ram:PaymentReference)&lt;=1">
-                Element 'ram:PaymentReference' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:InvoiceCurrencyCode)=1">
-                Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ApplicableTradeTax)&gt;=1">
-                Element 'ram:ApplicableTradeTax' must occur at least 1 times.</assert>
-            <assert test="count(ram:SpecifiedTradePaymentTerms)&lt;=1">
-                Element 'ram:SpecifiedTradePaymentTerms' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:SpecifiedTradeSettlementHeaderMonetarySummation)=1">
-                Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ReceivableSpecifiedTradeAccountingAccount)&lt;=1">
-                Element 'ram:ReceivableSpecifiedTradeAccountingAccount' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="count(ram:CalculatedAmount)=1">
-                Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:BasisAmount)=1">
-                Element 'ram:BasisAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
-            <let name="codeValue23" value="."/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=23]/enumeration[@value=$codeValue23]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
-            <let name="codeValue24" value="."/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=24]/enumeration[@value=$codeValue24]">
-                Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate/udt:Date">
-            <report test="true()">
-                Element 'udt:Date' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate/udt:DateString[@format]">
-            <let name="codeValue25" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=25]/enumeration[@value=$codeValue25]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:CompleteDateTime">
-            <report test="true()">
-                Element 'ram:CompleteDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:ContinuousIndicator">
-            <report test="true()">
-                Element 'ram:ContinuousIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:DurationMeasure">
-            <report test="true()">
-                Element 'ram:DurationMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:InclusiveIndicator">
-            <report test="true()">
-                Element 'ram:InclusiveIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:OpenIndicator">
-            <report test="true()">
-                Element 'ram:OpenIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:SeasonCode">
-            <report test="true()">
-                Element 'ram:SeasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateFlexibilityCode">
-            <report test="true()">
-                Element 'ram:StartDateFlexibilityCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditReason">
-            <report test="true()">
-                Element 'ram:CreditReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditReasonCode">
-            <report test="true()">
-                Element 'ram:CreditReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceIssuerID">
-            <report test="true()">
-                Element 'ram:CreditorReferenceIssuerID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceType">
-            <report test="true()">
-                Element 'ram:CreditorReferenceType' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:CreditorReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:DuePayableAmount">
-            <report test="true()">
-                Element 'ram:DuePayableAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:FactoringAgreementReferencedDocument">
-            <report test="true()">
-                Element 'ram:FactoringAgreementReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:FactoringListReferencedDocument">
-            <report test="true()">
-                Element 'ram:FactoringListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:InvoiceApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceDateTime">
-            <report test="true()">
-                Element 'ram:InvoiceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceIssuerReference">
-            <report test="true()">
-                Element 'ram:InvoiceIssuerReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument">
-            <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
-                Each Preceding Invoice reference (BG-3) shall contain a Preceding Invoice reference (BT-25).</assert>
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue28" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=28]/enumeration[@value=$codeValue28]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty">
-            <report test="true()">
-                Element 'ram:InvoiceeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty">
-            <report test="true()">
-                Element 'ram:InvoicerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:LetterOfCreditReferencedDocument">
-            <report test="true()">
-                Element 'ram:LetterOfCreditReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:NextInvoiceDateTime">
-            <report test="true()">
-                Element 'ram:NextInvoiceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayableSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PayableSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GlobalID)&lt;=1">
-                Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact">
-            <report test="true()">
-                Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue21" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue22" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
-            <report test="true()">
-                Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration">
-            <report test="true()">
-                Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty">
-            <report test="true()">
-                Element 'ram:PayerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:PaymentApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentCurrencyCode">
-            <report test="true()">
-                Element 'ram:PaymentCurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentReference[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentReference[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ProFormaInvoiceReferencedDocument">
-            <report test="true()">
-                Element 'ram:ProFormaInvoiceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PurchaseSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PurchaseSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:AmountTypeCode">
-            <report test="true()">
-                Element 'ram:AmountTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:CostReferenceDimensionPattern">
-            <report test="true()">
-                Element 'ram:CostReferenceDimensionPattern' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:SetTriggerCode">
-            <report test="true()">
-                Element 'ram:SetTriggerCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SalesSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SalesSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment">
-            <report test="true()">
-                Element 'ram:SpecifiedAdvancePayment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedFinancialAdjustment">
-            <report test="true()">
-                Element 'ram:SpecifiedFinancialAdjustment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge">
-            <report test="true()">
-                Element 'ram:SpecifiedLogisticsServiceCharge' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge">
-            <assert test="count(ram:ChargeIndicator)=1">
-                Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ActualAmount)=1">
-                Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryTradeTax)=1">
-                Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CalculationPercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculatedAmount">
-            <report test="true()">
-                Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode">
-            <let name="codeValue26" value="."/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=26]/enumeration[@value=$codeValue26]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:DueDateTypeCode">
-            <report test="true()">
-                Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ExemptionReason">
-            <report test="true()">
-                Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ExemptionReasonCode">
-            <report test="true()">
-                Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator/udt:IndicatorString">
-            <report test="true()">
-                Element 'udt:IndicatorString' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:PrepaidIndicator">
-            <report test="true()">
-                Element 'ram:PrepaidIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms">
-            <assert test="count(ram:Description)&lt;=1">
-                Element 'ram:Description' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:DirectDebitMandateID)&lt;=1">
-                Element 'ram:DirectDebitMandateID' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradePaymentDiscountTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradePaymentPenaltyTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:FromEventCode">
-            <report test="true()">
-                Element 'ram:FromEventCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:InstructionTypeCode">
-            <report test="true()">
-                Element 'ram:InstructionTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount">
-            <report test="true()">
-                Element 'ram:PartialPaymentAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentPercent">
-            <report test="true()">
-                Element 'ram:PartialPaymentPercent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty">
-            <report test="true()">
-                Element 'ram:PayeeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PaymentMeansID">
-            <report test="true()">
-                Element 'ram:PaymentMeansID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:SettlementPeriodMeasure">
-            <report test="true()">
-                Element 'ram:SettlementPeriodMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementFinancialCard">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeSettlementFinancialCard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation">
-            <assert test="count(ram:LineTotalAmount)=1">
-                Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ChargeTotalAmount)&lt;=1">
-                Element 'ram:ChargeTotalAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:AllowanceTotalAmount)&lt;=1">
-                Element 'ram:AllowanceTotalAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:TaxBasisTotalAmount)=1">
-                Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TaxTotalAmount)&lt;=2">
-                Element 'ram:TaxTotalAmount' may occur at maximum 2 times.</assert>
-            <assert test="count(ram:RoundingAmount)&lt;=1">
-                Element 'ram:RoundingAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GrandTotalAmount)=1">
-                Element 'ram:GrandTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TotalPrepaidAmount)&lt;=1">
-                Element 'ram:TotalPrepaidAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:DuePayableAmount)=1">
-                Element 'ram:DuePayableAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:DuePayableAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount[@currencyID]">
-            <let name="codeValue27" value="@currencyID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=27]/enumeration[@value=$codeValue27]">
-                Value of '@currencyID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrossLineTotalAmount">
-            <report test="true()">
-                Element 'ram:GrossLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:NetIncludingTaxesLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetIncludingTaxesLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:NetLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ProductValueExcludingTobaccoTaxInformationAmount">
-            <report test="true()">
-                Element 'ram:ProductValueExcludingTobaccoTaxInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RetailValueExcludingTaxInformationAmount">
-            <report test="true()">
-                Element 'ram:RetailValueExcludingTaxInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RoundingAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RoundingAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID]">
-            <let name="codeValue27" value="@currencyID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=27]/enumeration[@value=$codeValue27]">
-                Value of '@currencyID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalAllowanceChargeAmount">
-            <report test="true()">
-                Element 'ram:TotalAllowanceChargeAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalDepositFeeInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalDepositFeeInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalDiscountAmount">
-            <report test="true()">
-                Element 'ram:TotalDiscountAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalRetailValueInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalRetailValueInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:Information)&lt;=1">
-                Element 'ram:Information' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CreditAvailableAmount">
-            <report test="true()">
-                Element 'ram:CreditAvailableAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CreditLimitAmount">
-            <report test="true()">
-                Element 'ram:CreditLimitAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ExpiryDate">
-            <report test="true()">
-                Element 'ram:ExpiryDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:InterestRatePercent">
-            <report test="true()">
-                Element 'ram:InterestRatePercent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:IssuingCompanyName">
-            <report test="true()">
-                Element 'ram:IssuingCompanyName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:MicrochipIndicator">
-            <report test="true()">
-                Element 'ram:MicrochipIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ValidFromDateTime">
-            <report test="true()">
-                Element 'ram:ValidFromDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:VerificationNumeric">
-            <report test="true()">
-                Element 'ram:VerificationNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:GuaranteeMethodCode">
-            <report test="true()">
-                Element 'ram:GuaranteeMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution">
-            <assert test="count(ram:BICID)=1">
-                Element 'ram:BICID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:AustralianBSBID">
-            <report test="true()">
-                Element 'ram:AustralianBSBID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:AustrianBankleitzahlID">
-            <report test="true()">
-                Element 'ram:AustrianBankleitzahlID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:CHIPSParticipantID">
-            <report test="true()">
-                Element 'ram:CHIPSParticipantID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:CHIPSUniversalID">
-            <report test="true()">
-                Element 'ram:CHIPSUniversalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:CanadianPaymentsAssociationID">
-            <report test="true()">
-                Element 'ram:CanadianPaymentsAssociationID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:ClearingSystemName">
-            <report test="true()">
-                Element 'ram:ClearingSystemName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:FedwireRoutingNumberID">
-            <report test="true()">
-                Element 'ram:FedwireRoutingNumberID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:GermanBankleitzahlID">
-            <report test="true()">
-                Element 'ram:GermanBankleitzahlID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:HellenicBankID">
-            <report test="true()">
-                Element 'ram:HellenicBankID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:HongKongBankID">
-            <report test="true()">
-                Element 'ram:HongKongBankID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:IndianFinancialSystemID">
-            <report test="true()">
-                Element 'ram:IndianFinancialSystemID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:IrishNSCID">
-            <report test="true()">
-                Element 'ram:IrishNSCID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:ItalianDomesticID">
-            <report test="true()">
-                Element 'ram:ItalianDomesticID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:JapanFinancialInstitutionCommonID">
-            <report test="true()">
-                Element 'ram:JapanFinancialInstitutionCommonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:LocationFinancialInstitutionAddress">
-            <report test="true()">
-                Element 'ram:LocationFinancialInstitutionAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:NewZealandNCCID">
-            <report test="true()">
-                Element 'ram:NewZealandNCCID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:PolishNationalClearingID">
-            <report test="true()">
-                Element 'ram:PolishNationalClearingID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:PortugueseNCCID">
-            <report test="true()">
-                Element 'ram:PortugueseNCCID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:RussianCentralBankID">
-            <report test="true()">
-                Element 'ram:RussianCentralBankID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:SICID">
-            <report test="true()">
-                Element 'ram:SICID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:SouthAfricanNCCID">
-            <report test="true()">
-                Element 'ram:SouthAfricanNCCID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:SpanishDomesticInterbankingID">
-            <report test="true()">
-                Element 'ram:SpanishDomesticInterbankingID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:SubDivisionBranchFinancialInstitution">
-            <report test="true()">
-                Element 'ram:SubDivisionBranchFinancialInstitution' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:SwissBCID">
-            <report test="true()">
-                Element 'ram:SwissBCID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:UKSortCodeID">
-            <report test="true()">
-                Element 'ram:UKSortCodeID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount">
-            <assert test="count(ram:IBANID)=1">
-                Element 'ram:IBANID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:AccountName">
-            <report test="true()">
-                Element 'ram:AccountName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:ProprietaryID">
-            <report test="true()">
-                Element 'ram:ProprietaryID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerSpecifiedDebtorFinancialInstitution">
-            <report test="true()">
-                Element 'ram:PayerSpecifiedDebtorFinancialInstitution' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PaymentChannelCode">
-            <report test="true()">
-                Element 'ram:PaymentChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PaymentMethodCode">
-            <report test="true()">
-                Element 'ram:PaymentMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SubtotalCalculatedTradeTax">
-            <report test="true()">
-                Element 'ram:SubtotalCalculatedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:TaxApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:UltimatePayeeTradeParty">
-            <report test="true()">
-                Element 'ram:UltimatePayeeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem">
-            <assert test="count(ram:SpecifiedTradeProduct)=1">
-                Element 'ram:SpecifiedTradeProduct' must occur exactly 1 times.</assert>
-            <assert test="count(ram:SpecifiedLineTradeAgreement)=1">
-                Element 'ram:SpecifiedLineTradeAgreement' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument">
-            <assert test="count(ram:LineID)=1">
-                Element 'ram:LineID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:IncludedNote)&lt;=1">
-                Element 'ram:IncludedNote' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote">
-            <assert test="count(ram:Content)=1">
-                Element 'ram:Content' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode">
-            <report test="true()">
-                Element 'ram:ContentCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:Content[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:Content[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:Subject">
-            <report test="true()">
-                Element 'ram:Subject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode">
-            <report test="true()">
-                Element 'ram:SubjectCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusCode">
-            <report test="true()">
-                Element 'ram:LineStatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode">
-            <report test="true()">
-                Element 'ram:LineStatusReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:ParentLineID">
-            <report test="true()">
-                Element 'ram:ParentLineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:DescriptionCode">
-            <report test="true()">
-                Element 'ram:DescriptionCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:IncludedSubordinateTradeLineItem">
-            <report test="true()">
-                Element 'ram:IncludedSubordinateTradeLineItem' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement">
-            <assert test="count(ram:NetPriceProductTradePrice)=1">
-                Element 'ram:NetPriceProductTradePrice' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ApplicableTradeDeliveryTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradeDeliveryTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID">
-            <report test="true()">
-                Element 'ram:IssuerAssignedID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerReference">
-            <report test="true()">
-                Element 'ram:BuyerReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerRequisitionerTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerRequisitionerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument">
-            <report test="true()">
-                Element 'ram:ContractReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:DemandForecastReferencedDocument">
-            <report test="true()">
-                Element 'ram:DemandForecastReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice">
-            <assert test="count(ram:ChargeAmount)=1">
-                Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:AppliedTradeAllowanceCharge)&lt;=1">
-                Element 'ram:AppliedTradeAllowanceCharge' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge">
-            <assert test="count(ram:ActualAmount)=1">
-                Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ActualAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ActualAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ActualTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:CalculationPercent">
-            <report test="true()">
-                Element 'ram:CalculationPercent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:CategoryTradeTax">
-            <report test="true()">
-                Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ChargeIndicator">
-            <report test="true()">
-                Element 'ram:ChargeIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:PrepaidIndicator">
-            <report test="true()">
-                Element 'ram:PrepaidIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:Reason">
-            <report test="true()">
-                Element 'ram:Reason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ReasonCode">
-            <report test="true()">
-                Element 'ram:ReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AssociatedReferencedDocument">
-            <report test="true()">
-                Element 'ram:AssociatedReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
-            <let name="codeValue7" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChangeReason">
-            <report test="true()">
-                Element 'ram:ChangeReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:DeliveryTradeLocation">
-            <report test="true()">
-                Element 'ram:DeliveryTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:IncludedTradeTax">
-            <report test="true()">
-                Element 'ram:IncludedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:MaximumQuantity">
-            <report test="true()">
-                Element 'ram:MaximumQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:MinimumQuantity">
-            <report test="true()">
-                Element 'ram:MinimumQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:OrderUnitConversionFactorNumeric">
-            <report test="true()">
-                Element 'ram:OrderUnitConversionFactorNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:TradeComparisonReferencePrice">
-            <report test="true()">
-                Element 'ram:TradeComparisonReferencePrice' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ValiditySpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:ValiditySpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:IncludedSpecifiedMarketplace">
-            <report test="true()">
-                Element 'ram:IncludedSpecifiedMarketplace' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ItemBuyerTradeParty">
-            <report test="true()">
-                Element 'ram:ItemBuyerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ItemSellerTradeParty">
-            <report test="true()">
-                Element 'ram:ItemSellerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice">
-            <assert test="count(ram:ChargeAmount)=1">
-                Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:AppliedTradeAllowanceCharge">
-            <report test="true()">
-                Element 'ram:AppliedTradeAllowanceCharge' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:AssociatedReferencedDocument">
-            <report test="true()">
-                Element 'ram:AssociatedReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
-            <let name="codeValue7" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChangeReason">
-            <report test="true()">
-                Element 'ram:ChangeReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:DeliveryTradeLocation">
-            <report test="true()">
-                Element 'ram:DeliveryTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax">
-            <report test="true()">
-                Element 'ram:IncludedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:MaximumQuantity">
-            <report test="true()">
-                Element 'ram:MaximumQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:MinimumQuantity">
-            <report test="true()">
-                Element 'ram:MinimumQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:OrderUnitConversionFactorNumeric">
-            <report test="true()">
-                Element 'ram:OrderUnitConversionFactorNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:TradeComparisonReferencePrice">
-            <report test="true()">
-                Element 'ram:TradeComparisonReferencePrice' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ValiditySpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:ValiditySpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:PromotionalDealReferencedDocument">
-            <report test="true()">
-                Element 'ram:PromotionalDealReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument">
-            <report test="true()">
-                Element 'ram:QuotationReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:RequisitionerReferencedDocument">
-            <report test="true()">
-                Element 'ram:RequisitionerReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:SellerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:UltimateCustomerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery">
-            <assert test="count(ram:BilledQuantity)=1">
-                Element 'ram:BilledQuantity' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDespatchSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualDespatchSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualPickUpSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualPickUpSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualReceiptSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualReceiptSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCode]">
-            <let name="codeValue7" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ChargeFreeQuantity">
-            <report test="true()">
-                Element 'ram:ChargeFreeQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ConsumptionReportReferencedDocument">
-            <report test="true()">
-                Element 'ram:ConsumptionReportReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument">
-            <report test="true()">
-                Element 'ram:DeliveryNoteReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument">
-            <report test="true()">
-                Element 'ram:DespatchAdviceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchedQuantity">
-            <report test="true()">
-                Element 'ram:DespatchedQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:GrossWeightMeasure">
-            <report test="true()">
-                Element 'ram:GrossWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:IncludedSupplyChainPackaging">
-            <report test="true()">
-                Element 'ram:IncludedSupplyChainPackaging' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:NetWeightMeasure">
-            <report test="true()">
-                Element 'ram:NetWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackageQuantity">
-            <report test="true()">
-                Element 'ram:PackageQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackingListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PackingListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PerPackageUnitQuantity">
-            <report test="true()">
-                Element 'ram:PerPackageUnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ProductUnitQuantity">
-            <report test="true()">
-                Element 'ram:ProductUnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivedQuantity">
-            <report test="true()">
-                Element 'ram:ReceivedQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument">
-            <report test="true()">
-                Element 'ram:ReceivingAdviceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:RelatedSupplyChainConsignment">
-            <report test="true()">
-                Element 'ram:RelatedSupplyChainConsignment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:RequestedDeliverySupplyChainEvent">
-            <report test="true()">
-                Element 'ram:RequestedDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:RequestedQuantity">
-            <report test="true()">
-                Element 'ram:RequestedQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipFromTradeParty">
-            <report test="true()">
-                Element 'ram:ShipFromTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty">
-            <report test="true()">
-                Element 'ram:ShipToTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:SpecifiedDeliveryAdjustment">
-            <report test="true()">
-                Element 'ram:SpecifiedDeliveryAdjustment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:TheoreticalWeightMeasure">
-            <report test="true()">
-                Element 'ram:TheoreticalWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty">
-            <report test="true()">
-                Element 'ram:UltimateShipToTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement">
-            <assert test="count(ram:ApplicableTradeTax)=1">
-                Element 'ram:ApplicableTradeTax' must occur exactly 1 times.</assert>
-            <assert test="count(ram:SpecifiedTradeSettlementLineMonetarySummation)=1">
-                Element 'ram:SpecifiedTradeSettlementLineMonetarySummation' must occur exactly 1 times.</assert>
-            <assert test="count(ram:AdditionalReferencedDocument)&lt;=1">
-                Element 'ram:AdditionalReferencedDocument' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:ReceivableSpecifiedTradeAccountingAccount)&lt;=1">
-                Element 'ram:ReceivableSpecifiedTradeAccountingAccount' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode">
-            <let name="codeValue9" value="."/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount">
-            <report test="true()">
-                Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
-            <let name="codeValue8" value="."/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode">
-            <report test="true()">
-                Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason">
-            <report test="true()">
-                Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
-            <report test="true()">
-                Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:CompleteDateTime">
-            <report test="true()">
-                Element 'ram:CompleteDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:ContinuousIndicator">
-            <report test="true()">
-                Element 'ram:ContinuousIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:DurationMeasure">
-            <report test="true()">
-                Element 'ram:DurationMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:InclusiveIndicator">
-            <report test="true()">
-                Element 'ram:InclusiveIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:OpenIndicator">
-            <report test="true()">
-                Element 'ram:OpenIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:SeasonCode">
-            <report test="true()">
-                Element 'ram:SeasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateFlexibilityCode">
-            <report test="true()">
-                Element 'ram:StartDateFlexibilityCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:DiscountIndicator">
-            <report test="true()">
-                Element 'ram:DiscountIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceIssuerReference">
-            <report test="true()">
-                Element 'ram:InvoiceIssuerReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument">
-            <report test="true()">
-                Element 'ram:InvoiceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:PayableSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PayableSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:PaymentReference">
-            <report test="true()">
-                Element 'ram:PaymentReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:PurchaseSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PurchaseSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:AmountTypeCode">
-            <report test="true()">
-                Element 'ram:AmountTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:CostReferenceDimensionPattern">
-            <report test="true()">
-                Element 'ram:CostReferenceDimensionPattern' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:SetTriggerCode">
-            <report test="true()">
-                Element 'ram:SetTriggerCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SalesSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SalesSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedFinancialAdjustment">
-            <report test="true()">
-                Element 'ram:SpecifiedFinancialAdjustment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedLogisticsServiceCharge">
-            <report test="true()">
-                Element 'ram:SpecifiedLogisticsServiceCharge' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge">
-            <assert test="count(ram:ActualAmount)=1">
-                Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CalculationPercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax">
-            <report test="true()">
-                Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator/udt:IndicatorString">
-            <report test="true()">
-                Element 'udt:IndicatorString' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:PrepaidIndicator">
-            <report test="true()">
-                Element 'ram:PrepaidIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradePaymentTerms">
-            <report test="true()">
-                Element 'ram:SpecifiedTradePaymentTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementFinancialCard">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeSettlementFinancialCard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation">
-            <assert test="count(ram:LineTotalAmount)=1">
-                Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:AllowanceTotalAmount">
-            <report test="true()">
-                Element 'ram:AllowanceTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:ChargeTotalAmount">
-            <report test="true()">
-                Element 'ram:ChargeTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:GrandTotalAmount">
-            <report test="true()">
-                Element 'ram:GrandTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:GrossLineTotalAmount">
-            <report test="true()">
-                Element 'ram:GrossLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:NetIncludingTaxesLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetIncludingTaxesLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:NetLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:ProductWeightLossInformationAmount">
-            <report test="true()">
-                Element 'ram:ProductWeightLossInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TaxBasisTotalAmount">
-            <report test="true()">
-                Element 'ram:TaxBasisTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TaxTotalAmount">
-            <report test="true()">
-                Element 'ram:TaxTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TotalAllowanceChargeAmount">
-            <report test="true()">
-                Element 'ram:TotalAllowanceChargeAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TotalRetailValueInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalRetailValueInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SubtotalCalculatedTradeTax">
-            <report test="true()">
-                Element 'ram:SubtotalCalculatedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:TotalAdjustmentAmount">
-            <report test="true()">
-                Element 'ram:TotalAdjustmentAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:AdditionalReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableMaterialGoodsCharacteristic">
-            <report test="true()">
-                Element 'ram:ApplicableMaterialGoodsCharacteristic' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic">
-            <assert test="count(ram:Description)=1">
-                Element 'ram:Description' must occur exactly 1 times.</assert>
-            <assert test="count(ram:Value)=1">
-                Element 'ram:Value' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ApplicableProductCharacteristicCondition">
-            <report test="true()">
-                Element 'ram:ApplicableProductCharacteristicCondition' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ApplicableReferencedStandard">
-            <report test="true()">
-                Element 'ram:ApplicableReferencedStandard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ContentTypeCode">
-            <report test="true()">
-                Element 'ram:ContentTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:MeasurementMethodCode">
-            <report test="true()">
-                Element 'ram:MeasurementMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueCode">
-            <report test="true()">
-                Element 'ram:ValueCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueDateTime">
-            <report test="true()">
-                Element 'ram:ValueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueIndicator">
-            <report test="true()">
-                Element 'ram:ValueIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueMeasure">
-            <report test="true()">
-                Element 'ram:ValueMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:ValueSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:Value[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:Value[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:AreaDensityMeasure">
-            <report test="true()">
-                Element 'ram:AreaDensityMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BrandName">
-            <report test="true()">
-                Element 'ram:BrandName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BrandOwnerTradeParty">
-            <report test="true()">
-                Element 'ram:BrandOwnerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:CertificationEvidenceReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:CertificationEvidenceReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ColourCode">
-            <report test="true()">
-                Element 'ram:ColourCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ColourDescription">
-            <report test="true()">
-                Element 'ram:ColourDescription' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification">
-            <assert test="count(ram:ClassCode)=1">
-                Element 'ram:ClassCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ApplicableReferencedStandard">
-            <report test="true()">
-                Element 'ram:ApplicableReferencedStandard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode">
-            <let name="codeValue5" value="@listID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
-                Value of 'ram:ClassCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listID]">
-            <let name="codeValue6" value="@listID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
-                Value of '@listID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassName">
-            <report test="true()">
-                Element 'ram:ClassName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassProductCharacteristic">
-            <report test="true()">
-                Element 'ram:ClassProductCharacteristic' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:SubClassCode">
-            <report test="true()">
-                Element 'ram:SubClassCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:SystemID">
-            <report test="true()">
-                Element 'ram:SystemID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:SystemName">
-            <report test="true()">
-                Element 'ram:SystemName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Designation">
-            <report test="true()">
-                Element 'ram:Designation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DrainedNetWeightMeasure">
-            <report test="true()">
-                Element 'ram:DrainedNetWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:EndItemName">
-            <report test="true()">
-                Element 'ram:EndItemName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:EndItemTypeCode">
-            <report test="true()">
-                Element 'ram:EndItemTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:FormattedCancellationAnnouncedLaunchDateTime">
-            <report test="true()">
-                Element 'ram:FormattedCancellationAnnouncedLaunchDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:FormattedLatestProductDataChangeDateTime">
-            <report test="true()">
-                Element 'ram:FormattedLatestProductDataChangeDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeID]">
-            <let name="codeValue4" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GrossWeightMeasure">
-            <report test="true()">
-                Element 'ram:GrossWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct">
-            <report test="true()">
-                Element 'ram:IncludedReferencedProduct' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IndividualTradeProductInstance">
-            <report test="true()">
-                Element 'ram:IndividualTradeProductInstance' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:InformationNote">
-            <report test="true()">
-                Element 'ram:InformationNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:InspectionReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:InspectionReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:LegalRightsOwnerTradeParty">
-            <report test="true()">
-                Element 'ram:LegalRightsOwnerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:LinearSpatialDimension">
-            <report test="true()">
-                Element 'ram:LinearSpatialDimension' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:MSDSReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:MSDSReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ManufacturerAssignedID">
-            <report test="true()">
-                Element 'ram:ManufacturerAssignedID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ManufacturerTradeParty">
-            <report test="true()">
-                Element 'ram:ManufacturerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:MaximumLinearSpatialDimension">
-            <report test="true()">
-                Element 'ram:MaximumLinearSpatialDimension' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:MinimumLinearSpatialDimension">
-            <report test="true()">
-                Element 'ram:MinimumLinearSpatialDimension' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:NetWeightMeasure">
-            <report test="true()">
-                Element 'ram:NetWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:SubordinateTradeCountrySubDivision">
-            <report test="true()">
-                Element 'ram:SubordinateTradeCountrySubDivision' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:PresentationSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:PresentationSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ProductGroupID">
-            <report test="true()">
-                Element 'ram:ProductGroupID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SubBrandName">
-            <report test="true()">
-                Element 'ram:SubBrandName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:TradeName">
-            <report test="true()">
-                Element 'ram:TradeName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:UseDescription">
-            <report test="true()">
-                Element 'ram:UseDescription' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:VariableMeasureIndicator">
-            <report test="true()">
-                Element 'ram:VariableMeasureIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ValuationBreakdownStatement">
-            <report test="true()">
-                Element 'rsm:ValuationBreakdownStatement' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
+<schema xmlns="http://purl.oclc.org/dsdl/schematron"
+    queryBinding="xslt2"
+    schemaVersion="iso">
+  <title>Schema for Factur-X; 1.0.07; EN16931-COMPLIANT (FULLY)</title>
+  <ns uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" prefix="rsm"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" prefix="qdt"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" prefix="ram"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" prefix="udt"/>
+  <pattern>
+    <rule context="//ram:AdditionalReferencedDocument">
+      <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
+	[BR-52]-Each Additional supporting document (BG-24) shall contain a Supporting document reference (BT-122).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="(ram:BasisAmount)">
+	[BR-45]-Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).</assert>
+      <assert test="(ram:CalculatedAmount)">
+	[BR-46]-Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).</assert>
+      <assert test="(ram:CategoryCode)">
+	[BR-47]-Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).</assert>
+      <assert test="(ram:RateApplicablePercent) or (ram:CategoryCode = &apos;O&apos;)">
+	[BR-48]-Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.</assert>
+      <assert test="((ram:TaxPointDate) and not (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and not (ram:DueDateTypeCode))">
+	[BR-CO-03]-Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.</assert>
+      <assert test="(round(.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent)) = 0 and (round(xs:decimal(ram:CalculatedAmount)) = 0)) or (round(.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent)) != 0 and ((abs(xs:decimal(ram:CalculatedAmount)) - 1 &lt;= round(abs(xs:decimal(ram:BasisAmount)) * (.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent) div 100) * 10 * 10) div 100 ) and (abs(xs:decimal(ram:CalculatedAmount)) + 1 &gt;= round(abs(xs:decimal(ram:BasisAmount)) * (.[normalize-space(upper-case(ram:TypeCode)) = &apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent) div 100) * 10 * 10) div 100 ))) or (not(exists(.[normalize-space(upper-case(ram:TypeCode))=&apos;VAT&apos;]/xs:decimal(ram:RateApplicablePercent))) and (round(xs:decimal(ram:CalculatedAmount)) = 0))">
+	[BR-CO-17]-VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.</assert>
+      <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-19]-The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2.</assert>
+      <assert test="string-length(substring-after(ram:CalculatedAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-20]-The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;Z&apos;]">
+      <assert test="(../ram:BasisAmount -1 &lt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount))*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100)) and (../ram:BasisAmount +1 &gt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount))*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100))">
+	[BR-Z-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amount (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Zero rated".</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-Z-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" shall equal 0 (zero).</assert>
+      <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
+	[BR-Z-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.=&apos;S&apos;]">
+      <assert test="(abs(xs:decimal(../ram:CalculatedAmount)) - 1 &lt; round(abs(xs:decimal(../ram:BasisAmount)) * ../ram:RateApplicablePercent) div 100 ) and (abs(xs:decimal(../ram:CalculatedAmount)) + 1 &gt; round(abs(xs:decimal(../ram:BasisAmount)) * ../ram:RateApplicablePercent) div 100 )">
+	[BR-S-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
+	[BR-S-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+      <assert test="every $rate in ../ram:RateApplicablePercent/xs:decimal(.) satisfies (../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;S&apos; and ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 10 * 10) div 100 + round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;S&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100 - round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;S&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100))">
+	[BR-S-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "Standard rated", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "Standard rated" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
+      <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
+	[BR-29]-If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).</assert>
+      <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
+	[BR-CO-19]-If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator=&apos;false&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-31]-Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).</assert>
+      <assert test="(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-32]-Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-33]-Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).</assert>
+      <assert test="true()">
+	[BR-CO-05]-Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-21]-Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-01]-The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-02]-The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator=&apos;true&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-36]-Each Document level charge (BG-21) shall have a Document level charge amount (BT-99).</assert>
+      <assert test="(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-37]-Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-38]-Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).</assert>
+      <assert test="true()">
+	[BR-CO-06]-Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-22]-Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-05]-The allowed maximum number of decimals for the Document level charge amount (BT-99) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-06]-The allowed maximum number of decimals for the Document level charge base amount (BT-100) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableProductCharacteristic">
+      <assert test="(ram:Description) and (ram:Value)">
+	[BR-54]-Each Item attribute (BG-32) shall contain an Item attribute name (BT-160) and an Item attribute value (BT-161).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableTradeSettlementFinancialCard">
+      <assert test="string-length(ram:ID)&lt;=10">
+	[BR-51]-In accordance with card payments security standards an invoice should never include a full card primary account number (BT-87). At the moment PCI Security Standards Council has defined that the first 6 digits and last 4 digits are the maximum number of digits to be shown.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:IncludedSupplyChainTradeLineItem">
+      <assert test="(ram:AssociatedDocumentLineDocument/ram:LineID!=&apos;&apos;)">
+	[BR-21]-Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).</assert>
+      <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)">
+	[BR-22]-Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).</assert>
+      <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)">
+	[BR-23]-An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).</assert>
+      <assert test="(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)">
+	[BR-24]-Each Invoice line (BG-25) shall have an Invoice line net amount (BT-131).</assert>
+      <assert test="(ram:SpecifiedTradeProduct/ram:Name!=&apos;&apos;)">
+	[BR-25]-Each Invoice line (BG-25) shall contain the Item name (BT-153).</assert>
+      <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)">
+	[BR-26]-Each Invoice line (BG-25) shall contain the Item net price (BT-146).</assert>
+      <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount) &gt;= 0">
+	[BR-27]-The Item net price (BT-146) shall NOT be negative.</assert>
+      <assert test="(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount &gt;= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)">
+	[BR-28]-The Item gross price (BT-148) shall NOT be negative.</assert>
+      <assert test="ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID!=&apos;&apos; or not (ram:SpecifiedTradeProduct/ram:GlobalID)">
+	[BR-64]-The Item standard identifier (BT-157) shall have a Scheme identifier.</assert>
+      <assert test="(ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode/@listID!=&apos;&apos;) or not (ram:SpecifiedTradeProduct/ram:DesignatedProductClassification)">
+	[BR-65]-The Item classification identifier (BT-158) shall have a Scheme identifier.</assert>
+      <assert test="(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-CO-04]-Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).</assert>
+      <assert test="string-length(substring-after(ram:SpecifiedTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-23]-The allowed maximum number of decimals for the Invoice line net amount (BT-131) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:PayeeTradeParty">
+      <assert test="(ram:Name) and (not(ram:Name = ../ram:SellerTradeParty/ram:Name) and not(ram:ID = ../ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))">
+	[BR-17]-The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SellerTaxRepresentativeTradeParty">
+      <assert test="(ram:Name)">
+	[BR-18]-The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:PostalTradeAddress)">
+	[BR-19]-The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:PostalTradeAddress/ram:CountryID)">
+	[BR-20]-The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]!=&apos;&apos;)">
+	[BR-56]-Each Seller tax representative party (BG-11) shall have a Seller tax representative VAT identifier (BT-63).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SellerTradeParty">
+      <assert test="(ram:ID) or (ram:GlobalID) or (ram:SpecifiedLegalOrganization/ram:ID) or (ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;])">
+	[BR-CO-26]-In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod">
+      <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
+	[BR-30]-If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).</assert>
+      <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
+	[BR-CO-20]-If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = &apos;false&apos;]">
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-42]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = &apos;false&apos;]&#13;&#10;">
+      <assert test="(../ram:ActualAmount)">
+	[BR-41]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance amount (BT-136).</assert>
+      <assert test="true()">
+	[BR-CO-07]-Invoice line allowance reason code (BT-140) and Invoice line allowance reason (BT-139) shall indicate the same type of allowance reason.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-23]-Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-24]-The allowed maximum number of decimals for the Invoice line allowance amount (BT-136) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-25]-The allowed maximum number of decimals for the Invoice line allowance base amount (BT-137) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = &apos;true&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-43]-Each Invoice line charge (BG-28) shall have an Invoice line charge amount (BT-141).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-44]-Each Invoice line charge (BG-28) shall have an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145).</assert>
+      <assert test="true()">
+	[BR-CO-08]-Invoice line charge reason code (BT-145) and Invoice line charge reason (BT-144) shall indicate the same type of charge reason.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-24]-Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-27]-The allowed maximum number of decimals for the Invoice line charge amount (BT-141) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-28]-The allowed maximum number of decimals for the Invoice line charge base amount (BT-142) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]">
+      <assert test="contains(&apos; 1A AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH EL ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS XI YE YT ZA ZM ZW &apos;, concat(&apos; &apos;, substring(.,1,2), &apos; &apos;))">
+	[BR-CO-09]-The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix âELâ.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge">
+      <assert test="(ram:ChargeIndicator)">
+	[BR-66]-Each Specified Trade Allowance Charge (BG-20)(BG-21) shall contain a Charge Indicator.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT", the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Intra-community supply" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-O-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-06]-A Document level allowance (BG-20) where VAT category code (BT-95) is "Not subject to VAT" shall not contain a Document level allowance VAT rate (BT-96).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT", the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-O-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-07]-A Document level charge (BG-21) where the VAT category code (BT-102) is "Not subject to VAT" shall not contain a Document level charge VAT rate (BT-103).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-04]-An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Zero rated" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation">
+      <assert test="xs:decimal(ram:LineTotalAmount) = round(xs:decimal(sum(../../ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)) * xs:decimal(100)) div xs:decimal(100)">
+	[BR-CO-10]-Sum of Invoice line net amount (BT-106) = Î£ Invoice line net amount (BT-131).</assert>
+      <assert test="(ram:LineTotalAmount)">
+	[BR-12]-An Invoice shall have the Sum of Invoice line net amount (BT-106).</assert>
+      <assert test="(ram:TaxBasisTotalAmount)">
+	[BR-13]-An Invoice shall have the Invoice total amount without VAT (BT-109).</assert>
+      <assert test="(ram:GrandTotalAmount)">
+	[BR-14]-An Invoice shall have the Invoice total amount with VAT (BT-112).</assert>
+      <assert test="(ram:DuePayableAmount)">
+	[BR-15]-An Invoice shall have the Amount due for payment (BT-115).</assert>
+      <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:ActualAmount)* 10 * 10 ) div 100)">
+	[BR-CO-11]-Sum of allowances on document level (BT-107) = Î£ Document level allowance amount (BT-92).</assert>
+      <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;])and not (ram:ChargeTotalAmount)) or (round (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount * 10 * 10) div 100)= &#13;&#10;round(((round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:ActualAmount)* 10 * 10 ) div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100))*10*10) div 100">
+	[BR-CO-12]-Sum of charges on document level (BT-108) = Î£ Document level charge amount (BT-99).</assert>
+      <assert test="(xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) or &#13;&#10;    ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount)) *10 * 10) div 100)  and not (ram:ChargeTotalAmount)) or &#13;&#10;    ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100)  and not (ram:AllowanceTotalAmount)) or &#13;&#10;    ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount))  *10 * 10) div 100) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))">
+	[BR-CO-13]-Invoice total amount without VAT (BT-109) = Î£ Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).</assert>
+      <assert test="every $Currency &#13;&#10;                                in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode&#13;&#10;                                satisfies (  &#13;&#10;                                  count ( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=$Currency] ) eq 1 and  &#13;&#10;                                  (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = round( &#13;&#10;                                    (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount) + &#13;&#10;                                    (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxTotalAmount[@currencyID=$Currency]))) * 10 * 10) div 100)) or&#13;&#10;                                (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount)))">
+	[BR-CO-15]-Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).</assert>
+      <assert test="(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))">
+	[BR-CO-16]-Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).</assert>
+      <assert test="string-length(substring-after(ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-09]-The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2.</assert>
+      <assert test="string-length(substring-after(ram:AllowanceTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-10]-The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.</assert>
+      <assert test="string-length(substring-after(ram:ChargeTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-11]-The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2.</assert>
+      <assert test="string-length(substring-after(ram:TaxBasisTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-12]-The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.</assert>
+      <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]">
+	[BR-DEC-13]-The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.</assert>
+      <assert test="string-length(substring-after(ram:GrandTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-14]-The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.</assert>
+      <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]">
+	[BR-DEC-15]-The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.</assert>
+      <assert test="string-length(substring-after(ram:TotalPrepaidAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-16]-The allowed maximum number of decimals for the Paid amount (BT-113) is 2.</assert>
+      <assert test="string-length(substring-after(ram:RoundingAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-17]-The allowed maximum number of decimals for the Rounding amount (BT-114) is 2.</assert>
+      <assert test="string-length(substring-after(ram:DuePayableAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-18]-The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.</assert>
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))">
+	[BR-53]-If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]">
+      <assert test=". = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount)*10*10)div 100)">
+	[BR-CO-14]-Invoice total VAT amount (BT-110) = Î£ VAT category tax amount (BT-117).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementPaymentMeans">
+      <assert test="(ram:TypeCode)">
+	[BR-49]-A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).</assert>
+      <assert test="(ram:PayeePartyCreditorFinancialAccount/ram:IBANID) or (ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID) or (not(ram:PayeePartyCreditorFinancialAccount/ram:IBANID) and not(ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID))">
+	[BR-CO-27]-Either the IBAN or a Proprietary ID (BT-84) shall be used.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode=&apos;30&apos; or ram:TypeCode=&apos;58&apos;]/ram:PayerPartyDebtorFinancialAccount">
+      <assert test="(ram:IBANID) or (ram:ProprietaryID)">
+	[BR-50]-A Payment account identifier (BT-84) shall be present if Credit transfer (BG-16) information is provided in the Invoice.</assert>
+      <assert test="(ram:IBANID) or (ram:ProprietaryID)">
+	[BR-61]-If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
+      <assert test="ram:ApplicableTradeTax">
+	[BR-CO-18]-An Invoice shall at least have one VAT breakdown group (BG-23).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;AE&apos;]">
+      <assert test="(../ram:BasisAmount -1 &lt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100)) and (../ram:BasisAmount +1 &gt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100))">
+	[BR-AE-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Reverse charge".</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-AE-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-AE-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;E&apos;]">
+      <assert test="(../ram:BasisAmount - 1 &lt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;E&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100)) and (../ram:BasisAmount + 1 &gt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;E&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100))">
+	[BR-E-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Exempt from VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Exempt from VAT".</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-E-09]-The VAT category tax amount (BT-117) In a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-E-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;G&apos;]">
+      <assert test="(../ram:BasisAmount -1 &lt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100)) and (../ram:BasisAmount +1 &gt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100))">
+	[BR-G-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Export outside the EU".</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-G-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-G-10]-A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.= &apos;K&apos;]">
+      <assert test="(../ram:BasisAmount - 1 &lt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100)) and (../ram:BasisAmount + 1 &gt; (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100))">
+	[BR-IC-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Intra-community supply".</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-IC-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-IC-10]-A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).</assert>
+      <assert test="(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString) or (../../ram:BillingSpecifiedPeriod/ram:StartDateTime) or (../../ram:BillingSpecifiedPeriod/ram:EndDateTime)">
+	[BR-IC-11]-In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.</assert>
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+	[BR-IC-12]-In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Deliver to country code (BT-80) shall not be blank.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="every $rate in ../ram:RateApplicablePercent/xs:decimal(.) satisfies (../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;L&apos; and ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 10 * 10) div 100 + round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100 - round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100))">
+	[BR-AF-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IGIC", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "IGIC" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
+      <assert test="true()">
+	[BR-AF-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
+	[BR-AF-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IGIC" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="every $rate in ../ram:RateApplicablePercent/xs:decimal(.) satisfies (../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;M&apos; and ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 10 * 10) div 100 + round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100 - round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 10 * 10) div 100))">
+	[BR-AG-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IPSI", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is "IPSI" and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
+      <assert test="true()">
+	[BR-AG-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
+	[BR-AG-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IPSI" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;O&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount))*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[(ram:ChargeIndicator/udt:Indicator cast as xs:boolean)=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/xs:decimal(ram:ActualAmount))*10*10)div 100)">
+	[BR-O-08]-In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are "Not subject to VAT".</assert>
+      <assert test="ram:CalculatedAmount = 0">
+	[BR-O-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Not subject to VAT" shall be 0 (zero).</assert>
+      <assert test="(ram:ExemptionReason) or (ram:ExemptionReasonCode)">
+	[BR-O-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).</assert>
+      <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-11]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain other VAT breakdown groups (BG-23).</assert>
+      <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-12]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is not "Not subject to VAT".</assert>
+      <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-13]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".</assert>
+      <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
+	[BR-O-14]-An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level charges (BG-21) where Document level charge VAT category code (BT-102) is not "Not subject to VAT".</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT", the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intracommunity supply" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" the invoiced item VAT rate (BT-152) shall be greater than 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" the Invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-O-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Not subject to VAT" shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-46).</assert>
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-05]-An Invoice line (BG-25) where the VAT category code (BT-151) is "Not subject to VAT" shall not contain an Invoiced item VAT rate (BT-152).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" the Invoiced item VAT rate (BT-152) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-02]-An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Zero rated" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice">
+      <assert test="//ram:IncludedSupplyChainTradeLineItem">
+	[BR-16]-An Invoice shall have at least one Invoice line (BG-25).</assert>
+      <assert test="(number(//ram:DuePayableAmount) &gt; 0 and ((//ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime) or (//ram:SpecifiedTradePaymentTerms/ram:Description))) or not(number(//ram:DuePayableAmount) &gt; 0)">
+	[BR-CO-25]-In case the Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.</assert>
+      <assert test="(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID != &apos;&apos;)">
+	[BR-01]-An Invoice shall have a Specification identifier (BT-24).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:ID !=&apos;&apos;)">
+	[BR-02]-An Invoice shall have an Invoice number (BT-1).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format=&apos;102&apos;]!=&apos;&apos;)">
+	[BR-03]-An Invoice shall have an Invoice issue date (BT-2).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:TypeCode!=&apos;&apos;)">
+	[BR-04]-An Invoice shall have an Invoice type code (BT-3).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode!=&apos;&apos;)">
+	[BR-05]-An Invoice shall have an Invoice currency code (BT-5).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name!=&apos;&apos;)">
+	[BR-06]-An Invoice shall contain the Seller name (BT-27).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name!=&apos;&apos;)">
+	[BR-07]-An Invoice shall contain the Buyer name (BT-44).</assert>
+      <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress">
+	[BR-08]-An Invoice shall contain the Seller postal address (BG-5).</assert>
+      <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
+	[BR-09]-The Seller postal address (BG-5) shall contain a Seller country code (BT-40).</assert>
+      <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress">
+	[BR-10]-An Invoice shall contain the Buyer postal address (BG-8).</assert>
+      <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
+	[BR-11]-The Buyer postal address shall contain a Buyer country code (BT-55).</assert>
+      <assert test="normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != &apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)">
+	[BR-62]-The Seller electronic address (BT-34) shall have a Scheme identifier.</assert>
+      <assert test="normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != &apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)">
+	[BR-63]-The Buyer electronic address (BT-49) shall have a Scheme identifier.</assert>
+      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]))">
+	[BR-S-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Standard rated" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])))">
+	[BR-Z-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Zero rated" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])))">
+	[BR-E-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExempt from VATâ shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])))">
+	[BR-AE-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Reverse charge" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])))">
+	[BR-IC-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Intra-community supply" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Intra-community supply".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])))">
+	[BR-G-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Export outside the EU" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU".</assert>
+      <assert test="not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or ( &#13;&#10;    count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;])=1 and &#13;&#10;    (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or&#13;&#10;    exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;O&apos;])))">
+	[BR-O-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Not subject to VAT" shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".</assert>
+      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) and &#13;&#10;    ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]))">
+	[BR-AF-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "IGIC" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC".</assert>
+      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) and &#13;&#10;    ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]))">
+	[BR-AG-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "IPSI" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IPSI".</assert>
+      <assert test="(not(//ram:CountryID != &apos;IT&apos;) and //ram:CategoryCode =&apos;B&apos;) or (not(//ram:CategoryCode =&apos;B&apos;))">
+	[BR-B-01]-An Invoice where the VAT category code (BT-151, BT-95 or BT-102) is âSplit paymentâ shall be a domestic Italian invoice.</assert>
+      <assert test="(//ram:CategoryCode =&apos;B&apos; and (not(//ram:CategoryCode =&apos;S&apos;))) or (not(//ram:CategoryCode =&apos;B&apos;))">
+	[BR-B-02]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âSplit payment" shall not contain an invoice line (BG-25), a Document level allowance (BG-20) or  a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âStandard ratedâ.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote">
+      <assert test="count(ram:Content)=1">
+	Element 'ram:Content' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SubjectCode)&lt;=1">
+	Element 'ram:SubjectCode' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode">
+      <let name="codeValue4" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
+	Value of 'ram:SubjectCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString">
+      <assert test="@format">
+	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"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
+      <let name="codeValue2" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext">
+      <assert test="count(ram:BusinessProcessSpecifiedDocumentContextParameter)&lt;=1">
+	Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GuidelineSpecifiedDocumentContextParameter)=1">
+	Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID">
+      <let name="codeValue1" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=1]/enumeration[@value=$codeValue1]">
+	Value of 'ram:ID' is not allowed.</assert>
+    </rule>
+  </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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction">
+      <assert test="count(ram:IncludedSupplyChainTradeLineItem)&gt;=1">
+	Element 'ram:IncludedSupplyChainTradeLineItem' must occur at least 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement">
+      <assert test="count(ram:SellerTradeParty)=1">
+	Element 'ram:SellerTradeParty' must occur exactly 1 times.</assert>
+      <assert test="count(ram:BuyerTradeParty)=1">
+	Element 'ram:BuyerTradeParty' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ not(ram:TypeCode=&quot;916&quot;) and  not(ram:TypeCode=&quot;50&quot;) and  not(ram:TypeCode=&quot;130&quot;)]">
+      <report test="true()">
+	Element variant 'ram:AdditionalReferencedDocument[ not(ram:TypeCode="916") and  not(ram:TypeCode="50") and  not(ram:TypeCode="130")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:ReferenceTypeCode">
+      <let name="codeValue14" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
+	Value of 'ram:ReferenceTypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:TypeCode">
+      <let name="codeValue23" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=23]/enumeration[@value=$codeValue23]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:TypeCode">
+      <let name="codeValue22" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Name)&lt;=1">
+	Element 'ram:Name' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:AttachmentBinaryObject)&lt;=1">
+	Element 'ram:AttachmentBinaryObject' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:AttachmentBinaryObject">
+      <assert test="@mimeCode">
+	Attribute '@mimeCode' is required in this context.</assert>
+      <assert test="@filename">
+	Attribute '@filename' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:AttachmentBinaryObject[@mimeCode]">
+      <let name="codeValue21" value="@mimeCode"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@mimeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:TypeCode">
+      <let name="codeValue20" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GlobalID)&lt;=1">
+	Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:DefinedTradeContact)&lt;=1">
+	Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue15" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue16" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=16]/enumeration[@value=$codeValue16]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
+      <let name="codeValue18" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue17" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty">
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)=1">
+	Element 'ram:SpecifiedTaxRegistration' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact">
+      <report test="true()">
+	Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID">
+      <report test="true()">
+	Element 'ram:GlobalID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID">
+      <report test="true()">
+	Element 'ram:ID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization">
+      <report test="true()">
+	Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication">
+      <report test="true()">
+	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty">
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:DefinedTradeContact)&lt;=1">
+	Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;])&lt;=1">
+	Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="VA"]' may occur at maximum 1 times.</assert>
+      <assert 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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue15" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue16" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=16]/enumeration[@value=$codeValue16]">
+	Value of '@schemeID' is not allowed.</assert>
+    </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;)]">
+      <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue17" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery">
+      <assert test="(ram:ShipToTradeParty/ram:PostalTradeAddress and ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;) or not (ram:ShipToTradeParty/ram:PostalTradeAddress)">
+	[BR-57]-Each Deliver to address (BG-15) shall contain a Deliver to country code (BT-80).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent">
+      <assert test="count(ram:OccurrenceDateTime)=1">
+	Element 'ram:OccurrenceDateTime' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GlobalID)&lt;=1">
+	Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact">
+      <report test="true()">
+	Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue15" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization">
+      <report test="true()">
+	Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration">
+      <report test="true()">
+	Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication">
+      <report test="true()">
+	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
+      <assert test="count(ram:PaymentReference)&lt;=1">
+	Element 'ram:PaymentReference' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:InvoiceCurrencyCode)=1">
+	Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ApplicableTradeTax)&gt;=1">
+	Element 'ram:ApplicableTradeTax' must occur at least 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradePaymentTerms)&lt;=1">
+	Element 'ram:SpecifiedTradePaymentTerms' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradeSettlementHeaderMonetarySummation)=1">
+	Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ReceivableSpecifiedTradeAccountingAccount)&lt;=1">
+	Element 'ram:ReceivableSpecifiedTradeAccountingAccount' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="count(ram:CalculatedAmount)=1">
+	Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:BasisAmount)=1">
+	Element 'ram:BasisAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
+      <let name="codeValue10" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode">
+      <let name="codeValue28" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=28]/enumeration[@value=$codeValue28]">
+	Value of 'ram:DueDateTypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
+      <let name="codeValue26" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=26]/enumeration[@value=$codeValue26]">
+	Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate/udt:DateString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate/udt:DateString[@format]">
+      <let name="codeValue27" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=27]/enumeration[@value=$codeValue27]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode">
+      <let name="codeValue9" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode">
+      <let name="codeValue24" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=24]/enumeration[@value=$codeValue24]">
+	Value of 'ram:InvoiceCurrencyCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument">
+      <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
+	[BR-55]-Each Preceding Invoice reference (BG-3) shall contain a Preceding Invoice reference (BT-25).</assert>
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue33" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=33]/enumeration[@value=$codeValue33]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GlobalID)&lt;=1">
+	Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact">
+      <report test="true()">
+	Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue15" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress">
+      <report test="true()">
+	Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue16" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=16]/enumeration[@value=$codeValue16]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
+      <report test="true()">
+	Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration">
+      <report test="true()">
+	Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication">
+      <report test="true()">
+	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator=&quot;false&quot;) and  not(ram:ChargeIndicator/udt:Indicator=&quot;true&quot;)]">
+      <report test="true()">
+	Element variant 'ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator="false") and  not(ram:ChargeIndicator/udt:Indicator="true")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryTradeTax)=1">
+	Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:CategoryCode">
+      <let name="codeValue10" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:TaxPointDate">
+      <report test="true()">
+	Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:TypeCode">
+      <let name="codeValue9" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ReasonCode">
+      <let name="codeValue29" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=29]/enumeration[@value=$codeValue29]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryTradeTax)=1">
+	Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:CategoryCode">
+      <let name="codeValue10" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:TaxPointDate">
+      <report test="true()">
+	Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:TypeCode">
+      <let name="codeValue9" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ReasonCode">
+      <let name="codeValue30" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=30]/enumeration[@value=$codeValue30]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms">
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:DirectDebitMandateID)&lt;=1">
+	Element 'ram:DirectDebitMandateID' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation">
+      <assert test="count(ram:LineTotalAmount)=1">
+	Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ChargeTotalAmount)&lt;=1">
+	Element 'ram:ChargeTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:AllowanceTotalAmount)&lt;=1">
+	Element 'ram:AllowanceTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TaxBasisTotalAmount)=1">
+	Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode])&lt;=1">
+	Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode]' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode])&lt;=1">
+	Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode]' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:RoundingAmount)&lt;=1">
+	Element 'ram:RoundingAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GrandTotalAmount)=1">
+	Element 'ram:GrandTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TotalPrepaidAmount)&lt;=1">
+	Element 'ram:TotalPrepaidAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:DuePayableAmount)=1">
+	Element 'ram:DuePayableAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RoundingAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and  not(@currencyID=../../ram:TaxCurrencyCode)]">
+      <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode and @currencyID]">
+      <let name="codeValue31" value="@currencyID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=31]/enumeration[@value=$codeValue31]">
+	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]">
+      <assert test="@currencyID">
+	Attribute '@currencyID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode and @currencyID]">
+      <let name="codeValue32" value="@currencyID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=32]/enumeration[@value=$codeValue32]">
+	Value of '@currencyID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode]">
+      <assert test="@currencyID">
+	Attribute '@currencyID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Information)&lt;=1">
+	Element 'ram:Information' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:PayeePartyCreditorFinancialAccount)&lt;=1">
+	Element 'ram:PayeePartyCreditorFinancialAccount' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution">
+      <assert test="count(ram:BICID)=1">
+	Element 'ram:BICID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount">
+      <assert test="count(ram:IBANID)=1">
+	Element 'ram:IBANID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode">
+      <let name="codeValue25" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=25]/enumeration[@value=$codeValue25]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode">
+      <let name="codeValue24" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=24]/enumeration[@value=$codeValue24]">
+	Value of 'ram:TaxCurrencyCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem">
+      <assert test="count(ram:AssociatedDocumentLineDocument)=1">
+	Element 'ram:AssociatedDocumentLineDocument' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradeProduct)=1">
+	Element 'ram:SpecifiedTradeProduct' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedLineTradeAgreement)=1">
+	Element 'ram:SpecifiedLineTradeAgreement' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedLineTradeDelivery)=1">
+	Element 'ram:SpecifiedLineTradeDelivery' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument">
+      <assert test="count(ram:LineID)=1">
+	Element 'ram:LineID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:IncludedNote)&lt;=1">
+	Element 'ram:IncludedNote' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote">
+      <assert test="count(ram:Content)=1">
+	Element 'ram:Content' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode">
+      <report test="true()">
+	Element 'ram:SubjectCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement">
+      <assert test="count(ram:NetPriceProductTradePrice)=1">
+	Element 'ram:NetPriceProductTradePrice' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID">
+      <report test="true()">
+	Element 'ram:IssuerAssignedID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice">
+      <assert test="count(ram:ChargeAmount)=1">
+	Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;])&lt;=1">
+	Element variant 'ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator="false"]' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator=&quot;false&quot;) and  not(ram:ChargeIndicator/udt:Indicator=&quot;true&quot;)]">
+      <report test="true()">
+	Element variant 'ram:AppliedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator="false") and  not(ram:ChargeIndicator/udt:Indicator="true")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CalculationPercent">
+      <report test="true()">
+	Element 'ram:CalculationPercent' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax">
+      <report test="true()">
+	Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:Reason">
+      <report test="true()">
+	Element 'ram:Reason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ReasonCode">
+      <report test="true()">
+	Element 'ram:ReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
+      <let name="codeValue8" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice">
+      <assert test="count(ram:ChargeAmount)=1">
+	Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:AppliedTradeAllowanceCharge">
+      <report test="true()">
+	Element 'ram:AppliedTradeAllowanceCharge' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
+      <let name="codeValue8" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery">
+      <assert test="count(ram:BilledQuantity)=1">
+	Element 'ram:BilledQuantity' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity">
+      <assert test="@unitCode">
+	Attribute '@unitCode' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCode]">
+      <let name="codeValue8" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement">
+      <assert test="count(ram:ApplicableTradeTax)=1">
+	Element 'ram:ApplicableTradeTax' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradeSettlementLineMonetarySummation)=1">
+	Element 'ram:SpecifiedTradeSettlementLineMonetarySummation' must occur exactly 1 times.</assert>
+      <assert test="count(ram:AdditionalReferencedDocument)&lt;=1">
+	Element 'ram:AdditionalReferencedDocument' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:ReceivableSpecifiedTradeAccountingAccount)&lt;=1">
+	Element 'ram:ReceivableSpecifiedTradeAccountingAccount' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode">
+      <let name="codeValue14" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
+	Value of 'ram:ReferenceTypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
+      <let name="codeValue10" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate">
+      <report test="true()">
+	Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode">
+      <let name="codeValue9" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator=&quot;false&quot;) and  not(ram:ChargeIndicator/udt:Indicator=&quot;true&quot;)]">
+      <report test="true()">
+	Element variant 'ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator="false") and  not(ram:ChargeIndicator/udt:Indicator="true")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax">
+      <report test="true()">
+	Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ReasonCode">
+      <let name="codeValue11" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax">
+      <report test="true()">
+	Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ReasonCode">
+      <let name="codeValue12" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation">
+      <assert test="count(ram:LineTotalAmount)=1">
+	Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct">
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic">
+      <assert test="count(ram:Description)=1">
+	Element 'ram:Description' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Value)=1">
+	Element 'ram:Value' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode">
+      <assert test="@listID">
+	Attribute '@listID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listID]">
+      <let name="codeValue6" value="@listID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
+	Value of '@listID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeID]">
+      <let name="codeValue5" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:ID">
+      <let name="codeValue7" value="."/>
+      <assert test="document(&apos;FACTUR-X_EN16931_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of 'ram:ID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
 </schema>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EN16931_codedb.xml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EN16931_codedb.xml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EN16931_codedb.xml	(revision 8504)
@@ -1,5030 +1,5812 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <codedb>
-    <cl id="1">
-        <enumeration value="80"/>
-        <enumeration value="81"/>
-        <enumeration value="82"/>
-        <enumeration value="83"/>
-        <enumeration value="84"/>
-        <enumeration value="130"/>
-        <enumeration value="202"/>
-        <enumeration value="203"/>
-        <enumeration value="204"/>
-        <enumeration value="211"/>
-        <enumeration value="261"/>
-        <enumeration value="262"/>
-        <enumeration value="295"/>
-        <enumeration value="296"/>
-        <enumeration value="308"/>
-        <enumeration value="325"/>
-        <enumeration value="326"/>
-        <enumeration value="380"/>
-        <enumeration value="381"/>
-        <enumeration value="383"/>
-        <enumeration value="384"/>
-        <enumeration value="385"/>
-        <enumeration value="386"/>
-        <enumeration value="387"/>
-        <enumeration value="388"/>
-        <enumeration value="389"/>
-        <enumeration value="390"/>
-        <enumeration value="393"/>
-        <enumeration value="394"/>
-        <enumeration value="395"/>
-        <enumeration value="396"/>
-        <enumeration value="420"/>
-        <enumeration value="456"/>
-        <enumeration value="457"/>
-        <enumeration value="458"/>
-        <enumeration value="527"/>
-        <enumeration value="575"/>
-        <enumeration value="623"/>
-        <enumeration value="633"/>
-        <enumeration value="751"/>
-        <enumeration value="780"/>
-        <enumeration value="935"/>
-    </cl>
-    <cl id="2">
-        <enumeration value="102"/>
-    </cl>
-    <cl id="3">
-        <enumeration value="AAA"/>
-        <enumeration value="AAB"/>
-        <enumeration value="AAC"/>
-        <enumeration value="AAD"/>
-        <enumeration value="AAE"/>
-        <enumeration value="AAF"/>
-        <enumeration value="AAG"/>
-        <enumeration value="AAI"/>
-        <enumeration value="AAJ"/>
-        <enumeration value="AAK"/>
-        <enumeration value="AAL"/>
-        <enumeration value="AAM"/>
-        <enumeration value="AAN"/>
-        <enumeration value="AAO"/>
-        <enumeration value="AAP"/>
-        <enumeration value="AAQ"/>
-        <enumeration value="AAR"/>
-        <enumeration value="AAS"/>
-        <enumeration value="AAT"/>
-        <enumeration value="AAU"/>
-        <enumeration value="AAV"/>
-        <enumeration value="AAW"/>
-        <enumeration value="AAX"/>
-        <enumeration value="AAY"/>
-        <enumeration value="AAZ"/>
-        <enumeration value="ABA"/>
-        <enumeration value="ABB"/>
-        <enumeration value="ABC"/>
-        <enumeration value="ABD"/>
-        <enumeration value="ABE"/>
-        <enumeration value="ABF"/>
-        <enumeration value="ABG"/>
-        <enumeration value="ABH"/>
-        <enumeration value="ABI"/>
-        <enumeration value="ABJ"/>
-        <enumeration value="ABK"/>
-        <enumeration value="ABL"/>
-        <enumeration value="ABM"/>
-        <enumeration value="ABN"/>
-        <enumeration value="ABO"/>
-        <enumeration value="ABP"/>
-        <enumeration value="ABQ"/>
-        <enumeration value="ABR"/>
-        <enumeration value="ABS"/>
-        <enumeration value="ABT"/>
-        <enumeration value="ABU"/>
-        <enumeration value="ABV"/>
-        <enumeration value="ABW"/>
-        <enumeration value="ABX"/>
-        <enumeration value="ABZ"/>
-        <enumeration value="ACA"/>
-        <enumeration value="ACB"/>
-        <enumeration value="ACC"/>
-        <enumeration value="ACD"/>
-        <enumeration value="ACE"/>
-        <enumeration value="ACF"/>
-        <enumeration value="ACG"/>
-        <enumeration value="ACH"/>
-        <enumeration value="ACI"/>
-        <enumeration value="ACJ"/>
-        <enumeration value="ACK"/>
-        <enumeration value="ACL"/>
-        <enumeration value="ACM"/>
-        <enumeration value="ACN"/>
-        <enumeration value="ACO"/>
-        <enumeration value="ACP"/>
-        <enumeration value="ACQ"/>
-        <enumeration value="ACR"/>
-        <enumeration value="ACS"/>
-        <enumeration value="ACT"/>
-        <enumeration value="ACU"/>
-        <enumeration value="ACV"/>
-        <enumeration value="ACW"/>
-        <enumeration value="ACX"/>
-        <enumeration value="ACY"/>
-        <enumeration value="ACZ"/>
-        <enumeration value="ADA"/>
-        <enumeration value="ADB"/>
-        <enumeration value="ADC"/>
-        <enumeration value="ADD"/>
-        <enumeration value="ADE"/>
-        <enumeration value="ADF"/>
-        <enumeration value="ADG"/>
-        <enumeration value="ADH"/>
-        <enumeration value="ADI"/>
-        <enumeration value="ADJ"/>
-        <enumeration value="ADK"/>
-        <enumeration value="ADL"/>
-        <enumeration value="ADM"/>
-        <enumeration value="ADN"/>
-        <enumeration value="ADO"/>
-        <enumeration value="ADP"/>
-        <enumeration value="ADQ"/>
-        <enumeration value="ADR"/>
-        <enumeration value="ADS"/>
-        <enumeration value="ADT"/>
-        <enumeration value="ADU"/>
-        <enumeration value="ADV"/>
-        <enumeration value="ADW"/>
-        <enumeration value="ADX"/>
-        <enumeration value="ADY"/>
-        <enumeration value="ADZ"/>
-        <enumeration value="AEA"/>
-        <enumeration value="AEB"/>
-        <enumeration value="AEC"/>
-        <enumeration value="AED"/>
-        <enumeration value="AEE"/>
-        <enumeration value="AEF"/>
-        <enumeration value="AEG"/>
-        <enumeration value="AEH"/>
-        <enumeration value="AEI"/>
-        <enumeration value="AEJ"/>
-        <enumeration value="AEK"/>
-        <enumeration value="AEL"/>
-        <enumeration value="AEM"/>
-        <enumeration value="AEN"/>
-        <enumeration value="AEO"/>
-        <enumeration value="AEP"/>
-        <enumeration value="AEQ"/>
-        <enumeration value="AER"/>
-        <enumeration value="AES"/>
-        <enumeration value="AET"/>
-        <enumeration value="AEU"/>
-        <enumeration value="AEV"/>
-        <enumeration value="AEW"/>
-        <enumeration value="AEX"/>
-        <enumeration value="AEY"/>
-        <enumeration value="AEZ"/>
-        <enumeration value="AFA"/>
-        <enumeration value="AFB"/>
-        <enumeration value="AFC"/>
-        <enumeration value="AFD"/>
-        <enumeration value="AFE"/>
-        <enumeration value="AFF"/>
-        <enumeration value="AFG"/>
-        <enumeration value="AFH"/>
-        <enumeration value="AFI"/>
-        <enumeration value="AFJ"/>
-        <enumeration value="AFK"/>
-        <enumeration value="AFL"/>
-        <enumeration value="AFM"/>
-        <enumeration value="AFN"/>
-        <enumeration value="AFO"/>
-        <enumeration value="AFP"/>
-        <enumeration value="AFQ"/>
-        <enumeration value="AFR"/>
-        <enumeration value="AFS"/>
-        <enumeration value="AFT"/>
-        <enumeration value="AFU"/>
-        <enumeration value="AFV"/>
-        <enumeration value="AFW"/>
-        <enumeration value="AFX"/>
-        <enumeration value="AFY"/>
-        <enumeration value="AFZ"/>
-        <enumeration value="AGA"/>
-        <enumeration value="AGB"/>
-        <enumeration value="AGC"/>
-        <enumeration value="AGD"/>
-        <enumeration value="AGE"/>
-        <enumeration value="AGF"/>
-        <enumeration value="AGG"/>
-        <enumeration value="AGH"/>
-        <enumeration value="AGI"/>
-        <enumeration value="AGJ"/>
-        <enumeration value="AGK"/>
-        <enumeration value="AGL"/>
-        <enumeration value="AGM"/>
-        <enumeration value="AGN"/>
-        <enumeration value="AGO"/>
-        <enumeration value="AGP"/>
-        <enumeration value="AGQ"/>
-        <enumeration value="AGR"/>
-        <enumeration value="AGS"/>
-        <enumeration value="AGT"/>
-        <enumeration value="AGU"/>
-        <enumeration value="AGV"/>
-        <enumeration value="AGW"/>
-        <enumeration value="AGX"/>
-        <enumeration value="AGY"/>
-        <enumeration value="AGZ"/>
-        <enumeration value="AHA"/>
-        <enumeration value="AHB"/>
-        <enumeration value="AHC"/>
-        <enumeration value="AHD"/>
-        <enumeration value="AHE"/>
-        <enumeration value="AHF"/>
-        <enumeration value="AHG"/>
-        <enumeration value="AHH"/>
-        <enumeration value="AHI"/>
-        <enumeration value="AHJ"/>
-        <enumeration value="AHK"/>
-        <enumeration value="AHL"/>
-        <enumeration value="AHM"/>
-        <enumeration value="AHN"/>
-        <enumeration value="AHO"/>
-        <enumeration value="AHP"/>
-        <enumeration value="AHQ"/>
-        <enumeration value="AHR"/>
-        <enumeration value="AHS"/>
-        <enumeration value="AHT"/>
-        <enumeration value="AHU"/>
-        <enumeration value="AHV"/>
-        <enumeration value="AHW"/>
-        <enumeration value="AHX"/>
-        <enumeration value="AHY"/>
-        <enumeration value="AHZ"/>
-        <enumeration value="AIA"/>
-        <enumeration value="AIB"/>
-        <enumeration value="AIC"/>
-        <enumeration value="AID"/>
-        <enumeration value="AIE"/>
-        <enumeration value="AIF"/>
-        <enumeration value="AIG"/>
-        <enumeration value="AIH"/>
-        <enumeration value="AII"/>
-        <enumeration value="AIJ"/>
-        <enumeration value="AIK"/>
-        <enumeration value="AIL"/>
-        <enumeration value="AIM"/>
-        <enumeration value="AIN"/>
-        <enumeration value="AIO"/>
-        <enumeration value="AIP"/>
-        <enumeration value="AIQ"/>
-        <enumeration value="AIR"/>
-        <enumeration value="AIS"/>
-        <enumeration value="AIT"/>
-        <enumeration value="AIU"/>
-        <enumeration value="AIV"/>
-        <enumeration value="AIW"/>
-        <enumeration value="AIX"/>
-        <enumeration value="AIY"/>
-        <enumeration value="AIZ"/>
-        <enumeration value="AJA"/>
-        <enumeration value="AJB"/>
-        <enumeration value="ALC"/>
-        <enumeration value="ALD"/>
-        <enumeration value="ALE"/>
-        <enumeration value="ALF"/>
-        <enumeration value="ALG"/>
-        <enumeration value="ALH"/>
-        <enumeration value="ALI"/>
-        <enumeration value="ALJ"/>
-        <enumeration value="ALK"/>
-        <enumeration value="ALL"/>
-        <enumeration value="ALM"/>
-        <enumeration value="ALN"/>
-        <enumeration value="ALO"/>
-        <enumeration value="ALP"/>
-        <enumeration value="ALQ"/>
-        <enumeration value="ARR"/>
-        <enumeration value="ARS"/>
-        <enumeration value="AUT"/>
-        <enumeration value="AUU"/>
-        <enumeration value="AUV"/>
-        <enumeration value="AUW"/>
-        <enumeration value="AUX"/>
-        <enumeration value="AUY"/>
-        <enumeration value="AUZ"/>
-        <enumeration value="AVA"/>
-        <enumeration value="AVB"/>
-        <enumeration value="AVC"/>
-        <enumeration value="AVD"/>
-        <enumeration value="AVE"/>
-        <enumeration value="AVF"/>
-        <enumeration value="BAG"/>
-        <enumeration value="BAH"/>
-        <enumeration value="BAI"/>
-        <enumeration value="BAJ"/>
-        <enumeration value="BAK"/>
-        <enumeration value="BAL"/>
-        <enumeration value="BAM"/>
-        <enumeration value="BAN"/>
-        <enumeration value="BAO"/>
-        <enumeration value="BAP"/>
-        <enumeration value="BAQ"/>
-        <enumeration value="BAR"/>
-        <enumeration value="BAS"/>
-        <enumeration value="BLC"/>
-        <enumeration value="BLD"/>
-        <enumeration value="BLE"/>
-        <enumeration value="BLF"/>
-        <enumeration value="BLG"/>
-        <enumeration value="BLH"/>
-        <enumeration value="BLI"/>
-        <enumeration value="BLJ"/>
-        <enumeration value="BLK"/>
-        <enumeration value="BLL"/>
-        <enumeration value="BLM"/>
-        <enumeration value="BLN"/>
-        <enumeration value="BLO"/>
-        <enumeration value="BLP"/>
-        <enumeration value="BLQ"/>
-        <enumeration value="BLR"/>
-        <enumeration value="BLS"/>
-        <enumeration value="BLT"/>
-        <enumeration value="BLU"/>
-        <enumeration value="BLV"/>
-        <enumeration value="BLW"/>
-        <enumeration value="BLX"/>
-        <enumeration value="BLY"/>
-        <enumeration value="BLZ"/>
-        <enumeration value="BMA"/>
-        <enumeration value="BMB"/>
-        <enumeration value="BMC"/>
-        <enumeration value="BMD"/>
-        <enumeration value="BME"/>
-        <enumeration value="CCI"/>
-        <enumeration value="CEX"/>
-        <enumeration value="CHG"/>
-        <enumeration value="CIP"/>
-        <enumeration value="CLP"/>
-        <enumeration value="CLR"/>
-        <enumeration value="COI"/>
-        <enumeration value="CUR"/>
-        <enumeration value="CUS"/>
-        <enumeration value="DAR"/>
-        <enumeration value="DCL"/>
-        <enumeration value="DEL"/>
-        <enumeration value="DIN"/>
-        <enumeration value="DOC"/>
-        <enumeration value="DUT"/>
-        <enumeration value="EUR"/>
-        <enumeration value="FBC"/>
-        <enumeration value="GBL"/>
-        <enumeration value="GEN"/>
-        <enumeration value="GS7"/>
-        <enumeration value="HAN"/>
-        <enumeration value="HAZ"/>
-        <enumeration value="ICN"/>
-        <enumeration value="IIN"/>
-        <enumeration value="IMI"/>
-        <enumeration value="IND"/>
-        <enumeration value="INS"/>
-        <enumeration value="INV"/>
-        <enumeration value="IRP"/>
-        <enumeration value="ITR"/>
-        <enumeration value="ITS"/>
-        <enumeration value="LAN"/>
-        <enumeration value="LIN"/>
-        <enumeration value="LOI"/>
-        <enumeration value="MCO"/>
-        <enumeration value="MDH"/>
-        <enumeration value="MKS"/>
-        <enumeration value="ORI"/>
-        <enumeration value="OSI"/>
-        <enumeration value="PAC"/>
-        <enumeration value="PAI"/>
-        <enumeration value="PAY"/>
-        <enumeration value="PKG"/>
-        <enumeration value="PKT"/>
-        <enumeration value="PMD"/>
-        <enumeration value="PMT"/>
-        <enumeration value="PRD"/>
-        <enumeration value="PRF"/>
-        <enumeration value="PRI"/>
-        <enumeration value="PUR"/>
-        <enumeration value="QIN"/>
-        <enumeration value="QQD"/>
-        <enumeration value="QUT"/>
-        <enumeration value="RAH"/>
-        <enumeration value="REG"/>
-        <enumeration value="RET"/>
-        <enumeration value="REV"/>
-        <enumeration value="RQR"/>
-        <enumeration value="SAF"/>
-        <enumeration value="SIC"/>
-        <enumeration value="SIN"/>
-        <enumeration value="SLR"/>
-        <enumeration value="SPA"/>
-        <enumeration value="SPG"/>
-        <enumeration value="SPH"/>
-        <enumeration value="SPP"/>
-        <enumeration value="SPT"/>
-        <enumeration value="SRN"/>
-        <enumeration value="SSR"/>
-        <enumeration value="SUR"/>
-        <enumeration value="TCA"/>
-        <enumeration value="TDT"/>
-        <enumeration value="TRA"/>
-        <enumeration value="TRR"/>
-        <enumeration value="TXD"/>
-        <enumeration value="WHI"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="4">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="5">
-        <enumeration value="AA"/>
-        <enumeration value="AB"/>
-        <enumeration value="AC"/>
-        <enumeration value="AD"/>
-        <enumeration value="AE"/>
-        <enumeration value="AF"/>
-        <enumeration value="AG"/>
-        <enumeration value="AH"/>
-        <enumeration value="AI"/>
-        <enumeration value="AJ"/>
-        <enumeration value="AK"/>
-        <enumeration value="AL"/>
-        <enumeration value="AM"/>
-        <enumeration value="AN"/>
-        <enumeration value="AO"/>
-        <enumeration value="AP"/>
-        <enumeration value="AQ"/>
-        <enumeration value="AR"/>
-        <enumeration value="AS"/>
-        <enumeration value="AT"/>
-        <enumeration value="AU"/>
-        <enumeration value="AV"/>
-        <enumeration value="AW"/>
-        <enumeration value="AX"/>
-        <enumeration value="AY"/>
-        <enumeration value="AZ"/>
-        <enumeration value="BA"/>
-        <enumeration value="BB"/>
-        <enumeration value="BC"/>
-        <enumeration value="BD"/>
-        <enumeration value="BE"/>
-        <enumeration value="BF"/>
-        <enumeration value="BG"/>
-        <enumeration value="BH"/>
-        <enumeration value="BI"/>
-        <enumeration value="BJ"/>
-        <enumeration value="BK"/>
-        <enumeration value="BL"/>
-        <enumeration value="BM"/>
-        <enumeration value="BN"/>
-        <enumeration value="BO"/>
-        <enumeration value="BP"/>
-        <enumeration value="BQ"/>
-        <enumeration value="BR"/>
-        <enumeration value="BS"/>
-        <enumeration value="BT"/>
-        <enumeration value="BU"/>
-        <enumeration value="BV"/>
-        <enumeration value="BW"/>
-        <enumeration value="BX"/>
-        <enumeration value="BY"/>
-        <enumeration value="BZ"/>
-        <enumeration value="CC"/>
-        <enumeration value="CG"/>
-        <enumeration value="CL"/>
-        <enumeration value="CR"/>
-        <enumeration value="CV"/>
-        <enumeration value="DR"/>
-        <enumeration value="DW"/>
-        <enumeration value="EC"/>
-        <enumeration value="EF"/>
-        <enumeration value="EN"/>
-        <enumeration value="FS"/>
-        <enumeration value="GB"/>
-        <enumeration value="GN"/>
-        <enumeration value="GS"/>
-        <enumeration value="HS"/>
-        <enumeration value="IB"/>
-        <enumeration value="IN"/>
-        <enumeration value="IS"/>
-        <enumeration value="IT"/>
-        <enumeration value="IZ"/>
-        <enumeration value="MA"/>
-        <enumeration value="MF"/>
-        <enumeration value="MN"/>
-        <enumeration value="MP"/>
-        <enumeration value="NB"/>
-        <enumeration value="ON"/>
-        <enumeration value="PD"/>
-        <enumeration value="PL"/>
-        <enumeration value="PO"/>
-        <enumeration value="PV"/>
-        <enumeration value="QS"/>
-        <enumeration value="RC"/>
-        <enumeration value="RN"/>
-        <enumeration value="RU"/>
-        <enumeration value="RY"/>
-        <enumeration value="SA"/>
-        <enumeration value="SG"/>
-        <enumeration value="SK"/>
-        <enumeration value="SN"/>
-        <enumeration value="SRS"/>
-        <enumeration value="SRT"/>
-        <enumeration value="SRU"/>
-        <enumeration value="SRV"/>
-        <enumeration value="SRW"/>
-        <enumeration value="SRX"/>
-        <enumeration value="SRY"/>
-        <enumeration value="SRZ"/>
-        <enumeration value="SS"/>
-        <enumeration value="SSA"/>
-        <enumeration value="SSB"/>
-        <enumeration value="SSC"/>
-        <enumeration value="SSD"/>
-        <enumeration value="SSE"/>
-        <enumeration value="SSF"/>
-        <enumeration value="SSG"/>
-        <enumeration value="SSH"/>
-        <enumeration value="SSI"/>
-        <enumeration value="SSJ"/>
-        <enumeration value="SSK"/>
-        <enumeration value="SSL"/>
-        <enumeration value="SSM"/>
-        <enumeration value="SSN"/>
-        <enumeration value="SSO"/>
-        <enumeration value="SSP"/>
-        <enumeration value="SSQ"/>
-        <enumeration value="SSR"/>
-        <enumeration value="SSS"/>
-        <enumeration value="SST"/>
-        <enumeration value="SSU"/>
-        <enumeration value="SSV"/>
-        <enumeration value="SSW"/>
-        <enumeration value="SSX"/>
-        <enumeration value="SSY"/>
-        <enumeration value="SSZ"/>
-        <enumeration value="ST"/>
-        <enumeration value="STA"/>
-        <enumeration value="STB"/>
-        <enumeration value="STC"/>
-        <enumeration value="STD"/>
-        <enumeration value="STE"/>
-        <enumeration value="STF"/>
-        <enumeration value="STG"/>
-        <enumeration value="STH"/>
-        <enumeration value="STI"/>
-        <enumeration value="STJ"/>
-        <enumeration value="STK"/>
-        <enumeration value="STL"/>
-        <enumeration value="STM"/>
-        <enumeration value="STN"/>
-        <enumeration value="STO"/>
-        <enumeration value="STP"/>
-        <enumeration value="STQ"/>
-        <enumeration value="STR"/>
-        <enumeration value="STS"/>
-        <enumeration value="STT"/>
-        <enumeration value="STU"/>
-        <enumeration value="STV"/>
-        <enumeration value="STW"/>
-        <enumeration value="STX"/>
-        <enumeration value="STY"/>
-        <enumeration value="STZ"/>
-        <enumeration value="SUA"/>
-        <enumeration value="SUB"/>
-        <enumeration value="SUC"/>
-        <enumeration value="SUD"/>
-        <enumeration value="SUE"/>
-        <enumeration value="SUF"/>
-        <enumeration value="SUG"/>
-        <enumeration value="SUH"/>
-        <enumeration value="SUI"/>
-        <enumeration value="SUJ"/>
-        <enumeration value="SUK"/>
-        <enumeration value="SUL"/>
-        <enumeration value="SUM"/>
-        <enumeration value="TG"/>
-        <enumeration value="TSN"/>
-        <enumeration value="TSO"/>
-        <enumeration value="TSP"/>
-        <enumeration value="TST"/>
-        <enumeration value="UA"/>
-        <enumeration value="UP"/>
-        <enumeration value="VN"/>
-        <enumeration value="VP"/>
-        <enumeration value="VS"/>
-        <enumeration value="VX"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="6">
-        <enumeration value="AA"/>
-        <enumeration value="AB"/>
-        <enumeration value="AC"/>
-        <enumeration value="AD"/>
-        <enumeration value="AE"/>
-        <enumeration value="AF"/>
-        <enumeration value="AG"/>
-        <enumeration value="AH"/>
-        <enumeration value="AI"/>
-        <enumeration value="AJ"/>
-        <enumeration value="AK"/>
-        <enumeration value="AL"/>
-        <enumeration value="AM"/>
-        <enumeration value="AN"/>
-        <enumeration value="AO"/>
-        <enumeration value="AP"/>
-        <enumeration value="AQ"/>
-        <enumeration value="AR"/>
-        <enumeration value="AS"/>
-        <enumeration value="AT"/>
-        <enumeration value="AU"/>
-        <enumeration value="AV"/>
-        <enumeration value="AW"/>
-        <enumeration value="AX"/>
-        <enumeration value="AY"/>
-        <enumeration value="AZ"/>
-        <enumeration value="BA"/>
-        <enumeration value="BB"/>
-        <enumeration value="BC"/>
-        <enumeration value="BD"/>
-        <enumeration value="BE"/>
-        <enumeration value="BF"/>
-        <enumeration value="BG"/>
-        <enumeration value="BH"/>
-        <enumeration value="BI"/>
-        <enumeration value="BJ"/>
-        <enumeration value="BK"/>
-        <enumeration value="BL"/>
-        <enumeration value="BM"/>
-        <enumeration value="BN"/>
-        <enumeration value="BO"/>
-        <enumeration value="BP"/>
-        <enumeration value="BQ"/>
-        <enumeration value="BR"/>
-        <enumeration value="BS"/>
-        <enumeration value="BT"/>
-        <enumeration value="BU"/>
-        <enumeration value="BV"/>
-        <enumeration value="BW"/>
-        <enumeration value="BX"/>
-        <enumeration value="BY"/>
-        <enumeration value="BZ"/>
-        <enumeration value="CC"/>
-        <enumeration value="CG"/>
-        <enumeration value="CL"/>
-        <enumeration value="CR"/>
-        <enumeration value="CV"/>
-        <enumeration value="DR"/>
-        <enumeration value="DW"/>
-        <enumeration value="EC"/>
-        <enumeration value="EF"/>
-        <enumeration value="EN"/>
-        <enumeration value="FS"/>
-        <enumeration value="GB"/>
-        <enumeration value="GN"/>
-        <enumeration value="GS"/>
-        <enumeration value="HS"/>
-        <enumeration value="IB"/>
-        <enumeration value="IN"/>
-        <enumeration value="IS"/>
-        <enumeration value="IT"/>
-        <enumeration value="IZ"/>
-        <enumeration value="MA"/>
-        <enumeration value="MF"/>
-        <enumeration value="MN"/>
-        <enumeration value="MP"/>
-        <enumeration value="NB"/>
-        <enumeration value="ON"/>
-        <enumeration value="PD"/>
-        <enumeration value="PL"/>
-        <enumeration value="PO"/>
-        <enumeration value="PV"/>
-        <enumeration value="QS"/>
-        <enumeration value="RC"/>
-        <enumeration value="RN"/>
-        <enumeration value="RU"/>
-        <enumeration value="RY"/>
-        <enumeration value="SA"/>
-        <enumeration value="SG"/>
-        <enumeration value="SK"/>
-        <enumeration value="SN"/>
-        <enumeration value="SRS"/>
-        <enumeration value="SRT"/>
-        <enumeration value="SRU"/>
-        <enumeration value="SRV"/>
-        <enumeration value="SRW"/>
-        <enumeration value="SRX"/>
-        <enumeration value="SRY"/>
-        <enumeration value="SRZ"/>
-        <enumeration value="SS"/>
-        <enumeration value="SSA"/>
-        <enumeration value="SSB"/>
-        <enumeration value="SSC"/>
-        <enumeration value="SSD"/>
-        <enumeration value="SSE"/>
-        <enumeration value="SSF"/>
-        <enumeration value="SSG"/>
-        <enumeration value="SSH"/>
-        <enumeration value="SSI"/>
-        <enumeration value="SSJ"/>
-        <enumeration value="SSK"/>
-        <enumeration value="SSL"/>
-        <enumeration value="SSM"/>
-        <enumeration value="SSN"/>
-        <enumeration value="SSO"/>
-        <enumeration value="SSP"/>
-        <enumeration value="SSQ"/>
-        <enumeration value="SSR"/>
-        <enumeration value="SSS"/>
-        <enumeration value="SST"/>
-        <enumeration value="SSU"/>
-        <enumeration value="SSV"/>
-        <enumeration value="SSW"/>
-        <enumeration value="SSX"/>
-        <enumeration value="SSY"/>
-        <enumeration value="SSZ"/>
-        <enumeration value="ST"/>
-        <enumeration value="STA"/>
-        <enumeration value="STB"/>
-        <enumeration value="STC"/>
-        <enumeration value="STD"/>
-        <enumeration value="STE"/>
-        <enumeration value="STF"/>
-        <enumeration value="STG"/>
-        <enumeration value="STH"/>
-        <enumeration value="STI"/>
-        <enumeration value="STJ"/>
-        <enumeration value="STK"/>
-        <enumeration value="STL"/>
-        <enumeration value="STM"/>
-        <enumeration value="STN"/>
-        <enumeration value="STO"/>
-        <enumeration value="STP"/>
-        <enumeration value="STQ"/>
-        <enumeration value="STR"/>
-        <enumeration value="STS"/>
-        <enumeration value="STT"/>
-        <enumeration value="STU"/>
-        <enumeration value="STV"/>
-        <enumeration value="STW"/>
-        <enumeration value="STX"/>
-        <enumeration value="STY"/>
-        <enumeration value="STZ"/>
-        <enumeration value="SUA"/>
-        <enumeration value="SUB"/>
-        <enumeration value="SUC"/>
-        <enumeration value="SUD"/>
-        <enumeration value="SUE"/>
-        <enumeration value="SUF"/>
-        <enumeration value="SUG"/>
-        <enumeration value="SUH"/>
-        <enumeration value="SUI"/>
-        <enumeration value="SUJ"/>
-        <enumeration value="SUK"/>
-        <enumeration value="SUL"/>
-        <enumeration value="SUM"/>
-        <enumeration value="TG"/>
-        <enumeration value="TSN"/>
-        <enumeration value="TSO"/>
-        <enumeration value="TSP"/>
-        <enumeration value="TST"/>
-        <enumeration value="UA"/>
-        <enumeration value="UP"/>
-        <enumeration value="VN"/>
-        <enumeration value="VP"/>
-        <enumeration value="VS"/>
-        <enumeration value="VX"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="7">
-        <enumeration value="X1A"/>
-        <enumeration value="X1B"/>
-        <enumeration value="X1D"/>
-        <enumeration value="X1F"/>
-        <enumeration value="X1G"/>
-        <enumeration value="X1W"/>
-        <enumeration value="X2C"/>
-        <enumeration value="X3A"/>
-        <enumeration value="X3H"/>
-        <enumeration value="X43"/>
-        <enumeration value="X44"/>
-        <enumeration value="X4A"/>
-        <enumeration value="X4B"/>
-        <enumeration value="X4C"/>
-        <enumeration value="X4D"/>
-        <enumeration value="X4F"/>
-        <enumeration value="X4G"/>
-        <enumeration value="X4H"/>
-        <enumeration value="X5H"/>
-        <enumeration value="X5L"/>
-        <enumeration value="X5M"/>
-        <enumeration value="X6H"/>
-        <enumeration value="X6P"/>
-        <enumeration value="X7A"/>
-        <enumeration value="X7B"/>
-        <enumeration value="X8A"/>
-        <enumeration value="X8B"/>
-        <enumeration value="X8C"/>
-        <enumeration value="XAA"/>
-        <enumeration value="XAB"/>
-        <enumeration value="XAC"/>
-        <enumeration value="XAD"/>
-        <enumeration value="XAE"/>
-        <enumeration value="XAF"/>
-        <enumeration value="XAG"/>
-        <enumeration value="XAH"/>
-        <enumeration value="XAI"/>
-        <enumeration value="XAJ"/>
-        <enumeration value="XAL"/>
-        <enumeration value="XAM"/>
-        <enumeration value="XAP"/>
-        <enumeration value="XAT"/>
-        <enumeration value="XAV"/>
-        <enumeration value="XB4"/>
-        <enumeration value="XBA"/>
-        <enumeration value="XBB"/>
-        <enumeration value="XBC"/>
-        <enumeration value="XBD"/>
-        <enumeration value="XBE"/>
-        <enumeration value="XBF"/>
-        <enumeration value="XBG"/>
-        <enumeration value="XBH"/>
-        <enumeration value="XBI"/>
-        <enumeration value="XBJ"/>
-        <enumeration value="XBK"/>
-        <enumeration value="XBL"/>
-        <enumeration value="XBM"/>
-        <enumeration value="XBN"/>
-        <enumeration value="XBO"/>
-        <enumeration value="XBP"/>
-        <enumeration value="XBQ"/>
-        <enumeration value="XBR"/>
-        <enumeration value="XBS"/>
-        <enumeration value="XBT"/>
-        <enumeration value="XBU"/>
-        <enumeration value="XBV"/>
-        <enumeration value="XBW"/>
-        <enumeration value="XBX"/>
-        <enumeration value="XBY"/>
-        <enumeration value="XBZ"/>
-        <enumeration value="XCA"/>
-        <enumeration value="XCB"/>
-        <enumeration value="XCC"/>
-        <enumeration value="XCD"/>
-        <enumeration value="XCE"/>
-        <enumeration value="XCF"/>
-        <enumeration value="XCG"/>
-        <enumeration value="XCH"/>
-        <enumeration value="XCI"/>
-        <enumeration value="XCJ"/>
-        <enumeration value="XCK"/>
-        <enumeration value="XCL"/>
-        <enumeration value="XCM"/>
-        <enumeration value="XCN"/>
-        <enumeration value="XCO"/>
-        <enumeration value="XCP"/>
-        <enumeration value="XCQ"/>
-        <enumeration value="XCR"/>
-        <enumeration value="XCS"/>
-        <enumeration value="XCT"/>
-        <enumeration value="XCU"/>
-        <enumeration value="XCV"/>
-        <enumeration value="XCW"/>
-        <enumeration value="XCX"/>
-        <enumeration value="XCY"/>
-        <enumeration value="XCZ"/>
-        <enumeration value="XDA"/>
-        <enumeration value="XDB"/>
-        <enumeration value="XDC"/>
-        <enumeration value="XDG"/>
-        <enumeration value="XDH"/>
-        <enumeration value="XDI"/>
-        <enumeration value="XDJ"/>
-        <enumeration value="XDK"/>
-        <enumeration value="XDL"/>
-        <enumeration value="XDM"/>
-        <enumeration value="XDN"/>
-        <enumeration value="XDP"/>
-        <enumeration value="XDR"/>
-        <enumeration value="XDS"/>
-        <enumeration value="XDT"/>
-        <enumeration value="XDU"/>
-        <enumeration value="XDV"/>
-        <enumeration value="XDW"/>
-        <enumeration value="XDX"/>
-        <enumeration value="XDY"/>
-        <enumeration value="XEC"/>
-        <enumeration value="XED"/>
-        <enumeration value="XEE"/>
-        <enumeration value="XEF"/>
-        <enumeration value="XEG"/>
-        <enumeration value="XEH"/>
-        <enumeration value="XEI"/>
-        <enumeration value="XEN"/>
-        <enumeration value="XFB"/>
-        <enumeration value="XFC"/>
-        <enumeration value="XFD"/>
-        <enumeration value="XFE"/>
-        <enumeration value="XFI"/>
-        <enumeration value="XFL"/>
-        <enumeration value="XFO"/>
-        <enumeration value="XFP"/>
-        <enumeration value="XFR"/>
-        <enumeration value="XFT"/>
-        <enumeration value="XFW"/>
-        <enumeration value="XFX"/>
-        <enumeration value="XGB"/>
-        <enumeration value="XGI"/>
-        <enumeration value="XGL"/>
-        <enumeration value="XGR"/>
-        <enumeration value="XGU"/>
-        <enumeration value="XGY"/>
-        <enumeration value="XGZ"/>
-        <enumeration value="XHA"/>
-        <enumeration value="XHB"/>
-        <enumeration value="XHC"/>
-        <enumeration value="XHG"/>
-        <enumeration value="XHN"/>
-        <enumeration value="XHR"/>
-        <enumeration value="XIA"/>
-        <enumeration value="XIB"/>
-        <enumeration value="XIC"/>
-        <enumeration value="XID"/>
-        <enumeration value="XIE"/>
-        <enumeration value="XIF"/>
-        <enumeration value="XIG"/>
-        <enumeration value="XIH"/>
-        <enumeration value="XIK"/>
-        <enumeration value="XIL"/>
-        <enumeration value="XIN"/>
-        <enumeration value="XIZ"/>
-        <enumeration value="XJB"/>
-        <enumeration value="XJC"/>
-        <enumeration value="XJG"/>
-        <enumeration value="XJR"/>
-        <enumeration value="XJT"/>
-        <enumeration value="XJY"/>
-        <enumeration value="XKG"/>
-        <enumeration value="XKI"/>
-        <enumeration value="XLE"/>
-        <enumeration value="XLG"/>
-        <enumeration value="XLT"/>
-        <enumeration value="XLU"/>
-        <enumeration value="XLV"/>
-        <enumeration value="XLZ"/>
-        <enumeration value="XMA"/>
-        <enumeration value="XMB"/>
-        <enumeration value="XMC"/>
-        <enumeration value="XME"/>
-        <enumeration value="XMR"/>
-        <enumeration value="XMS"/>
-        <enumeration value="XMT"/>
-        <enumeration value="XMW"/>
-        <enumeration value="XMX"/>
-        <enumeration value="XNA"/>
-        <enumeration value="XNE"/>
-        <enumeration value="XNF"/>
-        <enumeration value="XNG"/>
-        <enumeration value="XNS"/>
-        <enumeration value="XNT"/>
-        <enumeration value="XNU"/>
-        <enumeration value="XNV"/>
-        <enumeration value="XOA"/>
-        <enumeration value="XOB"/>
-        <enumeration value="XOC"/>
-        <enumeration value="XOD"/>
-        <enumeration value="XOE"/>
-        <enumeration value="XOF"/>
-        <enumeration value="XOK"/>
-        <enumeration value="XOT"/>
-        <enumeration value="XOU"/>
-        <enumeration value="XP2"/>
-        <enumeration value="XPA"/>
-        <enumeration value="XPB"/>
-        <enumeration value="XPC"/>
-        <enumeration value="XPD"/>
-        <enumeration value="XPE"/>
-        <enumeration value="XPF"/>
-        <enumeration value="XPG"/>
-        <enumeration value="XPH"/>
-        <enumeration value="XPI"/>
-        <enumeration value="XPJ"/>
-        <enumeration value="XPK"/>
-        <enumeration value="XPL"/>
-        <enumeration value="XPN"/>
-        <enumeration value="XPO"/>
-        <enumeration value="XPP"/>
-        <enumeration value="XPR"/>
-        <enumeration value="XPT"/>
-        <enumeration value="XPU"/>
-        <enumeration value="XPV"/>
-        <enumeration value="XPX"/>
-        <enumeration value="XPY"/>
-        <enumeration value="XPZ"/>
-        <enumeration value="XQA"/>
-        <enumeration value="XQB"/>
-        <enumeration value="XQC"/>
-        <enumeration value="XQD"/>
-        <enumeration value="XQF"/>
-        <enumeration value="XQG"/>
-        <enumeration value="XQH"/>
-        <enumeration value="XQJ"/>
-        <enumeration value="XQK"/>
-        <enumeration value="XQL"/>
-        <enumeration value="XQM"/>
-        <enumeration value="XQN"/>
-        <enumeration value="XQP"/>
-        <enumeration value="XQQ"/>
-        <enumeration value="XQR"/>
-        <enumeration value="XQS"/>
-        <enumeration value="XRD"/>
-        <enumeration value="XRG"/>
-        <enumeration value="XRJ"/>
-        <enumeration value="XRK"/>
-        <enumeration value="XRL"/>
-        <enumeration value="XRO"/>
-        <enumeration value="XRT"/>
-        <enumeration value="XRZ"/>
-        <enumeration value="XSA"/>
-        <enumeration value="XSB"/>
-        <enumeration value="XSC"/>
-        <enumeration value="XSD"/>
-        <enumeration value="XSE"/>
-        <enumeration value="XSH"/>
-        <enumeration value="XSI"/>
-        <enumeration value="XSK"/>
-        <enumeration value="XSL"/>
-        <enumeration value="XSM"/>
-        <enumeration value="XSO"/>
-        <enumeration value="XSP"/>
-        <enumeration value="XSS"/>
-        <enumeration value="XST"/>
-        <enumeration value="XSU"/>
-        <enumeration value="XSV"/>
-        <enumeration value="XSW"/>
-        <enumeration value="XSY"/>
-        <enumeration value="XSZ"/>
-        <enumeration value="XT1"/>
-        <enumeration value="XTB"/>
-        <enumeration value="XTC"/>
-        <enumeration value="XTD"/>
-        <enumeration value="XTE"/>
-        <enumeration value="XTG"/>
-        <enumeration value="XTI"/>
-        <enumeration value="XTK"/>
-        <enumeration value="XTL"/>
-        <enumeration value="XTN"/>
-        <enumeration value="XTO"/>
-        <enumeration value="XTR"/>
-        <enumeration value="XTS"/>
-        <enumeration value="XTT"/>
-        <enumeration value="XTU"/>
-        <enumeration value="XTV"/>
-        <enumeration value="XTW"/>
-        <enumeration value="XTY"/>
-        <enumeration value="XTZ"/>
-        <enumeration value="XUC"/>
-        <enumeration value="XUN"/>
-        <enumeration value="XVA"/>
-        <enumeration value="XVG"/>
-        <enumeration value="XVI"/>
-        <enumeration value="XVK"/>
-        <enumeration value="XVL"/>
-        <enumeration value="XVN"/>
-        <enumeration value="XVO"/>
-        <enumeration value="XVP"/>
-        <enumeration value="XVQ"/>
-        <enumeration value="XVR"/>
-        <enumeration value="XVS"/>
-        <enumeration value="XVY"/>
-        <enumeration value="XWA"/>
-        <enumeration value="XWB"/>
-        <enumeration value="XWC"/>
-        <enumeration value="XWD"/>
-        <enumeration value="XWF"/>
-        <enumeration value="XWG"/>
-        <enumeration value="XWH"/>
-        <enumeration value="XWJ"/>
-        <enumeration value="XWK"/>
-        <enumeration value="XWL"/>
-        <enumeration value="XWM"/>
-        <enumeration value="XWN"/>
-        <enumeration value="XWP"/>
-        <enumeration value="XWQ"/>
-        <enumeration value="XWR"/>
-        <enumeration value="XWS"/>
-        <enumeration value="XWT"/>
-        <enumeration value="XWU"/>
-        <enumeration value="XWV"/>
-        <enumeration value="XWW"/>
-        <enumeration value="XWX"/>
-        <enumeration value="XWY"/>
-        <enumeration value="XWZ"/>
-        <enumeration value="XXA"/>
-        <enumeration value="XXB"/>
-        <enumeration value="XXC"/>
-        <enumeration value="XXD"/>
-        <enumeration value="XXF"/>
-        <enumeration value="XXG"/>
-        <enumeration value="XXH"/>
-        <enumeration value="XXJ"/>
-        <enumeration value="XXK"/>
-        <enumeration value="XYA"/>
-        <enumeration value="XYB"/>
-        <enumeration value="XYC"/>
-        <enumeration value="XYD"/>
-        <enumeration value="XYF"/>
-        <enumeration value="XYG"/>
-        <enumeration value="XYH"/>
-        <enumeration value="XYJ"/>
-        <enumeration value="XYK"/>
-        <enumeration value="XYL"/>
-        <enumeration value="XYM"/>
-        <enumeration value="XYN"/>
-        <enumeration value="XYP"/>
-        <enumeration value="XYQ"/>
-        <enumeration value="XYR"/>
-        <enumeration value="XYS"/>
-        <enumeration value="XYT"/>
-        <enumeration value="XYV"/>
-        <enumeration value="XYW"/>
-        <enumeration value="XYX"/>
-        <enumeration value="XYY"/>
-        <enumeration value="XYZ"/>
-        <enumeration value="XZA"/>
-        <enumeration value="XZB"/>
-        <enumeration value="XZC"/>
-        <enumeration value="XZD"/>
-        <enumeration value="XZF"/>
-        <enumeration value="XZG"/>
-        <enumeration value="XZH"/>
-        <enumeration value="XZJ"/>
-        <enumeration value="XZK"/>
-        <enumeration value="XZL"/>
-        <enumeration value="XZM"/>
-        <enumeration value="XZN"/>
-        <enumeration value="XZP"/>
-        <enumeration value="XZQ"/>
-        <enumeration value="XZR"/>
-        <enumeration value="XZS"/>
-        <enumeration value="XZT"/>
-        <enumeration value="XZU"/>
-        <enumeration value="XZV"/>
-        <enumeration value="XZW"/>
-        <enumeration value="XZX"/>
-        <enumeration value="XZY"/>
-        <enumeration value="XZZ"/>
-        <enumeration value="10"/>
-        <enumeration value="11"/>
-        <enumeration value="13"/>
-        <enumeration value="14"/>
-        <enumeration value="15"/>
-        <enumeration value="20"/>
-        <enumeration value="21"/>
-        <enumeration value="22"/>
-        <enumeration value="23"/>
-        <enumeration value="24"/>
-        <enumeration value="25"/>
-        <enumeration value="27"/>
-        <enumeration value="28"/>
-        <enumeration value="33"/>
-        <enumeration value="34"/>
-        <enumeration value="35"/>
-        <enumeration value="37"/>
-        <enumeration value="38"/>
-        <enumeration value="40"/>
-        <enumeration value="41"/>
-        <enumeration value="56"/>
-        <enumeration value="57"/>
-        <enumeration value="58"/>
-        <enumeration value="59"/>
-        <enumeration value="60"/>
-        <enumeration value="61"/>
-        <enumeration value="64"/>
-        <enumeration value="66"/>
-        <enumeration value="74"/>
-        <enumeration value="76"/>
-        <enumeration value="77"/>
-        <enumeration value="78"/>
-        <enumeration value="80"/>
-        <enumeration value="81"/>
-        <enumeration value="84"/>
-        <enumeration value="85"/>
-        <enumeration value="87"/>
-        <enumeration value="89"/>
-        <enumeration value="91"/>
-        <enumeration value="1I"/>
-        <enumeration value="2A"/>
-        <enumeration value="2B"/>
-        <enumeration value="2C"/>
-        <enumeration value="2G"/>
-        <enumeration value="2H"/>
-        <enumeration value="2I"/>
-        <enumeration value="2J"/>
-        <enumeration value="2K"/>
-        <enumeration value="2L"/>
-        <enumeration value="2M"/>
-        <enumeration value="2N"/>
-        <enumeration value="2P"/>
-        <enumeration value="2Q"/>
-        <enumeration value="2R"/>
-        <enumeration value="2U"/>
-        <enumeration value="2X"/>
-        <enumeration value="2Y"/>
-        <enumeration value="2Z"/>
-        <enumeration value="3B"/>
-        <enumeration value="3C"/>
-        <enumeration value="4C"/>
-        <enumeration value="4G"/>
-        <enumeration value="4H"/>
-        <enumeration value="4K"/>
-        <enumeration value="4L"/>
-        <enumeration value="4M"/>
-        <enumeration value="4N"/>
-        <enumeration value="4O"/>
-        <enumeration value="4P"/>
-        <enumeration value="4Q"/>
-        <enumeration value="4R"/>
-        <enumeration value="4T"/>
-        <enumeration value="4U"/>
-        <enumeration value="4W"/>
-        <enumeration value="4X"/>
-        <enumeration value="5A"/>
-        <enumeration value="5B"/>
-        <enumeration value="5E"/>
-        <enumeration value="5J"/>
-        <enumeration value="A1"/>
-        <enumeration value="A10"/>
-        <enumeration value="A11"/>
-        <enumeration value="A12"/>
-        <enumeration value="A13"/>
-        <enumeration value="A14"/>
-        <enumeration value="A15"/>
-        <enumeration value="A16"/>
-        <enumeration value="A17"/>
-        <enumeration value="A18"/>
-        <enumeration value="A19"/>
-        <enumeration value="A2"/>
-        <enumeration value="A20"/>
-        <enumeration value="A21"/>
-        <enumeration value="A22"/>
-        <enumeration value="A23"/>
-        <enumeration value="A24"/>
-        <enumeration value="A25"/>
-        <enumeration value="A26"/>
-        <enumeration value="A27"/>
-        <enumeration value="A28"/>
-        <enumeration value="A29"/>
-        <enumeration value="A3"/>
-        <enumeration value="A30"/>
-        <enumeration value="A31"/>
-        <enumeration value="A32"/>
-        <enumeration value="A33"/>
-        <enumeration value="A34"/>
-        <enumeration value="A35"/>
-        <enumeration value="A36"/>
-        <enumeration value="A37"/>
-        <enumeration value="A38"/>
-        <enumeration value="A39"/>
-        <enumeration value="A4"/>
-        <enumeration value="A40"/>
-        <enumeration value="A41"/>
-        <enumeration value="A42"/>
-        <enumeration value="A43"/>
-        <enumeration value="A44"/>
-        <enumeration value="A45"/>
-        <enumeration value="A47"/>
-        <enumeration value="A48"/>
-        <enumeration value="A49"/>
-        <enumeration value="A5"/>
-        <enumeration value="A50"/>
-        <enumeration value="A51"/>
-        <enumeration value="A52"/>
-        <enumeration value="A53"/>
-        <enumeration value="A54"/>
-        <enumeration value="A55"/>
-        <enumeration value="A56"/>
-        <enumeration value="A57"/>
-        <enumeration value="A58"/>
-        <enumeration value="A59"/>
-        <enumeration value="A6"/>
-        <enumeration value="A60"/>
-        <enumeration value="A61"/>
-        <enumeration value="A62"/>
-        <enumeration value="A63"/>
-        <enumeration value="A64"/>
-        <enumeration value="A65"/>
-        <enumeration value="A66"/>
-        <enumeration value="A67"/>
-        <enumeration value="A68"/>
-        <enumeration value="A69"/>
-        <enumeration value="A7"/>
-        <enumeration value="A70"/>
-        <enumeration value="A71"/>
-        <enumeration value="A73"/>
-        <enumeration value="A74"/>
-        <enumeration value="A75"/>
-        <enumeration value="A76"/>
-        <enumeration value="A77"/>
-        <enumeration value="A78"/>
-        <enumeration value="A79"/>
-        <enumeration value="A8"/>
-        <enumeration value="A80"/>
-        <enumeration value="A81"/>
-        <enumeration value="A82"/>
-        <enumeration value="A83"/>
-        <enumeration value="A84"/>
-        <enumeration value="A85"/>
-        <enumeration value="A86"/>
-        <enumeration value="A87"/>
-        <enumeration value="A88"/>
-        <enumeration value="A89"/>
-        <enumeration value="A9"/>
-        <enumeration value="A90"/>
-        <enumeration value="A91"/>
-        <enumeration value="A93"/>
-        <enumeration value="A94"/>
-        <enumeration value="A95"/>
-        <enumeration value="A96"/>
-        <enumeration value="A97"/>
-        <enumeration value="A98"/>
-        <enumeration value="A99"/>
-        <enumeration value="AA"/>
-        <enumeration value="AB"/>
-        <enumeration value="ACR"/>
-        <enumeration value="ACT"/>
-        <enumeration value="AD"/>
-        <enumeration value="AE"/>
-        <enumeration value="AH"/>
-        <enumeration value="AI"/>
-        <enumeration value="AK"/>
-        <enumeration value="AL"/>
-        <enumeration value="AMH"/>
-        <enumeration value="AMP"/>
-        <enumeration value="ANN"/>
-        <enumeration value="APZ"/>
-        <enumeration value="AQ"/>
-        <enumeration value="ARE"/>
-        <enumeration value="AS"/>
-        <enumeration value="ASM"/>
-        <enumeration value="ASU"/>
-        <enumeration value="ATM"/>
-        <enumeration value="ATT"/>
-        <enumeration value="AWG"/>
-        <enumeration value="AY"/>
-        <enumeration value="AZ"/>
-        <enumeration value="B1"/>
-        <enumeration value="B10"/>
-        <enumeration value="B11"/>
-        <enumeration value="B12"/>
-        <enumeration value="B13"/>
-        <enumeration value="B14"/>
-        <enumeration value="B15"/>
-        <enumeration value="B16"/>
-        <enumeration value="B17"/>
-        <enumeration value="B18"/>
-        <enumeration value="B19"/>
-        <enumeration value="B20"/>
-        <enumeration value="B21"/>
-        <enumeration value="B22"/>
-        <enumeration value="B23"/>
-        <enumeration value="B24"/>
-        <enumeration value="B25"/>
-        <enumeration value="B26"/>
-        <enumeration value="B27"/>
-        <enumeration value="B28"/>
-        <enumeration value="B29"/>
-        <enumeration value="B3"/>
-        <enumeration value="B30"/>
-        <enumeration value="B31"/>
-        <enumeration value="B32"/>
-        <enumeration value="B33"/>
-        <enumeration value="B34"/>
-        <enumeration value="B35"/>
-        <enumeration value="B36"/>
-        <enumeration value="B37"/>
-        <enumeration value="B38"/>
-        <enumeration value="B39"/>
-        <enumeration value="B4"/>
-        <enumeration value="B40"/>
-        <enumeration value="B41"/>
-        <enumeration value="B42"/>
-        <enumeration value="B43"/>
-        <enumeration value="B44"/>
-        <enumeration value="B45"/>
-        <enumeration value="B46"/>
-        <enumeration value="B47"/>
-        <enumeration value="B48"/>
-        <enumeration value="B49"/>
-        <enumeration value="B50"/>
-        <enumeration value="B51"/>
-        <enumeration value="B52"/>
-        <enumeration value="B53"/>
-        <enumeration value="B54"/>
-        <enumeration value="B55"/>
-        <enumeration value="B56"/>
-        <enumeration value="B57"/>
-        <enumeration value="B58"/>
-        <enumeration value="B59"/>
-        <enumeration value="B60"/>
-        <enumeration value="B61"/>
-        <enumeration value="B62"/>
-        <enumeration value="B63"/>
-        <enumeration value="B64"/>
-        <enumeration value="B65"/>
-        <enumeration value="B66"/>
-        <enumeration value="B67"/>
-        <enumeration value="B68"/>
-        <enumeration value="B69"/>
-        <enumeration value="B7"/>
-        <enumeration value="B70"/>
-        <enumeration value="B71"/>
-        <enumeration value="B72"/>
-        <enumeration value="B73"/>
-        <enumeration value="B74"/>
-        <enumeration value="B75"/>
-        <enumeration value="B76"/>
-        <enumeration value="B77"/>
-        <enumeration value="B78"/>
-        <enumeration value="B79"/>
-        <enumeration value="B8"/>
-        <enumeration value="B80"/>
-        <enumeration value="B81"/>
-        <enumeration value="B82"/>
-        <enumeration value="B83"/>
-        <enumeration value="B84"/>
-        <enumeration value="B85"/>
-        <enumeration value="B86"/>
-        <enumeration value="B87"/>
-        <enumeration value="B88"/>
-        <enumeration value="B89"/>
-        <enumeration value="B90"/>
-        <enumeration value="B91"/>
-        <enumeration value="B92"/>
-        <enumeration value="B93"/>
-        <enumeration value="B94"/>
-        <enumeration value="B95"/>
-        <enumeration value="B96"/>
-        <enumeration value="B97"/>
-        <enumeration value="B98"/>
-        <enumeration value="B99"/>
-        <enumeration value="BAR"/>
-        <enumeration value="BB"/>
-        <enumeration value="BFT"/>
-        <enumeration value="BHP"/>
-        <enumeration value="BIL"/>
-        <enumeration value="BLD"/>
-        <enumeration value="BLL"/>
-        <enumeration value="BP"/>
-        <enumeration value="BPM"/>
-        <enumeration value="BQL"/>
-        <enumeration value="BTU"/>
-        <enumeration value="BUA"/>
-        <enumeration value="BUI"/>
-        <enumeration value="C0"/>
-        <enumeration value="C10"/>
-        <enumeration value="C11"/>
-        <enumeration value="C12"/>
-        <enumeration value="C13"/>
-        <enumeration value="C14"/>
-        <enumeration value="C15"/>
-        <enumeration value="C16"/>
-        <enumeration value="C17"/>
-        <enumeration value="C18"/>
-        <enumeration value="C19"/>
-        <enumeration value="C20"/>
-        <enumeration value="C21"/>
-        <enumeration value="C22"/>
-        <enumeration value="C23"/>
-        <enumeration value="C24"/>
-        <enumeration value="C25"/>
-        <enumeration value="C26"/>
-        <enumeration value="C27"/>
-        <enumeration value="C28"/>
-        <enumeration value="C29"/>
-        <enumeration value="C3"/>
-        <enumeration value="C30"/>
-        <enumeration value="C31"/>
-        <enumeration value="C32"/>
-        <enumeration value="C33"/>
-        <enumeration value="C34"/>
-        <enumeration value="C35"/>
-        <enumeration value="C36"/>
-        <enumeration value="C37"/>
-        <enumeration value="C38"/>
-        <enumeration value="C39"/>
-        <enumeration value="C40"/>
-        <enumeration value="C41"/>
-        <enumeration value="C42"/>
-        <enumeration value="C43"/>
-        <enumeration value="C44"/>
-        <enumeration value="C45"/>
-        <enumeration value="C46"/>
-        <enumeration value="C47"/>
-        <enumeration value="C48"/>
-        <enumeration value="C49"/>
-        <enumeration value="C50"/>
-        <enumeration value="C51"/>
-        <enumeration value="C52"/>
-        <enumeration value="C53"/>
-        <enumeration value="C54"/>
-        <enumeration value="C55"/>
-        <enumeration value="C56"/>
-        <enumeration value="C57"/>
-        <enumeration value="C58"/>
-        <enumeration value="C59"/>
-        <enumeration value="C60"/>
-        <enumeration value="C61"/>
-        <enumeration value="C62"/>
-        <enumeration value="C63"/>
-        <enumeration value="C64"/>
-        <enumeration value="C65"/>
-        <enumeration value="C66"/>
-        <enumeration value="C67"/>
-        <enumeration value="C68"/>
-        <enumeration value="C69"/>
-        <enumeration value="C7"/>
-        <enumeration value="C70"/>
-        <enumeration value="C71"/>
-        <enumeration value="C72"/>
-        <enumeration value="C73"/>
-        <enumeration value="C74"/>
-        <enumeration value="C75"/>
-        <enumeration value="C76"/>
-        <enumeration value="C78"/>
-        <enumeration value="C79"/>
-        <enumeration value="C8"/>
-        <enumeration value="C80"/>
-        <enumeration value="C81"/>
-        <enumeration value="C82"/>
-        <enumeration value="C83"/>
-        <enumeration value="C84"/>
-        <enumeration value="C85"/>
-        <enumeration value="C86"/>
-        <enumeration value="C87"/>
-        <enumeration value="C88"/>
-        <enumeration value="C89"/>
-        <enumeration value="C9"/>
-        <enumeration value="C90"/>
-        <enumeration value="C91"/>
-        <enumeration value="C92"/>
-        <enumeration value="C93"/>
-        <enumeration value="C94"/>
-        <enumeration value="C95"/>
-        <enumeration value="C96"/>
-        <enumeration value="C97"/>
-        <enumeration value="C99"/>
-        <enumeration value="CCT"/>
-        <enumeration value="CDL"/>
-        <enumeration value="CEL"/>
-        <enumeration value="CEN"/>
-        <enumeration value="CG"/>
-        <enumeration value="CGM"/>
-        <enumeration value="CKG"/>
-        <enumeration value="CLF"/>
-        <enumeration value="CLT"/>
-        <enumeration value="CMK"/>
-        <enumeration value="CMQ"/>
-        <enumeration value="CMT"/>
-        <enumeration value="CNP"/>
-        <enumeration value="CNT"/>
-        <enumeration value="COU"/>
-        <enumeration value="CTG"/>
-        <enumeration value="CTM"/>
-        <enumeration value="CTN"/>
-        <enumeration value="CUR"/>
-        <enumeration value="CWA"/>
-        <enumeration value="CWI"/>
-        <enumeration value="D03"/>
-        <enumeration value="D04"/>
-        <enumeration value="D1"/>
-        <enumeration value="D10"/>
-        <enumeration value="D11"/>
-        <enumeration value="D12"/>
-        <enumeration value="D13"/>
-        <enumeration value="D15"/>
-        <enumeration value="D16"/>
-        <enumeration value="D17"/>
-        <enumeration value="D18"/>
-        <enumeration value="D19"/>
-        <enumeration value="D2"/>
-        <enumeration value="D20"/>
-        <enumeration value="D21"/>
-        <enumeration value="D22"/>
-        <enumeration value="D23"/>
-        <enumeration value="D24"/>
-        <enumeration value="D25"/>
-        <enumeration value="D26"/>
-        <enumeration value="D27"/>
-        <enumeration value="D29"/>
-        <enumeration value="D30"/>
-        <enumeration value="D31"/>
-        <enumeration value="D32"/>
-        <enumeration value="D33"/>
-        <enumeration value="D34"/>
-        <enumeration value="D35"/>
-        <enumeration value="D36"/>
-        <enumeration value="D37"/>
-        <enumeration value="D38"/>
-        <enumeration value="D39"/>
-        <enumeration value="D41"/>
-        <enumeration value="D42"/>
-        <enumeration value="D43"/>
-        <enumeration value="D44"/>
-        <enumeration value="D45"/>
-        <enumeration value="D46"/>
-        <enumeration value="D47"/>
-        <enumeration value="D48"/>
-        <enumeration value="D49"/>
-        <enumeration value="D5"/>
-        <enumeration value="D50"/>
-        <enumeration value="D51"/>
-        <enumeration value="D52"/>
-        <enumeration value="D53"/>
-        <enumeration value="D54"/>
-        <enumeration value="D55"/>
-        <enumeration value="D56"/>
-        <enumeration value="D57"/>
-        <enumeration value="D58"/>
-        <enumeration value="D59"/>
-        <enumeration value="D6"/>
-        <enumeration value="D60"/>
-        <enumeration value="D61"/>
-        <enumeration value="D62"/>
-        <enumeration value="D63"/>
-        <enumeration value="D65"/>
-        <enumeration value="D68"/>
-        <enumeration value="D69"/>
-        <enumeration value="D70"/>
-        <enumeration value="D71"/>
-        <enumeration value="D72"/>
-        <enumeration value="D73"/>
-        <enumeration value="D74"/>
-        <enumeration value="D75"/>
-        <enumeration value="D76"/>
-        <enumeration value="D77"/>
-        <enumeration value="D78"/>
-        <enumeration value="D80"/>
-        <enumeration value="D81"/>
-        <enumeration value="D82"/>
-        <enumeration value="D83"/>
-        <enumeration value="D85"/>
-        <enumeration value="D86"/>
-        <enumeration value="D87"/>
-        <enumeration value="D88"/>
-        <enumeration value="D89"/>
-        <enumeration value="D9"/>
-        <enumeration value="D91"/>
-        <enumeration value="D93"/>
-        <enumeration value="D94"/>
-        <enumeration value="D95"/>
-        <enumeration value="DAA"/>
-        <enumeration value="DAD"/>
-        <enumeration value="DAY"/>
-        <enumeration value="DB"/>
-        <enumeration value="DD"/>
-        <enumeration value="DEC"/>
-        <enumeration value="DG"/>
-        <enumeration value="DJ"/>
-        <enumeration value="DLT"/>
-        <enumeration value="DMA"/>
-        <enumeration value="DMK"/>
-        <enumeration value="DMO"/>
-        <enumeration value="DMQ"/>
-        <enumeration value="DMT"/>
-        <enumeration value="DN"/>
-        <enumeration value="DPC"/>
-        <enumeration value="DPR"/>
-        <enumeration value="DPT"/>
-        <enumeration value="DRA"/>
-        <enumeration value="DRI"/>
-        <enumeration value="DRL"/>
-        <enumeration value="DT"/>
-        <enumeration value="DTN"/>
-        <enumeration value="DU"/>
-        <enumeration value="DWT"/>
-        <enumeration value="DX"/>
-        <enumeration value="DZN"/>
-        <enumeration value="DZP"/>
-        <enumeration value="E01"/>
-        <enumeration value="E07"/>
-        <enumeration value="E08"/>
-        <enumeration value="E09"/>
-        <enumeration value="E10"/>
-        <enumeration value="E11"/>
-        <enumeration value="E12"/>
-        <enumeration value="E14"/>
-        <enumeration value="E15"/>
-        <enumeration value="E16"/>
-        <enumeration value="E17"/>
-        <enumeration value="E18"/>
-        <enumeration value="E19"/>
-        <enumeration value="E20"/>
-        <enumeration value="E21"/>
-        <enumeration value="E22"/>
-        <enumeration value="E23"/>
-        <enumeration value="E25"/>
-        <enumeration value="E27"/>
-        <enumeration value="E28"/>
-        <enumeration value="E30"/>
-        <enumeration value="E31"/>
-        <enumeration value="E32"/>
-        <enumeration value="E33"/>
-        <enumeration value="E34"/>
-        <enumeration value="E35"/>
-        <enumeration value="E36"/>
-        <enumeration value="E37"/>
-        <enumeration value="E38"/>
-        <enumeration value="E39"/>
-        <enumeration value="E4"/>
-        <enumeration value="E40"/>
-        <enumeration value="E41"/>
-        <enumeration value="E42"/>
-        <enumeration value="E43"/>
-        <enumeration value="E44"/>
-        <enumeration value="E45"/>
-        <enumeration value="E46"/>
-        <enumeration value="E47"/>
-        <enumeration value="E48"/>
-        <enumeration value="E49"/>
-        <enumeration value="E50"/>
-        <enumeration value="E51"/>
-        <enumeration value="E52"/>
-        <enumeration value="E53"/>
-        <enumeration value="E54"/>
-        <enumeration value="E55"/>
-        <enumeration value="E56"/>
-        <enumeration value="E57"/>
-        <enumeration value="E58"/>
-        <enumeration value="E59"/>
-        <enumeration value="E60"/>
-        <enumeration value="E61"/>
-        <enumeration value="E62"/>
-        <enumeration value="E63"/>
-        <enumeration value="E64"/>
-        <enumeration value="E65"/>
-        <enumeration value="E66"/>
-        <enumeration value="E67"/>
-        <enumeration value="E68"/>
-        <enumeration value="E69"/>
-        <enumeration value="E70"/>
-        <enumeration value="E71"/>
-        <enumeration value="E72"/>
-        <enumeration value="E73"/>
-        <enumeration value="E74"/>
-        <enumeration value="E75"/>
-        <enumeration value="E76"/>
-        <enumeration value="E77"/>
-        <enumeration value="E78"/>
-        <enumeration value="E79"/>
-        <enumeration value="E80"/>
-        <enumeration value="E81"/>
-        <enumeration value="E82"/>
-        <enumeration value="E83"/>
-        <enumeration value="E84"/>
-        <enumeration value="E85"/>
-        <enumeration value="E86"/>
-        <enumeration value="E87"/>
-        <enumeration value="E88"/>
-        <enumeration value="E89"/>
-        <enumeration value="E90"/>
-        <enumeration value="E91"/>
-        <enumeration value="E92"/>
-        <enumeration value="E93"/>
-        <enumeration value="E94"/>
-        <enumeration value="E95"/>
-        <enumeration value="E96"/>
-        <enumeration value="E97"/>
-        <enumeration value="E98"/>
-        <enumeration value="E99"/>
-        <enumeration value="EA"/>
-        <enumeration value="EB"/>
-        <enumeration value="EQ"/>
-        <enumeration value="F01"/>
-        <enumeration value="F02"/>
-        <enumeration value="F03"/>
-        <enumeration value="F04"/>
-        <enumeration value="F05"/>
-        <enumeration value="F06"/>
-        <enumeration value="F07"/>
-        <enumeration value="F08"/>
-        <enumeration value="F10"/>
-        <enumeration value="F11"/>
-        <enumeration value="F12"/>
-        <enumeration value="F13"/>
-        <enumeration value="F14"/>
-        <enumeration value="F15"/>
-        <enumeration value="F16"/>
-        <enumeration value="F17"/>
-        <enumeration value="F18"/>
-        <enumeration value="F19"/>
-        <enumeration value="F20"/>
-        <enumeration value="F21"/>
-        <enumeration value="F22"/>
-        <enumeration value="F23"/>
-        <enumeration value="F24"/>
-        <enumeration value="F25"/>
-        <enumeration value="F26"/>
-        <enumeration value="F27"/>
-        <enumeration value="F28"/>
-        <enumeration value="F29"/>
-        <enumeration value="F30"/>
-        <enumeration value="F31"/>
-        <enumeration value="F32"/>
-        <enumeration value="F33"/>
-        <enumeration value="F34"/>
-        <enumeration value="F35"/>
-        <enumeration value="F36"/>
-        <enumeration value="F37"/>
-        <enumeration value="F38"/>
-        <enumeration value="F39"/>
-        <enumeration value="F40"/>
-        <enumeration value="F41"/>
-        <enumeration value="F42"/>
-        <enumeration value="F43"/>
-        <enumeration value="F44"/>
-        <enumeration value="F45"/>
-        <enumeration value="F46"/>
-        <enumeration value="F47"/>
-        <enumeration value="F48"/>
-        <enumeration value="F49"/>
-        <enumeration value="F50"/>
-        <enumeration value="F51"/>
-        <enumeration value="F52"/>
-        <enumeration value="F53"/>
-        <enumeration value="F54"/>
-        <enumeration value="F55"/>
-        <enumeration value="F56"/>
-        <enumeration value="F57"/>
-        <enumeration value="F58"/>
-        <enumeration value="F59"/>
-        <enumeration value="F60"/>
-        <enumeration value="F61"/>
-        <enumeration value="F62"/>
-        <enumeration value="F63"/>
-        <enumeration value="F64"/>
-        <enumeration value="F65"/>
-        <enumeration value="F66"/>
-        <enumeration value="F67"/>
-        <enumeration value="F68"/>
-        <enumeration value="F69"/>
-        <enumeration value="F70"/>
-        <enumeration value="F71"/>
-        <enumeration value="F72"/>
-        <enumeration value="F73"/>
-        <enumeration value="F74"/>
-        <enumeration value="F75"/>
-        <enumeration value="F76"/>
-        <enumeration value="F77"/>
-        <enumeration value="F78"/>
-        <enumeration value="F79"/>
-        <enumeration value="F80"/>
-        <enumeration value="F81"/>
-        <enumeration value="F82"/>
-        <enumeration value="F83"/>
-        <enumeration value="F84"/>
-        <enumeration value="F85"/>
-        <enumeration value="F86"/>
-        <enumeration value="F87"/>
-        <enumeration value="F88"/>
-        <enumeration value="F89"/>
-        <enumeration value="F90"/>
-        <enumeration value="F91"/>
-        <enumeration value="F92"/>
-        <enumeration value="F93"/>
-        <enumeration value="F94"/>
-        <enumeration value="F95"/>
-        <enumeration value="F96"/>
-        <enumeration value="F97"/>
-        <enumeration value="F98"/>
-        <enumeration value="F99"/>
-        <enumeration value="FAH"/>
-        <enumeration value="FAR"/>
-        <enumeration value="FBM"/>
-        <enumeration value="FC"/>
-        <enumeration value="FF"/>
-        <enumeration value="FH"/>
-        <enumeration value="FIT"/>
-        <enumeration value="FL"/>
-        <enumeration value="FOT"/>
-        <enumeration value="FP"/>
-        <enumeration value="FR"/>
-        <enumeration value="FS"/>
-        <enumeration value="FTK"/>
-        <enumeration value="FTQ"/>
-        <enumeration value="G01"/>
-        <enumeration value="G04"/>
-        <enumeration value="G05"/>
-        <enumeration value="G06"/>
-        <enumeration value="G08"/>
-        <enumeration value="G09"/>
-        <enumeration value="G10"/>
-        <enumeration value="G11"/>
-        <enumeration value="G12"/>
-        <enumeration value="G13"/>
-        <enumeration value="G14"/>
-        <enumeration value="G15"/>
-        <enumeration value="G16"/>
-        <enumeration value="G17"/>
-        <enumeration value="G18"/>
-        <enumeration value="G19"/>
-        <enumeration value="G2"/>
-        <enumeration value="G20"/>
-        <enumeration value="G21"/>
-        <enumeration value="G23"/>
-        <enumeration value="G24"/>
-        <enumeration value="G25"/>
-        <enumeration value="G26"/>
-        <enumeration value="G27"/>
-        <enumeration value="G28"/>
-        <enumeration value="G29"/>
-        <enumeration value="G3"/>
-        <enumeration value="G30"/>
-        <enumeration value="G31"/>
-        <enumeration value="G32"/>
-        <enumeration value="G33"/>
-        <enumeration value="G34"/>
-        <enumeration value="G35"/>
-        <enumeration value="G36"/>
-        <enumeration value="G37"/>
-        <enumeration value="G38"/>
-        <enumeration value="G39"/>
-        <enumeration value="G40"/>
-        <enumeration value="G41"/>
-        <enumeration value="G42"/>
-        <enumeration value="G43"/>
-        <enumeration value="G44"/>
-        <enumeration value="G45"/>
-        <enumeration value="G46"/>
-        <enumeration value="G47"/>
-        <enumeration value="G48"/>
-        <enumeration value="G49"/>
-        <enumeration value="G50"/>
-        <enumeration value="G51"/>
-        <enumeration value="G52"/>
-        <enumeration value="G53"/>
-        <enumeration value="G54"/>
-        <enumeration value="G55"/>
-        <enumeration value="G56"/>
-        <enumeration value="G57"/>
-        <enumeration value="G58"/>
-        <enumeration value="G59"/>
-        <enumeration value="G60"/>
-        <enumeration value="G61"/>
-        <enumeration value="G62"/>
-        <enumeration value="G63"/>
-        <enumeration value="G64"/>
-        <enumeration value="G65"/>
-        <enumeration value="G66"/>
-        <enumeration value="G67"/>
-        <enumeration value="G68"/>
-        <enumeration value="G69"/>
-        <enumeration value="G70"/>
-        <enumeration value="G71"/>
-        <enumeration value="G72"/>
-        <enumeration value="G73"/>
-        <enumeration value="G74"/>
-        <enumeration value="G75"/>
-        <enumeration value="G76"/>
-        <enumeration value="G77"/>
-        <enumeration value="G78"/>
-        <enumeration value="G79"/>
-        <enumeration value="G80"/>
-        <enumeration value="G81"/>
-        <enumeration value="G82"/>
-        <enumeration value="G83"/>
-        <enumeration value="G84"/>
-        <enumeration value="G85"/>
-        <enumeration value="G86"/>
-        <enumeration value="G87"/>
-        <enumeration value="G88"/>
-        <enumeration value="G89"/>
-        <enumeration value="G90"/>
-        <enumeration value="G91"/>
-        <enumeration value="G92"/>
-        <enumeration value="G93"/>
-        <enumeration value="G94"/>
-        <enumeration value="G95"/>
-        <enumeration value="G96"/>
-        <enumeration value="G97"/>
-        <enumeration value="G98"/>
-        <enumeration value="G99"/>
-        <enumeration value="GB"/>
-        <enumeration value="GBQ"/>
-        <enumeration value="GDW"/>
-        <enumeration value="GE"/>
-        <enumeration value="GF"/>
-        <enumeration value="GFI"/>
-        <enumeration value="GGR"/>
-        <enumeration value="GIA"/>
-        <enumeration value="GIC"/>
-        <enumeration value="GII"/>
-        <enumeration value="GIP"/>
-        <enumeration value="GJ"/>
-        <enumeration value="GL"/>
-        <enumeration value="GLD"/>
-        <enumeration value="GLI"/>
-        <enumeration value="GLL"/>
-        <enumeration value="GM"/>
-        <enumeration value="GO"/>
-        <enumeration value="GP"/>
-        <enumeration value="GQ"/>
-        <enumeration value="GRM"/>
-        <enumeration value="GRN"/>
-        <enumeration value="GRO"/>
-        <enumeration value="GRT"/>
-        <enumeration value="GT"/>
-        <enumeration value="GV"/>
-        <enumeration value="GWH"/>
-        <enumeration value="H03"/>
-        <enumeration value="H04"/>
-        <enumeration value="H05"/>
-        <enumeration value="H06"/>
-        <enumeration value="H07"/>
-        <enumeration value="H08"/>
-        <enumeration value="H09"/>
-        <enumeration value="H10"/>
-        <enumeration value="H11"/>
-        <enumeration value="H12"/>
-        <enumeration value="H13"/>
-        <enumeration value="H14"/>
-        <enumeration value="H15"/>
-        <enumeration value="H16"/>
-        <enumeration value="H18"/>
-        <enumeration value="H19"/>
-        <enumeration value="H20"/>
-        <enumeration value="H21"/>
-        <enumeration value="H22"/>
-        <enumeration value="H23"/>
-        <enumeration value="H24"/>
-        <enumeration value="H25"/>
-        <enumeration value="H26"/>
-        <enumeration value="H27"/>
-        <enumeration value="H28"/>
-        <enumeration value="H29"/>
-        <enumeration value="H30"/>
-        <enumeration value="H31"/>
-        <enumeration value="H32"/>
-        <enumeration value="H33"/>
-        <enumeration value="H34"/>
-        <enumeration value="H35"/>
-        <enumeration value="H36"/>
-        <enumeration value="H37"/>
-        <enumeration value="H38"/>
-        <enumeration value="H39"/>
-        <enumeration value="H40"/>
-        <enumeration value="H41"/>
-        <enumeration value="H42"/>
-        <enumeration value="H43"/>
-        <enumeration value="H44"/>
-        <enumeration value="H45"/>
-        <enumeration value="H46"/>
-        <enumeration value="H47"/>
-        <enumeration value="H48"/>
-        <enumeration value="H49"/>
-        <enumeration value="H50"/>
-        <enumeration value="H51"/>
-        <enumeration value="H52"/>
-        <enumeration value="H53"/>
-        <enumeration value="H54"/>
-        <enumeration value="H55"/>
-        <enumeration value="H56"/>
-        <enumeration value="H57"/>
-        <enumeration value="H58"/>
-        <enumeration value="H59"/>
-        <enumeration value="H60"/>
-        <enumeration value="H61"/>
-        <enumeration value="H62"/>
-        <enumeration value="H63"/>
-        <enumeration value="H64"/>
-        <enumeration value="H65"/>
-        <enumeration value="H66"/>
-        <enumeration value="H67"/>
-        <enumeration value="H68"/>
-        <enumeration value="H69"/>
-        <enumeration value="H70"/>
-        <enumeration value="H71"/>
-        <enumeration value="H72"/>
-        <enumeration value="H73"/>
-        <enumeration value="H74"/>
-        <enumeration value="H75"/>
-        <enumeration value="H76"/>
-        <enumeration value="H77"/>
-        <enumeration value="H78"/>
-        <enumeration value="H79"/>
-        <enumeration value="H80"/>
-        <enumeration value="H81"/>
-        <enumeration value="H82"/>
-        <enumeration value="H83"/>
-        <enumeration value="H84"/>
-        <enumeration value="H85"/>
-        <enumeration value="H87"/>
-        <enumeration value="H88"/>
-        <enumeration value="H89"/>
-        <enumeration value="H90"/>
-        <enumeration value="H91"/>
-        <enumeration value="H92"/>
-        <enumeration value="H93"/>
-        <enumeration value="H94"/>
-        <enumeration value="H95"/>
-        <enumeration value="H96"/>
-        <enumeration value="H98"/>
-        <enumeration value="H99"/>
-        <enumeration value="HA"/>
-        <enumeration value="HAR"/>
-        <enumeration value="HBA"/>
-        <enumeration value="HBX"/>
-        <enumeration value="HC"/>
-        <enumeration value="HDW"/>
-        <enumeration value="HEA"/>
-        <enumeration value="HGM"/>
-        <enumeration value="HH"/>
-        <enumeration value="HIU"/>
-        <enumeration value="HJ"/>
-        <enumeration value="HKM"/>
-        <enumeration value="HLT"/>
-        <enumeration value="HM"/>
-        <enumeration value="HMQ"/>
-        <enumeration value="HMT"/>
-        <enumeration value="HN"/>
-        <enumeration value="HP"/>
-        <enumeration value="HPA"/>
-        <enumeration value="HTZ"/>
-        <enumeration value="HUR"/>
-        <enumeration value="IA"/>
-        <enumeration value="IE"/>
-        <enumeration value="INH"/>
-        <enumeration value="INK"/>
-        <enumeration value="INQ"/>
-        <enumeration value="ISD"/>
-        <enumeration value="IU"/>
-        <enumeration value="IV"/>
-        <enumeration value="J10"/>
-        <enumeration value="J12"/>
-        <enumeration value="J13"/>
-        <enumeration value="J14"/>
-        <enumeration value="J15"/>
-        <enumeration value="J16"/>
-        <enumeration value="J17"/>
-        <enumeration value="J18"/>
-        <enumeration value="J19"/>
-        <enumeration value="J2"/>
-        <enumeration value="J20"/>
-        <enumeration value="J21"/>
-        <enumeration value="J22"/>
-        <enumeration value="J23"/>
-        <enumeration value="J24"/>
-        <enumeration value="J25"/>
-        <enumeration value="J26"/>
-        <enumeration value="J27"/>
-        <enumeration value="J28"/>
-        <enumeration value="J29"/>
-        <enumeration value="J30"/>
-        <enumeration value="J31"/>
-        <enumeration value="J32"/>
-        <enumeration value="J33"/>
-        <enumeration value="J34"/>
-        <enumeration value="J35"/>
-        <enumeration value="J36"/>
-        <enumeration value="J38"/>
-        <enumeration value="J39"/>
-        <enumeration value="J40"/>
-        <enumeration value="J41"/>
-        <enumeration value="J42"/>
-        <enumeration value="J43"/>
-        <enumeration value="J44"/>
-        <enumeration value="J45"/>
-        <enumeration value="J46"/>
-        <enumeration value="J47"/>
-        <enumeration value="J48"/>
-        <enumeration value="J49"/>
-        <enumeration value="J50"/>
-        <enumeration value="J51"/>
-        <enumeration value="J52"/>
-        <enumeration value="J53"/>
-        <enumeration value="J54"/>
-        <enumeration value="J55"/>
-        <enumeration value="J56"/>
-        <enumeration value="J57"/>
-        <enumeration value="J58"/>
-        <enumeration value="J59"/>
-        <enumeration value="J60"/>
-        <enumeration value="J61"/>
-        <enumeration value="J62"/>
-        <enumeration value="J63"/>
-        <enumeration value="J64"/>
-        <enumeration value="J65"/>
-        <enumeration value="J66"/>
-        <enumeration value="J67"/>
-        <enumeration value="J68"/>
-        <enumeration value="J69"/>
-        <enumeration value="J70"/>
-        <enumeration value="J71"/>
-        <enumeration value="J72"/>
-        <enumeration value="J73"/>
-        <enumeration value="J74"/>
-        <enumeration value="J75"/>
-        <enumeration value="J76"/>
-        <enumeration value="J78"/>
-        <enumeration value="J79"/>
-        <enumeration value="J81"/>
-        <enumeration value="J82"/>
-        <enumeration value="J83"/>
-        <enumeration value="J84"/>
-        <enumeration value="J85"/>
-        <enumeration value="J87"/>
-        <enumeration value="J89"/>
-        <enumeration value="J90"/>
-        <enumeration value="J91"/>
-        <enumeration value="J92"/>
-        <enumeration value="J93"/>
-        <enumeration value="J94"/>
-        <enumeration value="J95"/>
-        <enumeration value="J96"/>
-        <enumeration value="J97"/>
-        <enumeration value="J98"/>
-        <enumeration value="J99"/>
-        <enumeration value="JE"/>
-        <enumeration value="JK"/>
-        <enumeration value="JM"/>
-        <enumeration value="JNT"/>
-        <enumeration value="JOU"/>
-        <enumeration value="JPS"/>
-        <enumeration value="JWL"/>
-        <enumeration value="K1"/>
-        <enumeration value="K10"/>
-        <enumeration value="K11"/>
-        <enumeration value="K12"/>
-        <enumeration value="K13"/>
-        <enumeration value="K14"/>
-        <enumeration value="K15"/>
-        <enumeration value="K16"/>
-        <enumeration value="K17"/>
-        <enumeration value="K18"/>
-        <enumeration value="K19"/>
-        <enumeration value="K2"/>
-        <enumeration value="K20"/>
-        <enumeration value="K21"/>
-        <enumeration value="K22"/>
-        <enumeration value="K23"/>
-        <enumeration value="K24"/>
-        <enumeration value="K25"/>
-        <enumeration value="K26"/>
-        <enumeration value="K27"/>
-        <enumeration value="K28"/>
-        <enumeration value="K3"/>
-        <enumeration value="K30"/>
-        <enumeration value="K31"/>
-        <enumeration value="K32"/>
-        <enumeration value="K33"/>
-        <enumeration value="K34"/>
-        <enumeration value="K35"/>
-        <enumeration value="K36"/>
-        <enumeration value="K37"/>
-        <enumeration value="K38"/>
-        <enumeration value="K39"/>
-        <enumeration value="K40"/>
-        <enumeration value="K41"/>
-        <enumeration value="K42"/>
-        <enumeration value="K43"/>
-        <enumeration value="K45"/>
-        <enumeration value="K46"/>
-        <enumeration value="K47"/>
-        <enumeration value="K48"/>
-        <enumeration value="K49"/>
-        <enumeration value="K5"/>
-        <enumeration value="K50"/>
-        <enumeration value="K51"/>
-        <enumeration value="K52"/>
-        <enumeration value="K53"/>
-        <enumeration value="K54"/>
-        <enumeration value="K55"/>
-        <enumeration value="K58"/>
-        <enumeration value="K59"/>
-        <enumeration value="K6"/>
-        <enumeration value="K60"/>
-        <enumeration value="K61"/>
-        <enumeration value="K62"/>
-        <enumeration value="K63"/>
-        <enumeration value="K64"/>
-        <enumeration value="K65"/>
-        <enumeration value="K66"/>
-        <enumeration value="K67"/>
-        <enumeration value="K68"/>
-        <enumeration value="K69"/>
-        <enumeration value="K70"/>
-        <enumeration value="K71"/>
-        <enumeration value="K73"/>
-        <enumeration value="K74"/>
-        <enumeration value="K75"/>
-        <enumeration value="K76"/>
-        <enumeration value="K77"/>
-        <enumeration value="K78"/>
-        <enumeration value="K79"/>
-        <enumeration value="K80"/>
-        <enumeration value="K81"/>
-        <enumeration value="K82"/>
-        <enumeration value="K83"/>
-        <enumeration value="K84"/>
-        <enumeration value="K85"/>
-        <enumeration value="K86"/>
-        <enumeration value="K87"/>
-        <enumeration value="K88"/>
-        <enumeration value="K89"/>
-        <enumeration value="K90"/>
-        <enumeration value="K91"/>
-        <enumeration value="K92"/>
-        <enumeration value="K93"/>
-        <enumeration value="K94"/>
-        <enumeration value="K95"/>
-        <enumeration value="K96"/>
-        <enumeration value="K97"/>
-        <enumeration value="K98"/>
-        <enumeration value="K99"/>
-        <enumeration value="KA"/>
-        <enumeration value="KAT"/>
-        <enumeration value="KB"/>
-        <enumeration value="KBA"/>
-        <enumeration value="KCC"/>
-        <enumeration value="KDW"/>
-        <enumeration value="KEL"/>
-        <enumeration value="KGM"/>
-        <enumeration value="KGS"/>
-        <enumeration value="KHY"/>
-        <enumeration value="KHZ"/>
-        <enumeration value="KI"/>
-        <enumeration value="KIC"/>
-        <enumeration value="KIP"/>
-        <enumeration value="KJ"/>
-        <enumeration value="KJO"/>
-        <enumeration value="KL"/>
-        <enumeration value="KLK"/>
-        <enumeration value="KLX"/>
-        <enumeration value="KMA"/>
-        <enumeration value="KMH"/>
-        <enumeration value="KMK"/>
-        <enumeration value="KMQ"/>
-        <enumeration value="KMT"/>
-        <enumeration value="KNI"/>
-        <enumeration value="KNM"/>
-        <enumeration value="KNS"/>
-        <enumeration value="KNT"/>
-        <enumeration value="KO"/>
-        <enumeration value="KPA"/>
-        <enumeration value="KPH"/>
-        <enumeration value="KPO"/>
-        <enumeration value="KPP"/>
-        <enumeration value="KR"/>
-        <enumeration value="KSD"/>
-        <enumeration value="KSH"/>
-        <enumeration value="KT"/>
-        <enumeration value="KTN"/>
-        <enumeration value="KUR"/>
-        <enumeration value="KVA"/>
-        <enumeration value="KVR"/>
-        <enumeration value="KVT"/>
-        <enumeration value="KW"/>
-        <enumeration value="KWH"/>
-        <enumeration value="KWN"/>
-        <enumeration value="KWO"/>
-        <enumeration value="KWS"/>
-        <enumeration value="KWT"/>
-        <enumeration value="KX"/>
-        <enumeration value="L10"/>
-        <enumeration value="L11"/>
-        <enumeration value="L12"/>
-        <enumeration value="L13"/>
-        <enumeration value="L14"/>
-        <enumeration value="L15"/>
-        <enumeration value="L16"/>
-        <enumeration value="L17"/>
-        <enumeration value="L18"/>
-        <enumeration value="L19"/>
-        <enumeration value="L2"/>
-        <enumeration value="L20"/>
-        <enumeration value="L21"/>
-        <enumeration value="L23"/>
-        <enumeration value="L24"/>
-        <enumeration value="L25"/>
-        <enumeration value="L26"/>
-        <enumeration value="L27"/>
-        <enumeration value="L28"/>
-        <enumeration value="L29"/>
-        <enumeration value="L30"/>
-        <enumeration value="L31"/>
-        <enumeration value="L32"/>
-        <enumeration value="L33"/>
-        <enumeration value="L34"/>
-        <enumeration value="L35"/>
-        <enumeration value="L36"/>
-        <enumeration value="L37"/>
-        <enumeration value="L38"/>
-        <enumeration value="L39"/>
-        <enumeration value="L40"/>
-        <enumeration value="L41"/>
-        <enumeration value="L42"/>
-        <enumeration value="L43"/>
-        <enumeration value="L44"/>
-        <enumeration value="L45"/>
-        <enumeration value="L46"/>
-        <enumeration value="L47"/>
-        <enumeration value="L48"/>
-        <enumeration value="L49"/>
-        <enumeration value="L50"/>
-        <enumeration value="L51"/>
-        <enumeration value="L52"/>
-        <enumeration value="L53"/>
-        <enumeration value="L54"/>
-        <enumeration value="L55"/>
-        <enumeration value="L56"/>
-        <enumeration value="L57"/>
-        <enumeration value="L58"/>
-        <enumeration value="L59"/>
-        <enumeration value="L60"/>
-        <enumeration value="L63"/>
-        <enumeration value="L64"/>
-        <enumeration value="L65"/>
-        <enumeration value="L66"/>
-        <enumeration value="L67"/>
-        <enumeration value="L68"/>
-        <enumeration value="L69"/>
-        <enumeration value="L70"/>
-        <enumeration value="L71"/>
-        <enumeration value="L72"/>
-        <enumeration value="L73"/>
-        <enumeration value="L74"/>
-        <enumeration value="L75"/>
-        <enumeration value="L76"/>
-        <enumeration value="L77"/>
-        <enumeration value="L78"/>
-        <enumeration value="L79"/>
-        <enumeration value="L80"/>
-        <enumeration value="L81"/>
-        <enumeration value="L82"/>
-        <enumeration value="L83"/>
-        <enumeration value="L84"/>
-        <enumeration value="L85"/>
-        <enumeration value="L86"/>
-        <enumeration value="L87"/>
-        <enumeration value="L88"/>
-        <enumeration value="L89"/>
-        <enumeration value="L90"/>
-        <enumeration value="L91"/>
-        <enumeration value="L92"/>
-        <enumeration value="L93"/>
-        <enumeration value="L94"/>
-        <enumeration value="L95"/>
-        <enumeration value="L96"/>
-        <enumeration value="L98"/>
-        <enumeration value="L99"/>
-        <enumeration value="LA"/>
-        <enumeration value="LAC"/>
-        <enumeration value="LBR"/>
-        <enumeration value="LBT"/>
-        <enumeration value="LD"/>
-        <enumeration value="LEF"/>
-        <enumeration value="LF"/>
-        <enumeration value="LH"/>
-        <enumeration value="LK"/>
-        <enumeration value="LM"/>
-        <enumeration value="LN"/>
-        <enumeration value="LO"/>
-        <enumeration value="LP"/>
-        <enumeration value="LPA"/>
-        <enumeration value="LR"/>
-        <enumeration value="LS"/>
-        <enumeration value="LTN"/>
-        <enumeration value="LTR"/>
-        <enumeration value="LUB"/>
-        <enumeration value="LUM"/>
-        <enumeration value="LUX"/>
-        <enumeration value="LY"/>
-        <enumeration value="M1"/>
-        <enumeration value="M10"/>
-        <enumeration value="M11"/>
-        <enumeration value="M12"/>
-        <enumeration value="M13"/>
-        <enumeration value="M14"/>
-        <enumeration value="M15"/>
-        <enumeration value="M16"/>
-        <enumeration value="M17"/>
-        <enumeration value="M18"/>
-        <enumeration value="M19"/>
-        <enumeration value="M20"/>
-        <enumeration value="M21"/>
-        <enumeration value="M22"/>
-        <enumeration value="M23"/>
-        <enumeration value="M24"/>
-        <enumeration value="M25"/>
-        <enumeration value="M26"/>
-        <enumeration value="M27"/>
-        <enumeration value="M29"/>
-        <enumeration value="M30"/>
-        <enumeration value="M31"/>
-        <enumeration value="M32"/>
-        <enumeration value="M33"/>
-        <enumeration value="M34"/>
-        <enumeration value="M35"/>
-        <enumeration value="M36"/>
-        <enumeration value="M37"/>
-        <enumeration value="M38"/>
-        <enumeration value="M39"/>
-        <enumeration value="M4"/>
-        <enumeration value="M40"/>
-        <enumeration value="M41"/>
-        <enumeration value="M42"/>
-        <enumeration value="M43"/>
-        <enumeration value="M44"/>
-        <enumeration value="M45"/>
-        <enumeration value="M46"/>
-        <enumeration value="M47"/>
-        <enumeration value="M48"/>
-        <enumeration value="M49"/>
-        <enumeration value="M5"/>
-        <enumeration value="M50"/>
-        <enumeration value="M51"/>
-        <enumeration value="M52"/>
-        <enumeration value="M53"/>
-        <enumeration value="M55"/>
-        <enumeration value="M56"/>
-        <enumeration value="M57"/>
-        <enumeration value="M58"/>
-        <enumeration value="M59"/>
-        <enumeration value="M60"/>
-        <enumeration value="M61"/>
-        <enumeration value="M62"/>
-        <enumeration value="M63"/>
-        <enumeration value="M64"/>
-        <enumeration value="M65"/>
-        <enumeration value="M66"/>
-        <enumeration value="M67"/>
-        <enumeration value="M68"/>
-        <enumeration value="M69"/>
-        <enumeration value="M7"/>
-        <enumeration value="M70"/>
-        <enumeration value="M71"/>
-        <enumeration value="M72"/>
-        <enumeration value="M73"/>
-        <enumeration value="M74"/>
-        <enumeration value="M75"/>
-        <enumeration value="M76"/>
-        <enumeration value="M77"/>
-        <enumeration value="M78"/>
-        <enumeration value="M79"/>
-        <enumeration value="M80"/>
-        <enumeration value="M81"/>
-        <enumeration value="M82"/>
-        <enumeration value="M83"/>
-        <enumeration value="M84"/>
-        <enumeration value="M85"/>
-        <enumeration value="M86"/>
-        <enumeration value="M87"/>
-        <enumeration value="M88"/>
-        <enumeration value="M89"/>
-        <enumeration value="M9"/>
-        <enumeration value="M90"/>
-        <enumeration value="M91"/>
-        <enumeration value="M92"/>
-        <enumeration value="M93"/>
-        <enumeration value="M94"/>
-        <enumeration value="M95"/>
-        <enumeration value="M96"/>
-        <enumeration value="M97"/>
-        <enumeration value="M98"/>
-        <enumeration value="M99"/>
-        <enumeration value="MAH"/>
-        <enumeration value="MAL"/>
-        <enumeration value="MAM"/>
-        <enumeration value="MAR"/>
-        <enumeration value="MAW"/>
-        <enumeration value="MBE"/>
-        <enumeration value="MBF"/>
-        <enumeration value="MBR"/>
-        <enumeration value="MC"/>
-        <enumeration value="MCU"/>
-        <enumeration value="MD"/>
-        <enumeration value="MGM"/>
-        <enumeration value="MHZ"/>
-        <enumeration value="MIK"/>
-        <enumeration value="MIL"/>
-        <enumeration value="MIN"/>
-        <enumeration value="MIO"/>
-        <enumeration value="MIU"/>
-        <enumeration value="MLD"/>
-        <enumeration value="MLT"/>
-        <enumeration value="MMK"/>
-        <enumeration value="MMQ"/>
-        <enumeration value="MMT"/>
-        <enumeration value="MND"/>
-        <enumeration value="MON"/>
-        <enumeration value="MPA"/>
-        <enumeration value="MQH"/>
-        <enumeration value="MQS"/>
-        <enumeration value="MSK"/>
-        <enumeration value="MTK"/>
-        <enumeration value="MTQ"/>
-        <enumeration value="MTR"/>
-        <enumeration value="MTS"/>
-        <enumeration value="MVA"/>
-        <enumeration value="MWH"/>
-        <enumeration value="N1"/>
-        <enumeration value="N10"/>
-        <enumeration value="N11"/>
-        <enumeration value="N12"/>
-        <enumeration value="N13"/>
-        <enumeration value="N14"/>
-        <enumeration value="N15"/>
-        <enumeration value="N16"/>
-        <enumeration value="N17"/>
-        <enumeration value="N18"/>
-        <enumeration value="N19"/>
-        <enumeration value="N20"/>
-        <enumeration value="N21"/>
-        <enumeration value="N22"/>
-        <enumeration value="N23"/>
-        <enumeration value="N24"/>
-        <enumeration value="N25"/>
-        <enumeration value="N26"/>
-        <enumeration value="N27"/>
-        <enumeration value="N28"/>
-        <enumeration value="N29"/>
-        <enumeration value="N3"/>
-        <enumeration value="N30"/>
-        <enumeration value="N31"/>
-        <enumeration value="N32"/>
-        <enumeration value="N33"/>
-        <enumeration value="N34"/>
-        <enumeration value="N35"/>
-        <enumeration value="N36"/>
-        <enumeration value="N37"/>
-        <enumeration value="N38"/>
-        <enumeration value="N39"/>
-        <enumeration value="N40"/>
-        <enumeration value="N41"/>
-        <enumeration value="N42"/>
-        <enumeration value="N43"/>
-        <enumeration value="N44"/>
-        <enumeration value="N45"/>
-        <enumeration value="N46"/>
-        <enumeration value="N47"/>
-        <enumeration value="N48"/>
-        <enumeration value="N49"/>
-        <enumeration value="N50"/>
-        <enumeration value="N51"/>
-        <enumeration value="N52"/>
-        <enumeration value="N53"/>
-        <enumeration value="N54"/>
-        <enumeration value="N55"/>
-        <enumeration value="N56"/>
-        <enumeration value="N57"/>
-        <enumeration value="N58"/>
-        <enumeration value="N59"/>
-        <enumeration value="N60"/>
-        <enumeration value="N61"/>
-        <enumeration value="N62"/>
-        <enumeration value="N63"/>
-        <enumeration value="N64"/>
-        <enumeration value="N65"/>
-        <enumeration value="N66"/>
-        <enumeration value="N67"/>
-        <enumeration value="N68"/>
-        <enumeration value="N69"/>
-        <enumeration value="N70"/>
-        <enumeration value="N71"/>
-        <enumeration value="N72"/>
-        <enumeration value="N73"/>
-        <enumeration value="N74"/>
-        <enumeration value="N75"/>
-        <enumeration value="N76"/>
-        <enumeration value="N77"/>
-        <enumeration value="N78"/>
-        <enumeration value="N79"/>
-        <enumeration value="N80"/>
-        <enumeration value="N81"/>
-        <enumeration value="N82"/>
-        <enumeration value="N83"/>
-        <enumeration value="N84"/>
-        <enumeration value="N85"/>
-        <enumeration value="N86"/>
-        <enumeration value="N87"/>
-        <enumeration value="N88"/>
-        <enumeration value="N89"/>
-        <enumeration value="N90"/>
-        <enumeration value="N91"/>
-        <enumeration value="N92"/>
-        <enumeration value="N93"/>
-        <enumeration value="N94"/>
-        <enumeration value="N95"/>
-        <enumeration value="N96"/>
-        <enumeration value="N97"/>
-        <enumeration value="N98"/>
-        <enumeration value="N99"/>
-        <enumeration value="NA"/>
-        <enumeration value="NAR"/>
-        <enumeration value="NCL"/>
-        <enumeration value="NEW"/>
-        <enumeration value="NF"/>
-        <enumeration value="NIL"/>
-        <enumeration value="NIU"/>
-        <enumeration value="NL"/>
-        <enumeration value="NM3"/>
-        <enumeration value="NMI"/>
-        <enumeration value="NMP"/>
-        <enumeration value="NPR"/>
-        <enumeration value="NPT"/>
-        <enumeration value="NQ"/>
-        <enumeration value="NR"/>
-        <enumeration value="NT"/>
-        <enumeration value="NTT"/>
-        <enumeration value="NU"/>
-        <enumeration value="NX"/>
-        <enumeration value="OA"/>
-        <enumeration value="ODE"/>
-        <enumeration value="OHM"/>
-        <enumeration value="ON"/>
-        <enumeration value="ONZ"/>
-        <enumeration value="OPM"/>
-        <enumeration value="OT"/>
-        <enumeration value="OZ"/>
-        <enumeration value="OZA"/>
-        <enumeration value="OZI"/>
-        <enumeration value="P1"/>
-        <enumeration value="P10"/>
-        <enumeration value="P11"/>
-        <enumeration value="P12"/>
-        <enumeration value="P13"/>
-        <enumeration value="P14"/>
-        <enumeration value="P15"/>
-        <enumeration value="P16"/>
-        <enumeration value="P17"/>
-        <enumeration value="P18"/>
-        <enumeration value="P19"/>
-        <enumeration value="P2"/>
-        <enumeration value="P20"/>
-        <enumeration value="P21"/>
-        <enumeration value="P22"/>
-        <enumeration value="P23"/>
-        <enumeration value="P24"/>
-        <enumeration value="P25"/>
-        <enumeration value="P26"/>
-        <enumeration value="P27"/>
-        <enumeration value="P28"/>
-        <enumeration value="P29"/>
-        <enumeration value="P30"/>
-        <enumeration value="P31"/>
-        <enumeration value="P32"/>
-        <enumeration value="P33"/>
-        <enumeration value="P34"/>
-        <enumeration value="P35"/>
-        <enumeration value="P36"/>
-        <enumeration value="P37"/>
-        <enumeration value="P38"/>
-        <enumeration value="P39"/>
-        <enumeration value="P40"/>
-        <enumeration value="P41"/>
-        <enumeration value="P42"/>
-        <enumeration value="P43"/>
-        <enumeration value="P44"/>
-        <enumeration value="P45"/>
-        <enumeration value="P46"/>
-        <enumeration value="P47"/>
-        <enumeration value="P48"/>
-        <enumeration value="P49"/>
-        <enumeration value="P5"/>
-        <enumeration value="P50"/>
-        <enumeration value="P51"/>
-        <enumeration value="P52"/>
-        <enumeration value="P53"/>
-        <enumeration value="P54"/>
-        <enumeration value="P55"/>
-        <enumeration value="P56"/>
-        <enumeration value="P57"/>
-        <enumeration value="P58"/>
-        <enumeration value="P59"/>
-        <enumeration value="P60"/>
-        <enumeration value="P61"/>
-        <enumeration value="P62"/>
-        <enumeration value="P63"/>
-        <enumeration value="P64"/>
-        <enumeration value="P65"/>
-        <enumeration value="P66"/>
-        <enumeration value="P67"/>
-        <enumeration value="P68"/>
-        <enumeration value="P69"/>
-        <enumeration value="P70"/>
-        <enumeration value="P71"/>
-        <enumeration value="P72"/>
-        <enumeration value="P73"/>
-        <enumeration value="P74"/>
-        <enumeration value="P75"/>
-        <enumeration value="P76"/>
-        <enumeration value="P77"/>
-        <enumeration value="P78"/>
-        <enumeration value="P79"/>
-        <enumeration value="P80"/>
-        <enumeration value="P81"/>
-        <enumeration value="P82"/>
-        <enumeration value="P83"/>
-        <enumeration value="P84"/>
-        <enumeration value="P85"/>
-        <enumeration value="P86"/>
-        <enumeration value="P87"/>
-        <enumeration value="P88"/>
-        <enumeration value="P89"/>
-        <enumeration value="P90"/>
-        <enumeration value="P91"/>
-        <enumeration value="P92"/>
-        <enumeration value="P93"/>
-        <enumeration value="P94"/>
-        <enumeration value="P95"/>
-        <enumeration value="P96"/>
-        <enumeration value="P97"/>
-        <enumeration value="P98"/>
-        <enumeration value="P99"/>
-        <enumeration value="PAL"/>
-        <enumeration value="PD"/>
-        <enumeration value="PFL"/>
-        <enumeration value="PGL"/>
-        <enumeration value="PI"/>
-        <enumeration value="PLA"/>
-        <enumeration value="PO"/>
-        <enumeration value="PQ"/>
-        <enumeration value="PR"/>
-        <enumeration value="PS"/>
-        <enumeration value="PT"/>
-        <enumeration value="PTD"/>
-        <enumeration value="PTI"/>
-        <enumeration value="PTL"/>
-        <enumeration value="PTN"/>
-        <enumeration value="Q10"/>
-        <enumeration value="Q11"/>
-        <enumeration value="Q12"/>
-        <enumeration value="Q13"/>
-        <enumeration value="Q14"/>
-        <enumeration value="Q15"/>
-        <enumeration value="Q16"/>
-        <enumeration value="Q17"/>
-        <enumeration value="Q18"/>
-        <enumeration value="Q19"/>
-        <enumeration value="Q20"/>
-        <enumeration value="Q21"/>
-        <enumeration value="Q22"/>
-        <enumeration value="Q23"/>
-        <enumeration value="Q24"/>
-        <enumeration value="Q25"/>
-        <enumeration value="Q26"/>
-        <enumeration value="Q27"/>
-        <enumeration value="Q28"/>
-        <enumeration value="Q29"/>
-        <enumeration value="Q3"/>
-        <enumeration value="Q30"/>
-        <enumeration value="Q31"/>
-        <enumeration value="Q32"/>
-        <enumeration value="Q33"/>
-        <enumeration value="Q34"/>
-        <enumeration value="Q35"/>
-        <enumeration value="Q36"/>
-        <enumeration value="Q37"/>
-        <enumeration value="Q38"/>
-        <enumeration value="Q39"/>
-        <enumeration value="Q40"/>
-        <enumeration value="Q41"/>
-        <enumeration value="Q42"/>
-        <enumeration value="QA"/>
-        <enumeration value="QAN"/>
-        <enumeration value="QB"/>
-        <enumeration value="QR"/>
-        <enumeration value="QT"/>
-        <enumeration value="QTD"/>
-        <enumeration value="QTI"/>
-        <enumeration value="QTL"/>
-        <enumeration value="QTR"/>
-        <enumeration value="R1"/>
-        <enumeration value="R9"/>
-        <enumeration value="RH"/>
-        <enumeration value="RM"/>
-        <enumeration value="ROM"/>
-        <enumeration value="RP"/>
-        <enumeration value="RPM"/>
-        <enumeration value="RPS"/>
-        <enumeration value="RT"/>
-        <enumeration value="S3"/>
-        <enumeration value="S4"/>
-        <enumeration value="SAN"/>
-        <enumeration value="SCO"/>
-        <enumeration value="SCR"/>
-        <enumeration value="SEC"/>
-        <enumeration value="SET"/>
-        <enumeration value="SG"/>
-        <enumeration value="SHT"/>
-        <enumeration value="SIE"/>
-        <enumeration value="SM3"/>
-        <enumeration value="SMI"/>
-        <enumeration value="SQ"/>
-        <enumeration value="SQR"/>
-        <enumeration value="SR"/>
-        <enumeration value="STC"/>
-        <enumeration value="STI"/>
-        <enumeration value="STK"/>
-        <enumeration value="STL"/>
-        <enumeration value="STN"/>
-        <enumeration value="STW"/>
-        <enumeration value="SW"/>
-        <enumeration value="SX"/>
-        <enumeration value="SYR"/>
-        <enumeration value="T0"/>
-        <enumeration value="T3"/>
-        <enumeration value="TAH"/>
-        <enumeration value="TAN"/>
-        <enumeration value="TI"/>
-        <enumeration value="TIC"/>
-        <enumeration value="TIP"/>
-        <enumeration value="TKM"/>
-        <enumeration value="TMS"/>
-        <enumeration value="TNE"/>
-        <enumeration value="TP"/>
-        <enumeration value="TPI"/>
-        <enumeration value="TPR"/>
-        <enumeration value="TQD"/>
-        <enumeration value="TRL"/>
-        <enumeration value="TST"/>
-        <enumeration value="TTS"/>
-        <enumeration value="U1"/>
-        <enumeration value="U2"/>
-        <enumeration value="UA"/>
-        <enumeration value="UB"/>
-        <enumeration value="UC"/>
-        <enumeration value="VA"/>
-        <enumeration value="VLT"/>
-        <enumeration value="VP"/>
-        <enumeration value="W2"/>
-        <enumeration value="WA"/>
-        <enumeration value="WB"/>
-        <enumeration value="WCD"/>
-        <enumeration value="WE"/>
-        <enumeration value="WEB"/>
-        <enumeration value="WEE"/>
-        <enumeration value="WG"/>
-        <enumeration value="WHR"/>
-        <enumeration value="WM"/>
-        <enumeration value="WSD"/>
-        <enumeration value="WTT"/>
-        <enumeration value="WW"/>
-        <enumeration value="X1"/>
-        <enumeration value="YDK"/>
-        <enumeration value="YDQ"/>
-        <enumeration value="YRD"/>
-        <enumeration value="Z11"/>
-        <enumeration value="ZP"/>
-        <enumeration value="ZZ"/>
-    </cl>
-    <cl id="8">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="9">
-        <enumeration value="130"/>
-    </cl>
-    <cl id="10">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="11">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="12">
-        <enumeration value="0002"/>
-        <enumeration value="0007"/>
-        <enumeration value="0009"/>
-        <enumeration value="0037"/>
-        <enumeration value="0060"/>
-        <enumeration value="0088"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0106"/>
-        <enumeration value="0130"/>
-        <enumeration value="0135"/>
-        <enumeration value="0142"/>
-        <enumeration value="0151"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-        <enumeration value="9901"/>
-        <enumeration value="9902"/>
-        <enumeration value="9904"/>
-        <enumeration value="9905"/>
-        <enumeration value="9906"/>
-        <enumeration value="9907"/>
-        <enumeration value="9910"/>
-        <enumeration value="9913"/>
-        <enumeration value="9914"/>
-        <enumeration value="9915"/>
-        <enumeration value="9918"/>
-        <enumeration value="9919"/>
-        <enumeration value="9920"/>
-        <enumeration value="9922"/>
-        <enumeration value="9923"/>
-        <enumeration value="9924"/>
-        <enumeration value="9925"/>
-        <enumeration value="9926"/>
-        <enumeration value="9927"/>
-        <enumeration value="9928"/>
-        <enumeration value="9929"/>
-        <enumeration value="9930"/>
-        <enumeration value="9931"/>
-        <enumeration value="9932"/>
-        <enumeration value="9933"/>
-        <enumeration value="9934"/>
-        <enumeration value="9935"/>
-        <enumeration value="9936"/>
-        <enumeration value="9937"/>
-        <enumeration value="9938"/>
-        <enumeration value="9939"/>
-        <enumeration value="9940"/>
-        <enumeration value="9941"/>
-        <enumeration value="9942"/>
-        <enumeration value="9943"/>
-        <enumeration value="9944"/>
-        <enumeration value="9945"/>
-        <enumeration value="9946"/>
-        <enumeration value="9947"/>
-        <enumeration value="9948"/>
-        <enumeration value="9949"/>
-        <enumeration value="9950"/>
-        <enumeration value="9951"/>
-        <enumeration value="9952"/>
-        <enumeration value="9953"/>
-        <enumeration value="9955"/>
-        <enumeration value="9956"/>
-        <enumeration value="9957"/>
-        <enumeration value="9958"/>
-        <enumeration value="AN"/>
-        <enumeration value="AQ"/>
-        <enumeration value="AS"/>
-        <enumeration value="AU"/>
-        <enumeration value="EM"/>
-    </cl>
-    <cl id="13">
-        <enumeration value="FC"/>
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="14">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="15">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="16">
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="17">
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="18">
-        <enumeration value="50"/>
-        <enumeration value="130"/>
-        <enumeration value="916"/>
-    </cl>
-    <cl id="19">
-        <enumeration value="application/pdf"/>
-        <enumeration value="application/vnd.oasis.opendocument.spreadsheet"/>
-        <enumeration value="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
-        <enumeration value="image/jpeg"/>
-        <enumeration value="image/png"/>
-        <enumeration value="text/csv"/>
-    </cl>
-    <cl id="20">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="21">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="22">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="23">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="24">
-        <enumeration value="vatex-eu-132"/>
-        <enumeration value="VATEX-EU-132"/>
-        <enumeration value="vatex-eu-132-1a"/>
-        <enumeration value="VATEX-EU-132-1A"/>
-        <enumeration value="vatex-eu-132-1b"/>
-        <enumeration value="VATEX-EU-132-1B"/>
-        <enumeration value="vatex-eu-132-1c"/>
-        <enumeration value="VATEX-EU-132-1C"/>
-        <enumeration value="vatex-eu-132-1d"/>
-        <enumeration value="VATEX-EU-132-1D"/>
-        <enumeration value="vatex-eu-132-1e"/>
-        <enumeration value="VATEX-EU-132-1E"/>
-        <enumeration value="vatex-eu-132-1f"/>
-        <enumeration value="VATEX-EU-132-1F"/>
-        <enumeration value="vatex-eu-132-1g"/>
-        <enumeration value="VATEX-EU-132-1G"/>
-        <enumeration value="vatex-eu-132-1h"/>
-        <enumeration value="VATEX-EU-132-1H"/>
-        <enumeration value="vatex-eu-132-1i"/>
-        <enumeration value="VATEX-EU-132-1I"/>
-        <enumeration value="vatex-eu-132-1j"/>
-        <enumeration value="VATEX-EU-132-1J"/>
-        <enumeration value="vatex-eu-132-1k"/>
-        <enumeration value="VATEX-EU-132-1K"/>
-        <enumeration value="vatex-eu-132-1l"/>
-        <enumeration value="VATEX-EU-132-1L"/>
-        <enumeration value="vatex-eu-132-1m"/>
-        <enumeration value="VATEX-EU-132-1M"/>
-        <enumeration value="vatex-eu-132-1n"/>
-        <enumeration value="VATEX-EU-132-1N"/>
-        <enumeration value="vatex-eu-132-1o"/>
-        <enumeration value="VATEX-EU-132-1O"/>
-        <enumeration value="vatex-eu-132-1p"/>
-        <enumeration value="VATEX-EU-132-1P"/>
-        <enumeration value="vatex-eu-132-1q"/>
-        <enumeration value="VATEX-EU-132-1Q"/>
-        <enumeration value="vatex-eu-143"/>
-        <enumeration value="VATEX-EU-143"/>
-        <enumeration value="vatex-eu-143-1a"/>
-        <enumeration value="VATEX-EU-143-1A"/>
-        <enumeration value="vatex-eu-143-1b"/>
-        <enumeration value="VATEX-EU-143-1B"/>
-        <enumeration value="vatex-eu-143-1c"/>
-        <enumeration value="VATEX-EU-143-1C"/>
-        <enumeration value="vatex-eu-143-1d"/>
-        <enumeration value="VATEX-EU-143-1D"/>
-        <enumeration value="vatex-eu-143-1e"/>
-        <enumeration value="VATEX-EU-143-1E"/>
-        <enumeration value="vatex-eu-143-1f"/>
-        <enumeration value="VATEX-EU-143-1F"/>
-        <enumeration value="vatex-eu-143-1fa"/>
-        <enumeration value="VATEX-EU-143-1FA"/>
-        <enumeration value="vatex-eu-143-1g"/>
-        <enumeration value="VATEX-EU-143-1G"/>
-        <enumeration value="vatex-eu-143-1h"/>
-        <enumeration value="VATEX-EU-143-1H"/>
-        <enumeration value="vatex-eu-143-1i"/>
-        <enumeration value="VATEX-EU-143-1I"/>
-        <enumeration value="vatex-eu-143-1j"/>
-        <enumeration value="VATEX-EU-143-1J"/>
-        <enumeration value="vatex-eu-143-1k"/>
-        <enumeration value="VATEX-EU-143-1K"/>
-        <enumeration value="vatex-eu-143-1l"/>
-        <enumeration value="VATEX-EU-143-1L"/>
-        <enumeration value="vatex-eu-148"/>
-        <enumeration value="VATEX-EU-148"/>
-        <enumeration value="vatex-eu-148-a"/>
-        <enumeration value="VATEX-EU-148-A"/>
-        <enumeration value="vatex-eu-148-b"/>
-        <enumeration value="VATEX-EU-148-B"/>
-        <enumeration value="vatex-eu-148-c"/>
-        <enumeration value="VATEX-EU-148-C"/>
-        <enumeration value="vatex-eu-148-d"/>
-        <enumeration value="VATEX-EU-148-D"/>
-        <enumeration value="vatex-eu-148-e"/>
-        <enumeration value="VATEX-EU-148-E"/>
-        <enumeration value="vatex-eu-148-f"/>
-        <enumeration value="VATEX-EU-148-F"/>
-        <enumeration value="vatex-eu-148-g"/>
-        <enumeration value="VATEX-EU-148-G"/>
-        <enumeration value="vatex-eu-151"/>
-        <enumeration value="VATEX-EU-151"/>
-        <enumeration value="vatex-eu-151-1a"/>
-        <enumeration value="VATEX-EU-151-1A"/>
-        <enumeration value="vatex-eu-151-1aa"/>
-        <enumeration value="VATEX-EU-151-1AA"/>
-        <enumeration value="vatex-eu-151-1b"/>
-        <enumeration value="VATEX-EU-151-1B"/>
-        <enumeration value="vatex-eu-151-1c"/>
-        <enumeration value="VATEX-EU-151-1C"/>
-        <enumeration value="vatex-eu-151-1d"/>
-        <enumeration value="VATEX-EU-151-1D"/>
-        <enumeration value="vatex-eu-151-1e"/>
-        <enumeration value="VATEX-EU-151-1E"/>
-        <enumeration value="vatex-eu-309"/>
-        <enumeration value="VATEX-EU-309"/>
-        <enumeration value="vatex-eu-ae"/>
-        <enumeration value="VATEX-EU-AE"/>
-        <enumeration value="vatex-eu-d"/>
-        <enumeration value="VATEX-EU-D"/>
-        <enumeration value="vatex-eu-f"/>
-        <enumeration value="VATEX-EU-F"/>
-        <enumeration value="vatex-eu-g"/>
-        <enumeration value="VATEX-EU-G"/>
-        <enumeration value="vatex-eu-i"/>
-        <enumeration value="VATEX-EU-I"/>
-        <enumeration value="vatex-eu-ic"/>
-        <enumeration value="VATEX-EU-IC"/>
-        <enumeration value="vatex-eu-j"/>
-        <enumeration value="VATEX-EU-J"/>
-        <enumeration value="vatex-eu-o"/>
-        <enumeration value="VATEX-EU-O"/>
-    </cl>
-    <cl id="25">
-        <enumeration value="102"/>
-    </cl>
-    <cl id="26">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="27">
-        <enumeration value="AED"/>
-        <enumeration value="AFN"/>
-        <enumeration value="ALL"/>
-        <enumeration value="AMD"/>
-        <enumeration value="ANG"/>
-        <enumeration value="AOA"/>
-        <enumeration value="ARS"/>
-        <enumeration value="AUD"/>
-        <enumeration value="AWG"/>
-        <enumeration value="AZN"/>
-        <enumeration value="BAM"/>
-        <enumeration value="BBD"/>
-        <enumeration value="BDT"/>
-        <enumeration value="BGN"/>
-        <enumeration value="BHD"/>
-        <enumeration value="BIF"/>
-        <enumeration value="BMD"/>
-        <enumeration value="BND"/>
-        <enumeration value="BOB"/>
-        <enumeration value="BOV"/>
-        <enumeration value="BRL"/>
-        <enumeration value="BSD"/>
-        <enumeration value="BTN"/>
-        <enumeration value="BWP"/>
-        <enumeration value="BYN"/>
-        <enumeration value="BZD"/>
-        <enumeration value="CAD"/>
-        <enumeration value="CDF"/>
-        <enumeration value="CHE"/>
-        <enumeration value="CHF"/>
-        <enumeration value="CHW"/>
-        <enumeration value="CLF"/>
-        <enumeration value="CLP"/>
-        <enumeration value="CNY"/>
-        <enumeration value="COP"/>
-        <enumeration value="COU"/>
-        <enumeration value="CRC"/>
-        <enumeration value="CUC"/>
-        <enumeration value="CUP"/>
-        <enumeration value="CVE"/>
-        <enumeration value="CZK"/>
-        <enumeration value="DJF"/>
-        <enumeration value="DKK"/>
-        <enumeration value="DOP"/>
-        <enumeration value="DZD"/>
-        <enumeration value="EGP"/>
-        <enumeration value="ERN"/>
-        <enumeration value="ETB"/>
-        <enumeration value="EUR"/>
-        <enumeration value="FJD"/>
-        <enumeration value="FKP"/>
-        <enumeration value="GBP"/>
-        <enumeration value="GEL"/>
-        <enumeration value="GHS"/>
-        <enumeration value="GIP"/>
-        <enumeration value="GMD"/>
-        <enumeration value="GNF"/>
-        <enumeration value="GTQ"/>
-        <enumeration value="GYD"/>
-        <enumeration value="HKD"/>
-        <enumeration value="HNL"/>
-        <enumeration value="HRK"/>
-        <enumeration value="HTG"/>
-        <enumeration value="HUF"/>
-        <enumeration value="IDR"/>
-        <enumeration value="ILS"/>
-        <enumeration value="INR"/>
-        <enumeration value="IQD"/>
-        <enumeration value="IRR"/>
-        <enumeration value="ISK"/>
-        <enumeration value="JMD"/>
-        <enumeration value="JOD"/>
-        <enumeration value="JPY"/>
-        <enumeration value="KES"/>
-        <enumeration value="KGS"/>
-        <enumeration value="KHR"/>
-        <enumeration value="KMF"/>
-        <enumeration value="KPW"/>
-        <enumeration value="KRW"/>
-        <enumeration value="KWD"/>
-        <enumeration value="KYD"/>
-        <enumeration value="KZT"/>
-        <enumeration value="LAK"/>
-        <enumeration value="LBP"/>
-        <enumeration value="LKR"/>
-        <enumeration value="LRD"/>
-        <enumeration value="LSL"/>
-        <enumeration value="LYD"/>
-        <enumeration value="MAD"/>
-        <enumeration value="MDL"/>
-        <enumeration value="MGA"/>
-        <enumeration value="MKD"/>
-        <enumeration value="MMK"/>
-        <enumeration value="MNT"/>
-        <enumeration value="MOP"/>
-        <enumeration value="MRU"/>
-        <enumeration value="MUR"/>
-        <enumeration value="MVR"/>
-        <enumeration value="MWK"/>
-        <enumeration value="MXN"/>
-        <enumeration value="MXV"/>
-        <enumeration value="MYR"/>
-        <enumeration value="MZN"/>
-        <enumeration value="NAD"/>
-        <enumeration value="NGN"/>
-        <enumeration value="NIO"/>
-        <enumeration value="NOK"/>
-        <enumeration value="NPR"/>
-        <enumeration value="NZD"/>
-        <enumeration value="OMR"/>
-        <enumeration value="PAB"/>
-        <enumeration value="PEN"/>
-        <enumeration value="PGK"/>
-        <enumeration value="PHP"/>
-        <enumeration value="PKR"/>
-        <enumeration value="PLN"/>
-        <enumeration value="PYG"/>
-        <enumeration value="QAR"/>
-        <enumeration value="RON"/>
-        <enumeration value="RSD"/>
-        <enumeration value="RUB"/>
-        <enumeration value="RWF"/>
-        <enumeration value="SAR"/>
-        <enumeration value="SBD"/>
-        <enumeration value="SCR"/>
-        <enumeration value="SDG"/>
-        <enumeration value="SEK"/>
-        <enumeration value="SGD"/>
-        <enumeration value="SHP"/>
-        <enumeration value="SLL"/>
-        <enumeration value="SOS"/>
-        <enumeration value="SRD"/>
-        <enumeration value="SSP"/>
-        <enumeration value="STN"/>
-        <enumeration value="SVC"/>
-        <enumeration value="SYP"/>
-        <enumeration value="SZL"/>
-        <enumeration value="THB"/>
-        <enumeration value="TJS"/>
-        <enumeration value="TMT"/>
-        <enumeration value="TND"/>
-        <enumeration value="TOP"/>
-        <enumeration value="TRY"/>
-        <enumeration value="TTD"/>
-        <enumeration value="TWD"/>
-        <enumeration value="TZS"/>
-        <enumeration value="UAH"/>
-        <enumeration value="UGX"/>
-        <enumeration value="USD"/>
-        <enumeration value="USN"/>
-        <enumeration value="UYI"/>
-        <enumeration value="UYU"/>
-        <enumeration value="UYW"/>
-        <enumeration value="UZS"/>
-        <enumeration value="VES"/>
-        <enumeration value="VND"/>
-        <enumeration value="VUV"/>
-        <enumeration value="WST"/>
-        <enumeration value="XAF"/>
-        <enumeration value="XAG"/>
-        <enumeration value="XAU"/>
-        <enumeration value="XBA"/>
-        <enumeration value="XBB"/>
-        <enumeration value="XBC"/>
-        <enumeration value="XBD"/>
-        <enumeration value="XCD"/>
-        <enumeration value="XDR"/>
-        <enumeration value="XOF"/>
-        <enumeration value="XPD"/>
-        <enumeration value="XPF"/>
-        <enumeration value="XPT"/>
-        <enumeration value="XSU"/>
-        <enumeration value="XTS"/>
-        <enumeration value="XUA"/>
-        <enumeration value="XXX"/>
-        <enumeration value="YER"/>
-        <enumeration value="ZAR"/>
-        <enumeration value="ZMW"/>
-        <enumeration value="ZWL"/>
-    </cl>
-    <cl id="28">
-        <enumeration value="102"/>
-    </cl>
+  <cl id="1">
+    <enumeration value="urn:cen.eu:en16931:2017"/>
+  </cl>
+  <cl id="2">
+    <enumeration value="71"/>
+    <enumeration value="80"/>
+    <enumeration value="81"/>
+    <enumeration value="82"/>
+    <enumeration value="83"/>
+    <enumeration value="84"/>
+    <enumeration value="102"/>
+    <enumeration value="130"/>
+    <enumeration value="202"/>
+    <enumeration value="203"/>
+    <enumeration value="204"/>
+    <enumeration value="211"/>
+    <enumeration value="218"/>
+    <enumeration value="219"/>
+    <enumeration value="261"/>
+    <enumeration value="262"/>
+    <enumeration value="295"/>
+    <enumeration value="296"/>
+    <enumeration value="308"/>
+    <enumeration value="325"/>
+    <enumeration value="326"/>
+    <enumeration value="331"/>
+    <enumeration value="380"/>
+    <enumeration value="381"/>
+    <enumeration value="382"/>
+    <enumeration value="383"/>
+    <enumeration value="384"/>
+    <enumeration value="385"/>
+    <enumeration value="386"/>
+    <enumeration value="387"/>
+    <enumeration value="388"/>
+    <enumeration value="389"/>
+    <enumeration value="390"/>
+    <enumeration value="393"/>
+    <enumeration value="394"/>
+    <enumeration value="395"/>
+    <enumeration value="396"/>
+    <enumeration value="420"/>
+    <enumeration value="456"/>
+    <enumeration value="457"/>
+    <enumeration value="458"/>
+    <enumeration value="527"/>
+    <enumeration value="532"/>
+    <enumeration value="553"/>
+    <enumeration value="575"/>
+    <enumeration value="623"/>
+    <enumeration value="633"/>
+    <enumeration value="751"/>
+    <enumeration value="780"/>
+    <enumeration value="817"/>
+    <enumeration value="870"/>
+    <enumeration value="875"/>
+    <enumeration value="876"/>
+    <enumeration value="877"/>
+    <enumeration value="935"/>
+  </cl>
+  <cl id="3">
+    <enumeration value="102"/>
+  </cl>
+  <cl id="4">
+    <enumeration value="AAA"/>
+    <enumeration value="AAB"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAG"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAJ"/>
+    <enumeration value="AAK"/>
+    <enumeration value="AAL"/>
+    <enumeration value="AAM"/>
+    <enumeration value="AAN"/>
+    <enumeration value="AAO"/>
+    <enumeration value="AAP"/>
+    <enumeration value="AAQ"/>
+    <enumeration value="AAR"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAU"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAW"/>
+    <enumeration value="AAX"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABE"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABG"/>
+    <enumeration value="ABH"/>
+    <enumeration value="ABI"/>
+    <enumeration value="ABJ"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABM"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABO"/>
+    <enumeration value="ABP"/>
+    <enumeration value="ABQ"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ABV"/>
+    <enumeration value="ABW"/>
+    <enumeration value="ABX"/>
+    <enumeration value="ABZ"/>
+    <enumeration value="ACA"/>
+    <enumeration value="ACB"/>
+    <enumeration value="ACC"/>
+    <enumeration value="ACD"/>
+    <enumeration value="ACE"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACN"/>
+    <enumeration value="ACO"/>
+    <enumeration value="ACP"/>
+    <enumeration value="ACQ"/>
+    <enumeration value="ACR"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ACT"/>
+    <enumeration value="ACU"/>
+    <enumeration value="ACV"/>
+    <enumeration value="ACW"/>
+    <enumeration value="ACX"/>
+    <enumeration value="ACY"/>
+    <enumeration value="ACZ"/>
+    <enumeration value="ADA"/>
+    <enumeration value="ADB"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADD"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADF"/>
+    <enumeration value="ADG"/>
+    <enumeration value="ADH"/>
+    <enumeration value="ADI"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADS"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADU"/>
+    <enumeration value="ADV"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADX"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEE"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEG"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AEQ"/>
+    <enumeration value="AER"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AFA"/>
+    <enumeration value="AFB"/>
+    <enumeration value="AFC"/>
+    <enumeration value="AFD"/>
+    <enumeration value="AFE"/>
+    <enumeration value="AFF"/>
+    <enumeration value="AFG"/>
+    <enumeration value="AFH"/>
+    <enumeration value="AFI"/>
+    <enumeration value="AFJ"/>
+    <enumeration value="AFK"/>
+    <enumeration value="AFL"/>
+    <enumeration value="AFM"/>
+    <enumeration value="AFN"/>
+    <enumeration value="AFO"/>
+    <enumeration value="AFP"/>
+    <enumeration value="AFQ"/>
+    <enumeration value="AFR"/>
+    <enumeration value="AFS"/>
+    <enumeration value="AFT"/>
+    <enumeration value="AFU"/>
+    <enumeration value="AFV"/>
+    <enumeration value="AFW"/>
+    <enumeration value="AFX"/>
+    <enumeration value="AFY"/>
+    <enumeration value="AFZ"/>
+    <enumeration value="AGA"/>
+    <enumeration value="AGB"/>
+    <enumeration value="AGC"/>
+    <enumeration value="AGD"/>
+    <enumeration value="AGE"/>
+    <enumeration value="AGF"/>
+    <enumeration value="AGG"/>
+    <enumeration value="AGH"/>
+    <enumeration value="AGI"/>
+    <enumeration value="AGJ"/>
+    <enumeration value="AGK"/>
+    <enumeration value="AGL"/>
+    <enumeration value="AGM"/>
+    <enumeration value="AGN"/>
+    <enumeration value="AGO"/>
+    <enumeration value="AGP"/>
+    <enumeration value="AGQ"/>
+    <enumeration value="AGR"/>
+    <enumeration value="AGS"/>
+    <enumeration value="AGT"/>
+    <enumeration value="AGU"/>
+    <enumeration value="AGV"/>
+    <enumeration value="AGW"/>
+    <enumeration value="AGX"/>
+    <enumeration value="AGY"/>
+    <enumeration value="AGZ"/>
+    <enumeration value="AHA"/>
+    <enumeration value="AHB"/>
+    <enumeration value="AHC"/>
+    <enumeration value="AHD"/>
+    <enumeration value="AHE"/>
+    <enumeration value="AHF"/>
+    <enumeration value="AHG"/>
+    <enumeration value="AHH"/>
+    <enumeration value="AHI"/>
+    <enumeration value="AHJ"/>
+    <enumeration value="AHK"/>
+    <enumeration value="AHL"/>
+    <enumeration value="AHM"/>
+    <enumeration value="AHN"/>
+    <enumeration value="AHO"/>
+    <enumeration value="AHP"/>
+    <enumeration value="AHQ"/>
+    <enumeration value="AHR"/>
+    <enumeration value="AHS"/>
+    <enumeration value="AHT"/>
+    <enumeration value="AHU"/>
+    <enumeration value="AHV"/>
+    <enumeration value="AHW"/>
+    <enumeration value="AHX"/>
+    <enumeration value="AHY"/>
+    <enumeration value="AHZ"/>
+    <enumeration value="AIA"/>
+    <enumeration value="AIB"/>
+    <enumeration value="AIC"/>
+    <enumeration value="AID"/>
+    <enumeration value="AIE"/>
+    <enumeration value="AIF"/>
+    <enumeration value="AIG"/>
+    <enumeration value="AIH"/>
+    <enumeration value="AII"/>
+    <enumeration value="AIJ"/>
+    <enumeration value="AIK"/>
+    <enumeration value="AIL"/>
+    <enumeration value="AIM"/>
+    <enumeration value="AIN"/>
+    <enumeration value="AIO"/>
+    <enumeration value="AIP"/>
+    <enumeration value="AIQ"/>
+    <enumeration value="AIR"/>
+    <enumeration value="AIS"/>
+    <enumeration value="AIT"/>
+    <enumeration value="AIU"/>
+    <enumeration value="AIV"/>
+    <enumeration value="AIW"/>
+    <enumeration value="AIX"/>
+    <enumeration value="AIY"/>
+    <enumeration value="AIZ"/>
+    <enumeration value="AJA"/>
+    <enumeration value="AJB"/>
+    <enumeration value="ALC"/>
+    <enumeration value="ALD"/>
+    <enumeration value="ALE"/>
+    <enumeration value="ALF"/>
+    <enumeration value="ALG"/>
+    <enumeration value="ALH"/>
+    <enumeration value="ALI"/>
+    <enumeration value="ALJ"/>
+    <enumeration value="ALK"/>
+    <enumeration value="ALL"/>
+    <enumeration value="ALM"/>
+    <enumeration value="ALN"/>
+    <enumeration value="ALO"/>
+    <enumeration value="ALP"/>
+    <enumeration value="ALQ"/>
+    <enumeration value="ARR"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUT"/>
+    <enumeration value="AUU"/>
+    <enumeration value="AUV"/>
+    <enumeration value="AUW"/>
+    <enumeration value="AUX"/>
+    <enumeration value="AUY"/>
+    <enumeration value="AUZ"/>
+    <enumeration value="AVA"/>
+    <enumeration value="AVB"/>
+    <enumeration value="AVC"/>
+    <enumeration value="AVD"/>
+    <enumeration value="AVE"/>
+    <enumeration value="AVF"/>
+    <enumeration value="BAG"/>
+    <enumeration value="BAH"/>
+    <enumeration value="BAI"/>
+    <enumeration value="BAJ"/>
+    <enumeration value="BAK"/>
+    <enumeration value="BAL"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BAN"/>
+    <enumeration value="BAO"/>
+    <enumeration value="BAP"/>
+    <enumeration value="BAQ"/>
+    <enumeration value="BAR"/>
+    <enumeration value="BAS"/>
+    <enumeration value="BAT"/>
+    <enumeration value="BAU"/>
+    <enumeration value="BAV"/>
+    <enumeration value="BAW"/>
+    <enumeration value="BAX"/>
+    <enumeration value="BAY"/>
+    <enumeration value="BAZ"/>
+    <enumeration value="BBA"/>
+    <enumeration value="BBB"/>
+    <enumeration value="BLC"/>
+    <enumeration value="BLD"/>
+    <enumeration value="BLE"/>
+    <enumeration value="BLF"/>
+    <enumeration value="BLG"/>
+    <enumeration value="BLH"/>
+    <enumeration value="BLI"/>
+    <enumeration value="BLJ"/>
+    <enumeration value="BLK"/>
+    <enumeration value="BLL"/>
+    <enumeration value="BLM"/>
+    <enumeration value="BLN"/>
+    <enumeration value="BLO"/>
+    <enumeration value="BLP"/>
+    <enumeration value="BLQ"/>
+    <enumeration value="BLR"/>
+    <enumeration value="BLS"/>
+    <enumeration value="BLT"/>
+    <enumeration value="BLU"/>
+    <enumeration value="BLV"/>
+    <enumeration value="BLW"/>
+    <enumeration value="BLX"/>
+    <enumeration value="BLY"/>
+    <enumeration value="BLZ"/>
+    <enumeration value="BMA"/>
+    <enumeration value="BMB"/>
+    <enumeration value="BMC"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BME"/>
+    <enumeration value="BMF"/>
+    <enumeration value="BMG"/>
+    <enumeration value="BMH"/>
+    <enumeration value="CCI"/>
+    <enumeration value="CCJ"/>
+    <enumeration value="CCK"/>
+    <enumeration value="CCL"/>
+    <enumeration value="CCM"/>
+    <enumeration value="CCN"/>
+    <enumeration value="CCO"/>
+    <enumeration value="CEX"/>
+    <enumeration value="CHG"/>
+    <enumeration value="CIP"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CLR"/>
+    <enumeration value="COI"/>
+    <enumeration value="CUR"/>
+    <enumeration value="CUS"/>
+    <enumeration value="DAR"/>
+    <enumeration value="DCL"/>
+    <enumeration value="DEL"/>
+    <enumeration value="DIN"/>
+    <enumeration value="DOC"/>
+    <enumeration value="DUT"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FBC"/>
+    <enumeration value="GBL"/>
+    <enumeration value="GEN"/>
+    <enumeration value="GS7"/>
+    <enumeration value="HAN"/>
+    <enumeration value="HAZ"/>
+    <enumeration value="ICN"/>
+    <enumeration value="IIN"/>
+    <enumeration value="IMI"/>
+    <enumeration value="IND"/>
+    <enumeration value="INS"/>
+    <enumeration value="INV"/>
+    <enumeration value="IRP"/>
+    <enumeration value="ITR"/>
+    <enumeration value="ITS"/>
+    <enumeration value="LAN"/>
+    <enumeration value="LIN"/>
+    <enumeration value="LOI"/>
+    <enumeration value="MCO"/>
+    <enumeration value="MDH"/>
+    <enumeration value="MKS"/>
+    <enumeration value="ORI"/>
+    <enumeration value="OSI"/>
+    <enumeration value="PAC"/>
+    <enumeration value="PAI"/>
+    <enumeration value="PAY"/>
+    <enumeration value="PKG"/>
+    <enumeration value="PKT"/>
+    <enumeration value="PMD"/>
+    <enumeration value="PMT"/>
+    <enumeration value="PRD"/>
+    <enumeration value="PRF"/>
+    <enumeration value="PRI"/>
+    <enumeration value="PUR"/>
+    <enumeration value="QIN"/>
+    <enumeration value="QQD"/>
+    <enumeration value="QUT"/>
+    <enumeration value="RAH"/>
+    <enumeration value="REG"/>
+    <enumeration value="RET"/>
+    <enumeration value="REV"/>
+    <enumeration value="RQR"/>
+    <enumeration value="SAF"/>
+    <enumeration value="SIC"/>
+    <enumeration value="SIN"/>
+    <enumeration value="SLR"/>
+    <enumeration value="SPA"/>
+    <enumeration value="SPG"/>
+    <enumeration value="SPH"/>
+    <enumeration value="SPP"/>
+    <enumeration value="SPT"/>
+    <enumeration value="SRN"/>
+    <enumeration value="SSR"/>
+    <enumeration value="SUR"/>
+    <enumeration value="TCA"/>
+    <enumeration value="TDT"/>
+    <enumeration value="TRA"/>
+    <enumeration value="TRR"/>
+    <enumeration value="TXD"/>
+    <enumeration value="WHI"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="5">
+    <enumeration value="0002"/>
+    <enumeration value="0003"/>
+    <enumeration value="0004"/>
+    <enumeration value="0005"/>
+    <enumeration value="0006"/>
+    <enumeration value="0007"/>
+    <enumeration value="0008"/>
+    <enumeration value="0009"/>
+    <enumeration value="0010"/>
+    <enumeration value="0011"/>
+    <enumeration value="0012"/>
+    <enumeration value="0013"/>
+    <enumeration value="0014"/>
+    <enumeration value="0015"/>
+    <enumeration value="0016"/>
+    <enumeration value="0017"/>
+    <enumeration value="0018"/>
+    <enumeration value="0019"/>
+    <enumeration value="0020"/>
+    <enumeration value="0021"/>
+    <enumeration value="0022"/>
+    <enumeration value="0023"/>
+    <enumeration value="0024"/>
+    <enumeration value="0025"/>
+    <enumeration value="0026"/>
+    <enumeration value="0027"/>
+    <enumeration value="0028"/>
+    <enumeration value="0029"/>
+    <enumeration value="0030"/>
+    <enumeration value="0031"/>
+    <enumeration value="0032"/>
+    <enumeration value="0033"/>
+    <enumeration value="0034"/>
+    <enumeration value="0035"/>
+    <enumeration value="0036"/>
+    <enumeration value="0037"/>
+    <enumeration value="0038"/>
+    <enumeration value="0039"/>
+    <enumeration value="0040"/>
+    <enumeration value="0041"/>
+    <enumeration value="0042"/>
+    <enumeration value="0043"/>
+    <enumeration value="0044"/>
+    <enumeration value="0045"/>
+    <enumeration value="0046"/>
+    <enumeration value="0047"/>
+    <enumeration value="0048"/>
+    <enumeration value="0049"/>
+    <enumeration value="0050"/>
+    <enumeration value="0051"/>
+    <enumeration value="0052"/>
+    <enumeration value="0053"/>
+    <enumeration value="0054"/>
+    <enumeration value="0055"/>
+    <enumeration value="0056"/>
+    <enumeration value="0057"/>
+    <enumeration value="0058"/>
+    <enumeration value="0059"/>
+    <enumeration value="0060"/>
+    <enumeration value="0061"/>
+    <enumeration value="0062"/>
+    <enumeration value="0063"/>
+    <enumeration value="0064"/>
+    <enumeration value="0065"/>
+    <enumeration value="0066"/>
+    <enumeration value="0067"/>
+    <enumeration value="0068"/>
+    <enumeration value="0069"/>
+    <enumeration value="0070"/>
+    <enumeration value="0071"/>
+    <enumeration value="0072"/>
+    <enumeration value="0073"/>
+    <enumeration value="0074"/>
+    <enumeration value="0075"/>
+    <enumeration value="0076"/>
+    <enumeration value="0077"/>
+    <enumeration value="0078"/>
+    <enumeration value="0079"/>
+    <enumeration value="0080"/>
+    <enumeration value="0081"/>
+    <enumeration value="0082"/>
+    <enumeration value="0083"/>
+    <enumeration value="0084"/>
+    <enumeration value="0085"/>
+    <enumeration value="0086"/>
+    <enumeration value="0087"/>
+    <enumeration value="0088"/>
+    <enumeration value="0089"/>
+    <enumeration value="0090"/>
+    <enumeration value="0091"/>
+    <enumeration value="0093"/>
+    <enumeration value="0094"/>
+    <enumeration value="0095"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0098"/>
+    <enumeration value="0099"/>
+    <enumeration value="0100"/>
+    <enumeration value="0101"/>
+    <enumeration value="0102"/>
+    <enumeration value="0104"/>
+    <enumeration value="0105"/>
+    <enumeration value="0106"/>
+    <enumeration value="0107"/>
+    <enumeration value="0108"/>
+    <enumeration value="0109"/>
+    <enumeration value="0110"/>
+    <enumeration value="0111"/>
+    <enumeration value="0112"/>
+    <enumeration value="0113"/>
+    <enumeration value="0114"/>
+    <enumeration value="0115"/>
+    <enumeration value="0116"/>
+    <enumeration value="0117"/>
+    <enumeration value="0118"/>
+    <enumeration value="0119"/>
+    <enumeration value="0120"/>
+    <enumeration value="0121"/>
+    <enumeration value="0122"/>
+    <enumeration value="0123"/>
+    <enumeration value="0124"/>
+    <enumeration value="0125"/>
+    <enumeration value="0126"/>
+    <enumeration value="0127"/>
+    <enumeration value="0128"/>
+    <enumeration value="0129"/>
+    <enumeration value="0130"/>
+    <enumeration value="0131"/>
+    <enumeration value="0132"/>
+    <enumeration value="0133"/>
+    <enumeration value="0134"/>
+    <enumeration value="0135"/>
+    <enumeration value="0136"/>
+    <enumeration value="0137"/>
+    <enumeration value="0138"/>
+    <enumeration value="0139"/>
+    <enumeration value="0140"/>
+    <enumeration value="0141"/>
+    <enumeration value="0142"/>
+    <enumeration value="0143"/>
+    <enumeration value="0144"/>
+    <enumeration value="0145"/>
+    <enumeration value="0146"/>
+    <enumeration value="0147"/>
+    <enumeration value="0148"/>
+    <enumeration value="0149"/>
+    <enumeration value="0150"/>
+    <enumeration value="0151"/>
+    <enumeration value="0152"/>
+    <enumeration value="0153"/>
+    <enumeration value="0154"/>
+    <enumeration value="0155"/>
+    <enumeration value="0156"/>
+    <enumeration value="0157"/>
+    <enumeration value="0158"/>
+    <enumeration value="0159"/>
+    <enumeration value="0160"/>
+    <enumeration value="0161"/>
+    <enumeration value="0162"/>
+    <enumeration value="0163"/>
+    <enumeration value="0164"/>
+    <enumeration value="0165"/>
+    <enumeration value="0166"/>
+    <enumeration value="0167"/>
+    <enumeration value="0168"/>
+    <enumeration value="0169"/>
+    <enumeration value="0170"/>
+    <enumeration value="0171"/>
+    <enumeration value="0172"/>
+    <enumeration value="0173"/>
+    <enumeration value="0174"/>
+    <enumeration value="0175"/>
+    <enumeration value="0176"/>
+    <enumeration value="0177"/>
+    <enumeration value="0178"/>
+    <enumeration value="0179"/>
+    <enumeration value="0180"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0185"/>
+    <enumeration value="0186"/>
+    <enumeration value="0187"/>
+    <enumeration value="0188"/>
+    <enumeration value="0189"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0197"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
+  </cl>
+  <cl id="6">
+    <enumeration value="AA"/>
+    <enumeration value="AB"/>
+    <enumeration value="AC"/>
+    <enumeration value="AD"/>
+    <enumeration value="AE"/>
+    <enumeration value="AF"/>
+    <enumeration value="AG"/>
+    <enumeration value="AH"/>
+    <enumeration value="AI"/>
+    <enumeration value="AJ"/>
+    <enumeration value="AK"/>
+    <enumeration value="AL"/>
+    <enumeration value="AM"/>
+    <enumeration value="AN"/>
+    <enumeration value="AO"/>
+    <enumeration value="AP"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AR"/>
+    <enumeration value="AS"/>
+    <enumeration value="AT"/>
+    <enumeration value="AU"/>
+    <enumeration value="AV"/>
+    <enumeration value="AW"/>
+    <enumeration value="AX"/>
+    <enumeration value="AY"/>
+    <enumeration value="AZ"/>
+    <enumeration value="BA"/>
+    <enumeration value="BB"/>
+    <enumeration value="BC"/>
+    <enumeration value="BD"/>
+    <enumeration value="BE"/>
+    <enumeration value="BF"/>
+    <enumeration value="BG"/>
+    <enumeration value="BH"/>
+    <enumeration value="BI"/>
+    <enumeration value="BJ"/>
+    <enumeration value="BK"/>
+    <enumeration value="BL"/>
+    <enumeration value="BM"/>
+    <enumeration value="BN"/>
+    <enumeration value="BO"/>
+    <enumeration value="BP"/>
+    <enumeration value="BQ"/>
+    <enumeration value="BR"/>
+    <enumeration value="BS"/>
+    <enumeration value="BT"/>
+    <enumeration value="BU"/>
+    <enumeration value="BV"/>
+    <enumeration value="BW"/>
+    <enumeration value="BX"/>
+    <enumeration value="BY"/>
+    <enumeration value="BZ"/>
+    <enumeration value="CC"/>
+    <enumeration value="CG"/>
+    <enumeration value="CL"/>
+    <enumeration value="CR"/>
+    <enumeration value="CV"/>
+    <enumeration value="DR"/>
+    <enumeration value="DW"/>
+    <enumeration value="EC"/>
+    <enumeration value="EF"/>
+    <enumeration value="EMD"/>
+    <enumeration value="EN"/>
+    <enumeration value="FS"/>
+    <enumeration value="GB"/>
+    <enumeration value="GMN"/>
+    <enumeration value="GN"/>
+    <enumeration value="GS"/>
+    <enumeration value="HS"/>
+    <enumeration value="IB"/>
+    <enumeration value="IN"/>
+    <enumeration value="IS"/>
+    <enumeration value="IT"/>
+    <enumeration value="IZ"/>
+    <enumeration value="MA"/>
+    <enumeration value="MF"/>
+    <enumeration value="MN"/>
+    <enumeration value="MP"/>
+    <enumeration value="NB"/>
+    <enumeration value="ON"/>
+    <enumeration value="PD"/>
+    <enumeration value="PL"/>
+    <enumeration value="PO"/>
+    <enumeration value="PV"/>
+    <enumeration value="QS"/>
+    <enumeration value="RC"/>
+    <enumeration value="RN"/>
+    <enumeration value="RU"/>
+    <enumeration value="RY"/>
+    <enumeration value="SA"/>
+    <enumeration value="SG"/>
+    <enumeration value="SK"/>
+    <enumeration value="SN"/>
+    <enumeration value="SRS"/>
+    <enumeration value="SRT"/>
+    <enumeration value="SRU"/>
+    <enumeration value="SRV"/>
+    <enumeration value="SRW"/>
+    <enumeration value="SRX"/>
+    <enumeration value="SRY"/>
+    <enumeration value="SRZ"/>
+    <enumeration value="SS"/>
+    <enumeration value="SSA"/>
+    <enumeration value="SSB"/>
+    <enumeration value="SSC"/>
+    <enumeration value="SSD"/>
+    <enumeration value="SSE"/>
+    <enumeration value="SSF"/>
+    <enumeration value="SSG"/>
+    <enumeration value="SSH"/>
+    <enumeration value="SSI"/>
+    <enumeration value="SSJ"/>
+    <enumeration value="SSK"/>
+    <enumeration value="SSL"/>
+    <enumeration value="SSM"/>
+    <enumeration value="SSN"/>
+    <enumeration value="SSO"/>
+    <enumeration value="SSP"/>
+    <enumeration value="SSQ"/>
+    <enumeration value="SSR"/>
+    <enumeration value="SSS"/>
+    <enumeration value="SST"/>
+    <enumeration value="SSU"/>
+    <enumeration value="SSV"/>
+    <enumeration value="SSW"/>
+    <enumeration value="SSX"/>
+    <enumeration value="SSY"/>
+    <enumeration value="SSZ"/>
+    <enumeration value="ST"/>
+    <enumeration value="STA"/>
+    <enumeration value="STB"/>
+    <enumeration value="STC"/>
+    <enumeration value="STD"/>
+    <enumeration value="STE"/>
+    <enumeration value="STF"/>
+    <enumeration value="STG"/>
+    <enumeration value="STH"/>
+    <enumeration value="STI"/>
+    <enumeration value="STJ"/>
+    <enumeration value="STK"/>
+    <enumeration value="STL"/>
+    <enumeration value="STM"/>
+    <enumeration value="STN"/>
+    <enumeration value="STO"/>
+    <enumeration value="STP"/>
+    <enumeration value="STQ"/>
+    <enumeration value="STR"/>
+    <enumeration value="STS"/>
+    <enumeration value="STT"/>
+    <enumeration value="STU"/>
+    <enumeration value="STV"/>
+    <enumeration value="STW"/>
+    <enumeration value="STX"/>
+    <enumeration value="STY"/>
+    <enumeration value="STZ"/>
+    <enumeration value="SUA"/>
+    <enumeration value="SUB"/>
+    <enumeration value="SUC"/>
+    <enumeration value="SUD"/>
+    <enumeration value="SUE"/>
+    <enumeration value="SUF"/>
+    <enumeration value="SUG"/>
+    <enumeration value="SUH"/>
+    <enumeration value="SUI"/>
+    <enumeration value="SUJ"/>
+    <enumeration value="SUK"/>
+    <enumeration value="SUL"/>
+    <enumeration value="SUM"/>
+    <enumeration value="TG"/>
+    <enumeration value="TSN"/>
+    <enumeration value="TSO"/>
+    <enumeration value="TSP"/>
+    <enumeration value="TSQ"/>
+    <enumeration value="TSR"/>
+    <enumeration value="TSS"/>
+    <enumeration value="TST"/>
+    <enumeration value="TSU"/>
+    <enumeration value="UA"/>
+    <enumeration value="UP"/>
+    <enumeration value="VN"/>
+    <enumeration value="VP"/>
+    <enumeration value="VS"/>
+    <enumeration value="VX"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="7">
+    <enumeration value="AD"/>
+    <enumeration value="AE"/>
+    <enumeration value="AF"/>
+    <enumeration value="AG"/>
+    <enumeration value="AI"/>
+    <enumeration value="AL"/>
+    <enumeration value="AM"/>
+    <enumeration value="AO"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AR"/>
+    <enumeration value="AS"/>
+    <enumeration value="AT"/>
+    <enumeration value="AU"/>
+    <enumeration value="AW"/>
+    <enumeration value="AX"/>
+    <enumeration value="AZ"/>
+    <enumeration value="BA"/>
+    <enumeration value="BB"/>
+    <enumeration value="BD"/>
+    <enumeration value="BE"/>
+    <enumeration value="BF"/>
+    <enumeration value="BG"/>
+    <enumeration value="BH"/>
+    <enumeration value="BI"/>
+    <enumeration value="BJ"/>
+    <enumeration value="BL"/>
+    <enumeration value="BM"/>
+    <enumeration value="BN"/>
+    <enumeration value="BO"/>
+    <enumeration value="BQ"/>
+    <enumeration value="BR"/>
+    <enumeration value="BS"/>
+    <enumeration value="BT"/>
+    <enumeration value="BV"/>
+    <enumeration value="BW"/>
+    <enumeration value="BY"/>
+    <enumeration value="BZ"/>
+    <enumeration value="CA"/>
+    <enumeration value="CC"/>
+    <enumeration value="CD"/>
+    <enumeration value="CF"/>
+    <enumeration value="CG"/>
+    <enumeration value="CH"/>
+    <enumeration value="CI"/>
+    <enumeration value="CK"/>
+    <enumeration value="CL"/>
+    <enumeration value="CM"/>
+    <enumeration value="CN"/>
+    <enumeration value="CO"/>
+    <enumeration value="CR"/>
+    <enumeration value="CU"/>
+    <enumeration value="CV"/>
+    <enumeration value="CW"/>
+    <enumeration value="CX"/>
+    <enumeration value="CY"/>
+    <enumeration value="CZ"/>
+    <enumeration value="DE"/>
+    <enumeration value="DJ"/>
+    <enumeration value="DK"/>
+    <enumeration value="DM"/>
+    <enumeration value="DO"/>
+    <enumeration value="DZ"/>
+    <enumeration value="EC"/>
+    <enumeration value="EE"/>
+    <enumeration value="EG"/>
+    <enumeration value="EH"/>
+    <enumeration value="ER"/>
+    <enumeration value="ES"/>
+    <enumeration value="ET"/>
+    <enumeration value="FI"/>
+    <enumeration value="FJ"/>
+    <enumeration value="FK"/>
+    <enumeration value="FM"/>
+    <enumeration value="FO"/>
+    <enumeration value="FR"/>
+    <enumeration value="GA"/>
+    <enumeration value="GB"/>
+    <enumeration value="GD"/>
+    <enumeration value="GE"/>
+    <enumeration value="GF"/>
+    <enumeration value="GG"/>
+    <enumeration value="GH"/>
+    <enumeration value="GI"/>
+    <enumeration value="GL"/>
+    <enumeration value="GM"/>
+    <enumeration value="GN"/>
+    <enumeration value="GP"/>
+    <enumeration value="GQ"/>
+    <enumeration value="GR"/>
+    <enumeration value="GS"/>
+    <enumeration value="GT"/>
+    <enumeration value="GU"/>
+    <enumeration value="GW"/>
+    <enumeration value="GY"/>
+    <enumeration value="HK"/>
+    <enumeration value="HM"/>
+    <enumeration value="HN"/>
+    <enumeration value="HR"/>
+    <enumeration value="HT"/>
+    <enumeration value="HU"/>
+    <enumeration value="ID"/>
+    <enumeration value="IE"/>
+    <enumeration value="IL"/>
+    <enumeration value="IM"/>
+    <enumeration value="IN"/>
+    <enumeration value="IO"/>
+    <enumeration value="IQ"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="IT"/>
+    <enumeration value="JE"/>
+    <enumeration value="JM"/>
+    <enumeration value="JO"/>
+    <enumeration value="JP"/>
+    <enumeration value="KE"/>
+    <enumeration value="KG"/>
+    <enumeration value="KH"/>
+    <enumeration value="KI"/>
+    <enumeration value="KM"/>
+    <enumeration value="KN"/>
+    <enumeration value="KP"/>
+    <enumeration value="KR"/>
+    <enumeration value="KW"/>
+    <enumeration value="KY"/>
+    <enumeration value="KZ"/>
+    <enumeration value="LA"/>
+    <enumeration value="LB"/>
+    <enumeration value="LC"/>
+    <enumeration value="LI"/>
+    <enumeration value="LK"/>
+    <enumeration value="LR"/>
+    <enumeration value="LS"/>
+    <enumeration value="LT"/>
+    <enumeration value="LU"/>
+    <enumeration value="LV"/>
+    <enumeration value="LY"/>
+    <enumeration value="MA"/>
+    <enumeration value="MC"/>
+    <enumeration value="MD"/>
+    <enumeration value="ME"/>
+    <enumeration value="MF"/>
+    <enumeration value="MG"/>
+    <enumeration value="MH"/>
+    <enumeration value="MK"/>
+    <enumeration value="ML"/>
+    <enumeration value="MM"/>
+    <enumeration value="MN"/>
+    <enumeration value="MO"/>
+    <enumeration value="MP"/>
+    <enumeration value="MQ"/>
+    <enumeration value="MR"/>
+    <enumeration value="MS"/>
+    <enumeration value="MT"/>
+    <enumeration value="MU"/>
+    <enumeration value="MV"/>
+    <enumeration value="MW"/>
+    <enumeration value="MX"/>
+    <enumeration value="MY"/>
+    <enumeration value="MZ"/>
+    <enumeration value="NA"/>
+    <enumeration value="NC"/>
+    <enumeration value="NE"/>
+    <enumeration value="NF"/>
+    <enumeration value="NG"/>
+    <enumeration value="NI"/>
+    <enumeration value="NL"/>
+    <enumeration value="NO"/>
+    <enumeration value="NP"/>
+    <enumeration value="NR"/>
+    <enumeration value="NU"/>
+    <enumeration value="NZ"/>
+    <enumeration value="OM"/>
+    <enumeration value="PA"/>
+    <enumeration value="PE"/>
+    <enumeration value="PF"/>
+    <enumeration value="PG"/>
+    <enumeration value="PH"/>
+    <enumeration value="PK"/>
+    <enumeration value="PL"/>
+    <enumeration value="PM"/>
+    <enumeration value="PN"/>
+    <enumeration value="PR"/>
+    <enumeration value="PS"/>
+    <enumeration value="PT"/>
+    <enumeration value="PW"/>
+    <enumeration value="PY"/>
+    <enumeration value="QA"/>
+    <enumeration value="RE"/>
+    <enumeration value="RO"/>
+    <enumeration value="RS"/>
+    <enumeration value="RU"/>
+    <enumeration value="RW"/>
+    <enumeration value="SA"/>
+    <enumeration value="SB"/>
+    <enumeration value="SC"/>
+    <enumeration value="SD"/>
+    <enumeration value="SE"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SI"/>
+    <enumeration value="SJ"/>
+    <enumeration value="SK"/>
+    <enumeration value="SL"/>
+    <enumeration value="SM"/>
+    <enumeration value="SN"/>
+    <enumeration value="SO"/>
+    <enumeration value="SR"/>
+    <enumeration value="SS"/>
+    <enumeration value="ST"/>
+    <enumeration value="SV"/>
+    <enumeration value="SX"/>
+    <enumeration value="SY"/>
+    <enumeration value="SZ"/>
+    <enumeration value="TC"/>
+    <enumeration value="TD"/>
+    <enumeration value="TF"/>
+    <enumeration value="TG"/>
+    <enumeration value="TH"/>
+    <enumeration value="TJ"/>
+    <enumeration value="TK"/>
+    <enumeration value="TL"/>
+    <enumeration value="TM"/>
+    <enumeration value="TN"/>
+    <enumeration value="TO"/>
+    <enumeration value="TR"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="TW"/>
+    <enumeration value="TZ"/>
+    <enumeration value="UA"/>
+    <enumeration value="UG"/>
+    <enumeration value="UM"/>
+    <enumeration value="US"/>
+    <enumeration value="UY"/>
+    <enumeration value="UZ"/>
+    <enumeration value="VA"/>
+    <enumeration value="VC"/>
+    <enumeration value="VE"/>
+    <enumeration value="VG"/>
+    <enumeration value="VI"/>
+    <enumeration value="VN"/>
+    <enumeration value="VU"/>
+    <enumeration value="WF"/>
+    <enumeration value="WS"/>
+    <enumeration value="YE"/>
+    <enumeration value="YT"/>
+    <enumeration value="ZA"/>
+    <enumeration value="ZM"/>
+    <enumeration value="ZW"/>
+    <enumeration value="1A"/>
+    <enumeration value="XI"/>
+  </cl>
+  <cl id="8">
+    <enumeration value="10"/>
+    <enumeration value="11"/>
+    <enumeration value="13"/>
+    <enumeration value="14"/>
+    <enumeration value="15"/>
+    <enumeration value="20"/>
+    <enumeration value="21"/>
+    <enumeration value="22"/>
+    <enumeration value="23"/>
+    <enumeration value="24"/>
+    <enumeration value="25"/>
+    <enumeration value="27"/>
+    <enumeration value="28"/>
+    <enumeration value="33"/>
+    <enumeration value="34"/>
+    <enumeration value="35"/>
+    <enumeration value="37"/>
+    <enumeration value="38"/>
+    <enumeration value="40"/>
+    <enumeration value="41"/>
+    <enumeration value="56"/>
+    <enumeration value="57"/>
+    <enumeration value="58"/>
+    <enumeration value="59"/>
+    <enumeration value="60"/>
+    <enumeration value="61"/>
+    <enumeration value="74"/>
+    <enumeration value="77"/>
+    <enumeration value="80"/>
+    <enumeration value="81"/>
+    <enumeration value="85"/>
+    <enumeration value="87"/>
+    <enumeration value="89"/>
+    <enumeration value="91"/>
+    <enumeration value="1I"/>
+    <enumeration value="2A"/>
+    <enumeration value="2B"/>
+    <enumeration value="2C"/>
+    <enumeration value="2G"/>
+    <enumeration value="2H"/>
+    <enumeration value="2I"/>
+    <enumeration value="2J"/>
+    <enumeration value="2K"/>
+    <enumeration value="2L"/>
+    <enumeration value="2M"/>
+    <enumeration value="2N"/>
+    <enumeration value="2P"/>
+    <enumeration value="2Q"/>
+    <enumeration value="2R"/>
+    <enumeration value="2U"/>
+    <enumeration value="2X"/>
+    <enumeration value="2Y"/>
+    <enumeration value="2Z"/>
+    <enumeration value="3B"/>
+    <enumeration value="3C"/>
+    <enumeration value="4C"/>
+    <enumeration value="4G"/>
+    <enumeration value="4H"/>
+    <enumeration value="4K"/>
+    <enumeration value="4L"/>
+    <enumeration value="4M"/>
+    <enumeration value="4N"/>
+    <enumeration value="4O"/>
+    <enumeration value="4P"/>
+    <enumeration value="4Q"/>
+    <enumeration value="4R"/>
+    <enumeration value="4T"/>
+    <enumeration value="4U"/>
+    <enumeration value="4W"/>
+    <enumeration value="4X"/>
+    <enumeration value="5A"/>
+    <enumeration value="5B"/>
+    <enumeration value="5E"/>
+    <enumeration value="5J"/>
+    <enumeration value="A10"/>
+    <enumeration value="A11"/>
+    <enumeration value="A12"/>
+    <enumeration value="A13"/>
+    <enumeration value="A14"/>
+    <enumeration value="A15"/>
+    <enumeration value="A16"/>
+    <enumeration value="A17"/>
+    <enumeration value="A18"/>
+    <enumeration value="A19"/>
+    <enumeration value="A2"/>
+    <enumeration value="A20"/>
+    <enumeration value="A21"/>
+    <enumeration value="A22"/>
+    <enumeration value="A23"/>
+    <enumeration value="A24"/>
+    <enumeration value="A26"/>
+    <enumeration value="A27"/>
+    <enumeration value="A28"/>
+    <enumeration value="A29"/>
+    <enumeration value="A3"/>
+    <enumeration value="A30"/>
+    <enumeration value="A31"/>
+    <enumeration value="A32"/>
+    <enumeration value="A33"/>
+    <enumeration value="A34"/>
+    <enumeration value="A35"/>
+    <enumeration value="A36"/>
+    <enumeration value="A37"/>
+    <enumeration value="A38"/>
+    <enumeration value="A39"/>
+    <enumeration value="A4"/>
+    <enumeration value="A40"/>
+    <enumeration value="A41"/>
+    <enumeration value="A42"/>
+    <enumeration value="A43"/>
+    <enumeration value="A44"/>
+    <enumeration value="A45"/>
+    <enumeration value="A47"/>
+    <enumeration value="A48"/>
+    <enumeration value="A49"/>
+    <enumeration value="A5"/>
+    <enumeration value="A53"/>
+    <enumeration value="A54"/>
+    <enumeration value="A55"/>
+    <enumeration value="A56"/>
+    <enumeration value="A59"/>
+    <enumeration value="A6"/>
+    <enumeration value="A68"/>
+    <enumeration value="A69"/>
+    <enumeration value="A7"/>
+    <enumeration value="A70"/>
+    <enumeration value="A71"/>
+    <enumeration value="A73"/>
+    <enumeration value="A74"/>
+    <enumeration value="A75"/>
+    <enumeration value="A76"/>
+    <enumeration value="A8"/>
+    <enumeration value="A84"/>
+    <enumeration value="A85"/>
+    <enumeration value="A86"/>
+    <enumeration value="A87"/>
+    <enumeration value="A88"/>
+    <enumeration value="A89"/>
+    <enumeration value="A9"/>
+    <enumeration value="A90"/>
+    <enumeration value="A91"/>
+    <enumeration value="A93"/>
+    <enumeration value="A94"/>
+    <enumeration value="A95"/>
+    <enumeration value="A96"/>
+    <enumeration value="A97"/>
+    <enumeration value="A98"/>
+    <enumeration value="A99"/>
+    <enumeration value="AA"/>
+    <enumeration value="AB"/>
+    <enumeration value="ACR"/>
+    <enumeration value="ACT"/>
+    <enumeration value="AD"/>
+    <enumeration value="AE"/>
+    <enumeration value="AH"/>
+    <enumeration value="AI"/>
+    <enumeration value="AK"/>
+    <enumeration value="AL"/>
+    <enumeration value="AMH"/>
+    <enumeration value="AMP"/>
+    <enumeration value="ANN"/>
+    <enumeration value="APZ"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AS"/>
+    <enumeration value="ASM"/>
+    <enumeration value="ASU"/>
+    <enumeration value="ATM"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AY"/>
+    <enumeration value="AZ"/>
+    <enumeration value="B1"/>
+    <enumeration value="B10"/>
+    <enumeration value="B11"/>
+    <enumeration value="B12"/>
+    <enumeration value="B13"/>
+    <enumeration value="B14"/>
+    <enumeration value="B15"/>
+    <enumeration value="B16"/>
+    <enumeration value="B17"/>
+    <enumeration value="B18"/>
+    <enumeration value="B19"/>
+    <enumeration value="B20"/>
+    <enumeration value="B21"/>
+    <enumeration value="B22"/>
+    <enumeration value="B23"/>
+    <enumeration value="B24"/>
+    <enumeration value="B25"/>
+    <enumeration value="B26"/>
+    <enumeration value="B27"/>
+    <enumeration value="B28"/>
+    <enumeration value="B29"/>
+    <enumeration value="B3"/>
+    <enumeration value="B30"/>
+    <enumeration value="B31"/>
+    <enumeration value="B32"/>
+    <enumeration value="B33"/>
+    <enumeration value="B34"/>
+    <enumeration value="B35"/>
+    <enumeration value="B4"/>
+    <enumeration value="B41"/>
+    <enumeration value="B42"/>
+    <enumeration value="B43"/>
+    <enumeration value="B44"/>
+    <enumeration value="B45"/>
+    <enumeration value="B46"/>
+    <enumeration value="B47"/>
+    <enumeration value="B48"/>
+    <enumeration value="B49"/>
+    <enumeration value="B50"/>
+    <enumeration value="B52"/>
+    <enumeration value="B53"/>
+    <enumeration value="B54"/>
+    <enumeration value="B55"/>
+    <enumeration value="B56"/>
+    <enumeration value="B57"/>
+    <enumeration value="B58"/>
+    <enumeration value="B59"/>
+    <enumeration value="B60"/>
+    <enumeration value="B61"/>
+    <enumeration value="B62"/>
+    <enumeration value="B63"/>
+    <enumeration value="B64"/>
+    <enumeration value="B66"/>
+    <enumeration value="B67"/>
+    <enumeration value="B68"/>
+    <enumeration value="B69"/>
+    <enumeration value="B7"/>
+    <enumeration value="B70"/>
+    <enumeration value="B71"/>
+    <enumeration value="B72"/>
+    <enumeration value="B73"/>
+    <enumeration value="B74"/>
+    <enumeration value="B75"/>
+    <enumeration value="B76"/>
+    <enumeration value="B77"/>
+    <enumeration value="B78"/>
+    <enumeration value="B79"/>
+    <enumeration value="B8"/>
+    <enumeration value="B80"/>
+    <enumeration value="B81"/>
+    <enumeration value="B82"/>
+    <enumeration value="B83"/>
+    <enumeration value="B84"/>
+    <enumeration value="B85"/>
+    <enumeration value="B86"/>
+    <enumeration value="B87"/>
+    <enumeration value="B88"/>
+    <enumeration value="B89"/>
+    <enumeration value="B90"/>
+    <enumeration value="B91"/>
+    <enumeration value="B92"/>
+    <enumeration value="B93"/>
+    <enumeration value="B94"/>
+    <enumeration value="B95"/>
+    <enumeration value="B96"/>
+    <enumeration value="B97"/>
+    <enumeration value="B98"/>
+    <enumeration value="B99"/>
+    <enumeration value="BAR"/>
+    <enumeration value="BB"/>
+    <enumeration value="BFT"/>
+    <enumeration value="BHP"/>
+    <enumeration value="BIL"/>
+    <enumeration value="BLD"/>
+    <enumeration value="BLL"/>
+    <enumeration value="BP"/>
+    <enumeration value="BPM"/>
+    <enumeration value="BQL"/>
+    <enumeration value="BTU"/>
+    <enumeration value="BUA"/>
+    <enumeration value="BUI"/>
+    <enumeration value="C0"/>
+    <enumeration value="C10"/>
+    <enumeration value="C11"/>
+    <enumeration value="C12"/>
+    <enumeration value="C13"/>
+    <enumeration value="C14"/>
+    <enumeration value="C15"/>
+    <enumeration value="C16"/>
+    <enumeration value="C17"/>
+    <enumeration value="C18"/>
+    <enumeration value="C19"/>
+    <enumeration value="C20"/>
+    <enumeration value="C21"/>
+    <enumeration value="C22"/>
+    <enumeration value="C23"/>
+    <enumeration value="C24"/>
+    <enumeration value="C25"/>
+    <enumeration value="C26"/>
+    <enumeration value="C27"/>
+    <enumeration value="C28"/>
+    <enumeration value="C29"/>
+    <enumeration value="C3"/>
+    <enumeration value="C30"/>
+    <enumeration value="C31"/>
+    <enumeration value="C32"/>
+    <enumeration value="C33"/>
+    <enumeration value="C34"/>
+    <enumeration value="C35"/>
+    <enumeration value="C36"/>
+    <enumeration value="C37"/>
+    <enumeration value="C38"/>
+    <enumeration value="C39"/>
+    <enumeration value="C40"/>
+    <enumeration value="C41"/>
+    <enumeration value="C42"/>
+    <enumeration value="C43"/>
+    <enumeration value="C44"/>
+    <enumeration value="C45"/>
+    <enumeration value="C46"/>
+    <enumeration value="C47"/>
+    <enumeration value="C48"/>
+    <enumeration value="C49"/>
+    <enumeration value="C50"/>
+    <enumeration value="C51"/>
+    <enumeration value="C52"/>
+    <enumeration value="C53"/>
+    <enumeration value="C54"/>
+    <enumeration value="C55"/>
+    <enumeration value="C56"/>
+    <enumeration value="C57"/>
+    <enumeration value="C58"/>
+    <enumeration value="C59"/>
+    <enumeration value="C60"/>
+    <enumeration value="C61"/>
+    <enumeration value="C62"/>
+    <enumeration value="C63"/>
+    <enumeration value="C64"/>
+    <enumeration value="C65"/>
+    <enumeration value="C66"/>
+    <enumeration value="C67"/>
+    <enumeration value="C68"/>
+    <enumeration value="C69"/>
+    <enumeration value="C7"/>
+    <enumeration value="C70"/>
+    <enumeration value="C71"/>
+    <enumeration value="C72"/>
+    <enumeration value="C73"/>
+    <enumeration value="C74"/>
+    <enumeration value="C75"/>
+    <enumeration value="C76"/>
+    <enumeration value="C78"/>
+    <enumeration value="C79"/>
+    <enumeration value="C8"/>
+    <enumeration value="C80"/>
+    <enumeration value="C81"/>
+    <enumeration value="C82"/>
+    <enumeration value="C83"/>
+    <enumeration value="C84"/>
+    <enumeration value="C85"/>
+    <enumeration value="C86"/>
+    <enumeration value="C87"/>
+    <enumeration value="C88"/>
+    <enumeration value="C89"/>
+    <enumeration value="C9"/>
+    <enumeration value="C90"/>
+    <enumeration value="C91"/>
+    <enumeration value="C92"/>
+    <enumeration value="C93"/>
+    <enumeration value="C94"/>
+    <enumeration value="C95"/>
+    <enumeration value="C96"/>
+    <enumeration value="C97"/>
+    <enumeration value="C99"/>
+    <enumeration value="CCT"/>
+    <enumeration value="CDL"/>
+    <enumeration value="CEL"/>
+    <enumeration value="CEN"/>
+    <enumeration value="CG"/>
+    <enumeration value="CGM"/>
+    <enumeration value="CKG"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLT"/>
+    <enumeration value="CMK"/>
+    <enumeration value="CMQ"/>
+    <enumeration value="CMT"/>
+    <enumeration value="CNP"/>
+    <enumeration value="CNT"/>
+    <enumeration value="COU"/>
+    <enumeration value="CTG"/>
+    <enumeration value="CTM"/>
+    <enumeration value="CTN"/>
+    <enumeration value="CUR"/>
+    <enumeration value="CWA"/>
+    <enumeration value="CWI"/>
+    <enumeration value="D03"/>
+    <enumeration value="D04"/>
+    <enumeration value="D1"/>
+    <enumeration value="D10"/>
+    <enumeration value="D11"/>
+    <enumeration value="D12"/>
+    <enumeration value="D13"/>
+    <enumeration value="D15"/>
+    <enumeration value="D16"/>
+    <enumeration value="D17"/>
+    <enumeration value="D18"/>
+    <enumeration value="D19"/>
+    <enumeration value="D2"/>
+    <enumeration value="D20"/>
+    <enumeration value="D21"/>
+    <enumeration value="D22"/>
+    <enumeration value="D23"/>
+    <enumeration value="D24"/>
+    <enumeration value="D25"/>
+    <enumeration value="D26"/>
+    <enumeration value="D27"/>
+    <enumeration value="D29"/>
+    <enumeration value="D30"/>
+    <enumeration value="D31"/>
+    <enumeration value="D32"/>
+    <enumeration value="D33"/>
+    <enumeration value="D34"/>
+    <enumeration value="D36"/>
+    <enumeration value="D41"/>
+    <enumeration value="D42"/>
+    <enumeration value="D43"/>
+    <enumeration value="D44"/>
+    <enumeration value="D45"/>
+    <enumeration value="D46"/>
+    <enumeration value="D47"/>
+    <enumeration value="D48"/>
+    <enumeration value="D49"/>
+    <enumeration value="D5"/>
+    <enumeration value="D50"/>
+    <enumeration value="D51"/>
+    <enumeration value="D52"/>
+    <enumeration value="D53"/>
+    <enumeration value="D54"/>
+    <enumeration value="D55"/>
+    <enumeration value="D56"/>
+    <enumeration value="D57"/>
+    <enumeration value="D58"/>
+    <enumeration value="D59"/>
+    <enumeration value="D6"/>
+    <enumeration value="D60"/>
+    <enumeration value="D61"/>
+    <enumeration value="D62"/>
+    <enumeration value="D63"/>
+    <enumeration value="D65"/>
+    <enumeration value="D68"/>
+    <enumeration value="D69"/>
+    <enumeration value="D73"/>
+    <enumeration value="D74"/>
+    <enumeration value="D77"/>
+    <enumeration value="D78"/>
+    <enumeration value="D80"/>
+    <enumeration value="D81"/>
+    <enumeration value="D82"/>
+    <enumeration value="D83"/>
+    <enumeration value="D85"/>
+    <enumeration value="D86"/>
+    <enumeration value="D87"/>
+    <enumeration value="D88"/>
+    <enumeration value="D89"/>
+    <enumeration value="D91"/>
+    <enumeration value="D93"/>
+    <enumeration value="D94"/>
+    <enumeration value="D95"/>
+    <enumeration value="DAA"/>
+    <enumeration value="DAD"/>
+    <enumeration value="DAY"/>
+    <enumeration value="DB"/>
+    <enumeration value="DBM"/>
+    <enumeration value="DBW"/>
+    <enumeration value="DD"/>
+    <enumeration value="DEC"/>
+    <enumeration value="DG"/>
+    <enumeration value="DJ"/>
+    <enumeration value="DLT"/>
+    <enumeration value="DMA"/>
+    <enumeration value="DMK"/>
+    <enumeration value="DMO"/>
+    <enumeration value="DMQ"/>
+    <enumeration value="DMT"/>
+    <enumeration value="DN"/>
+    <enumeration value="DPC"/>
+    <enumeration value="DPR"/>
+    <enumeration value="DPT"/>
+    <enumeration value="DRA"/>
+    <enumeration value="DRI"/>
+    <enumeration value="DRL"/>
+    <enumeration value="DT"/>
+    <enumeration value="DTN"/>
+    <enumeration value="DWT"/>
+    <enumeration value="DZN"/>
+    <enumeration value="DZP"/>
+    <enumeration value="E01"/>
+    <enumeration value="E07"/>
+    <enumeration value="E08"/>
+    <enumeration value="E09"/>
+    <enumeration value="E10"/>
+    <enumeration value="E12"/>
+    <enumeration value="E14"/>
+    <enumeration value="E15"/>
+    <enumeration value="E16"/>
+    <enumeration value="E17"/>
+    <enumeration value="E18"/>
+    <enumeration value="E19"/>
+    <enumeration value="E20"/>
+    <enumeration value="E21"/>
+    <enumeration value="E22"/>
+    <enumeration value="E23"/>
+    <enumeration value="E25"/>
+    <enumeration value="E27"/>
+    <enumeration value="E28"/>
+    <enumeration value="E30"/>
+    <enumeration value="E31"/>
+    <enumeration value="E32"/>
+    <enumeration value="E33"/>
+    <enumeration value="E34"/>
+    <enumeration value="E35"/>
+    <enumeration value="E36"/>
+    <enumeration value="E37"/>
+    <enumeration value="E38"/>
+    <enumeration value="E39"/>
+    <enumeration value="E4"/>
+    <enumeration value="E40"/>
+    <enumeration value="E41"/>
+    <enumeration value="E42"/>
+    <enumeration value="E43"/>
+    <enumeration value="E44"/>
+    <enumeration value="E45"/>
+    <enumeration value="E46"/>
+    <enumeration value="E47"/>
+    <enumeration value="E48"/>
+    <enumeration value="E49"/>
+    <enumeration value="E50"/>
+    <enumeration value="E51"/>
+    <enumeration value="E52"/>
+    <enumeration value="E53"/>
+    <enumeration value="E54"/>
+    <enumeration value="E55"/>
+    <enumeration value="E56"/>
+    <enumeration value="E57"/>
+    <enumeration value="E58"/>
+    <enumeration value="E59"/>
+    <enumeration value="E60"/>
+    <enumeration value="E61"/>
+    <enumeration value="E62"/>
+    <enumeration value="E63"/>
+    <enumeration value="E64"/>
+    <enumeration value="E65"/>
+    <enumeration value="E66"/>
+    <enumeration value="E67"/>
+    <enumeration value="E68"/>
+    <enumeration value="E69"/>
+    <enumeration value="E70"/>
+    <enumeration value="E71"/>
+    <enumeration value="E72"/>
+    <enumeration value="E73"/>
+    <enumeration value="E74"/>
+    <enumeration value="E75"/>
+    <enumeration value="E76"/>
+    <enumeration value="E77"/>
+    <enumeration value="E78"/>
+    <enumeration value="E79"/>
+    <enumeration value="E80"/>
+    <enumeration value="E81"/>
+    <enumeration value="E82"/>
+    <enumeration value="E83"/>
+    <enumeration value="E84"/>
+    <enumeration value="E85"/>
+    <enumeration value="E86"/>
+    <enumeration value="E87"/>
+    <enumeration value="E88"/>
+    <enumeration value="E89"/>
+    <enumeration value="E90"/>
+    <enumeration value="E91"/>
+    <enumeration value="E92"/>
+    <enumeration value="E93"/>
+    <enumeration value="E94"/>
+    <enumeration value="E95"/>
+    <enumeration value="E96"/>
+    <enumeration value="E97"/>
+    <enumeration value="E98"/>
+    <enumeration value="E99"/>
+    <enumeration value="EA"/>
+    <enumeration value="EB"/>
+    <enumeration value="EQ"/>
+    <enumeration value="F01"/>
+    <enumeration value="F02"/>
+    <enumeration value="F03"/>
+    <enumeration value="F04"/>
+    <enumeration value="F05"/>
+    <enumeration value="F06"/>
+    <enumeration value="F07"/>
+    <enumeration value="F08"/>
+    <enumeration value="F10"/>
+    <enumeration value="F11"/>
+    <enumeration value="F12"/>
+    <enumeration value="F13"/>
+    <enumeration value="F14"/>
+    <enumeration value="F15"/>
+    <enumeration value="F16"/>
+    <enumeration value="F17"/>
+    <enumeration value="F18"/>
+    <enumeration value="F19"/>
+    <enumeration value="F20"/>
+    <enumeration value="F21"/>
+    <enumeration value="F22"/>
+    <enumeration value="F23"/>
+    <enumeration value="F24"/>
+    <enumeration value="F25"/>
+    <enumeration value="F26"/>
+    <enumeration value="F27"/>
+    <enumeration value="F28"/>
+    <enumeration value="F29"/>
+    <enumeration value="F30"/>
+    <enumeration value="F31"/>
+    <enumeration value="F32"/>
+    <enumeration value="F33"/>
+    <enumeration value="F34"/>
+    <enumeration value="F35"/>
+    <enumeration value="F36"/>
+    <enumeration value="F37"/>
+    <enumeration value="F38"/>
+    <enumeration value="F39"/>
+    <enumeration value="F40"/>
+    <enumeration value="F41"/>
+    <enumeration value="F42"/>
+    <enumeration value="F43"/>
+    <enumeration value="F44"/>
+    <enumeration value="F45"/>
+    <enumeration value="F46"/>
+    <enumeration value="F47"/>
+    <enumeration value="F48"/>
+    <enumeration value="F49"/>
+    <enumeration value="F50"/>
+    <enumeration value="F51"/>
+    <enumeration value="F52"/>
+    <enumeration value="F53"/>
+    <enumeration value="F54"/>
+    <enumeration value="F55"/>
+    <enumeration value="F56"/>
+    <enumeration value="F57"/>
+    <enumeration value="F58"/>
+    <enumeration value="F59"/>
+    <enumeration value="F60"/>
+    <enumeration value="F61"/>
+    <enumeration value="F62"/>
+    <enumeration value="F63"/>
+    <enumeration value="F64"/>
+    <enumeration value="F65"/>
+    <enumeration value="F66"/>
+    <enumeration value="F67"/>
+    <enumeration value="F68"/>
+    <enumeration value="F69"/>
+    <enumeration value="F70"/>
+    <enumeration value="F71"/>
+    <enumeration value="F72"/>
+    <enumeration value="F73"/>
+    <enumeration value="F74"/>
+    <enumeration value="F75"/>
+    <enumeration value="F76"/>
+    <enumeration value="F77"/>
+    <enumeration value="F78"/>
+    <enumeration value="F79"/>
+    <enumeration value="F80"/>
+    <enumeration value="F81"/>
+    <enumeration value="F82"/>
+    <enumeration value="F83"/>
+    <enumeration value="F84"/>
+    <enumeration value="F85"/>
+    <enumeration value="F86"/>
+    <enumeration value="F87"/>
+    <enumeration value="F88"/>
+    <enumeration value="F89"/>
+    <enumeration value="F90"/>
+    <enumeration value="F91"/>
+    <enumeration value="F92"/>
+    <enumeration value="F93"/>
+    <enumeration value="F94"/>
+    <enumeration value="F95"/>
+    <enumeration value="F96"/>
+    <enumeration value="F97"/>
+    <enumeration value="F98"/>
+    <enumeration value="F99"/>
+    <enumeration value="FAH"/>
+    <enumeration value="FAR"/>
+    <enumeration value="FBM"/>
+    <enumeration value="FC"/>
+    <enumeration value="FF"/>
+    <enumeration value="FH"/>
+    <enumeration value="FIT"/>
+    <enumeration value="FL"/>
+    <enumeration value="FNU"/>
+    <enumeration value="FOT"/>
+    <enumeration value="FP"/>
+    <enumeration value="FR"/>
+    <enumeration value="FS"/>
+    <enumeration value="FTK"/>
+    <enumeration value="FTQ"/>
+    <enumeration value="G01"/>
+    <enumeration value="G04"/>
+    <enumeration value="G05"/>
+    <enumeration value="G06"/>
+    <enumeration value="G08"/>
+    <enumeration value="G09"/>
+    <enumeration value="G10"/>
+    <enumeration value="G11"/>
+    <enumeration value="G12"/>
+    <enumeration value="G13"/>
+    <enumeration value="G14"/>
+    <enumeration value="G15"/>
+    <enumeration value="G16"/>
+    <enumeration value="G17"/>
+    <enumeration value="G18"/>
+    <enumeration value="G19"/>
+    <enumeration value="G2"/>
+    <enumeration value="G20"/>
+    <enumeration value="G21"/>
+    <enumeration value="G23"/>
+    <enumeration value="G24"/>
+    <enumeration value="G25"/>
+    <enumeration value="G26"/>
+    <enumeration value="G27"/>
+    <enumeration value="G28"/>
+    <enumeration value="G29"/>
+    <enumeration value="G3"/>
+    <enumeration value="G30"/>
+    <enumeration value="G31"/>
+    <enumeration value="G32"/>
+    <enumeration value="G33"/>
+    <enumeration value="G34"/>
+    <enumeration value="G35"/>
+    <enumeration value="G36"/>
+    <enumeration value="G37"/>
+    <enumeration value="G38"/>
+    <enumeration value="G39"/>
+    <enumeration value="G40"/>
+    <enumeration value="G41"/>
+    <enumeration value="G42"/>
+    <enumeration value="G43"/>
+    <enumeration value="G44"/>
+    <enumeration value="G45"/>
+    <enumeration value="G46"/>
+    <enumeration value="G47"/>
+    <enumeration value="G48"/>
+    <enumeration value="G49"/>
+    <enumeration value="G50"/>
+    <enumeration value="G51"/>
+    <enumeration value="G52"/>
+    <enumeration value="G53"/>
+    <enumeration value="G54"/>
+    <enumeration value="G55"/>
+    <enumeration value="G56"/>
+    <enumeration value="G57"/>
+    <enumeration value="G58"/>
+    <enumeration value="G59"/>
+    <enumeration value="G60"/>
+    <enumeration value="G61"/>
+    <enumeration value="G62"/>
+    <enumeration value="G63"/>
+    <enumeration value="G64"/>
+    <enumeration value="G65"/>
+    <enumeration value="G66"/>
+    <enumeration value="G67"/>
+    <enumeration value="G68"/>
+    <enumeration value="G69"/>
+    <enumeration value="G70"/>
+    <enumeration value="G71"/>
+    <enumeration value="G72"/>
+    <enumeration value="G73"/>
+    <enumeration value="G74"/>
+    <enumeration value="G75"/>
+    <enumeration value="G76"/>
+    <enumeration value="G77"/>
+    <enumeration value="G78"/>
+    <enumeration value="G79"/>
+    <enumeration value="G80"/>
+    <enumeration value="G81"/>
+    <enumeration value="G82"/>
+    <enumeration value="G83"/>
+    <enumeration value="G84"/>
+    <enumeration value="G85"/>
+    <enumeration value="G86"/>
+    <enumeration value="G87"/>
+    <enumeration value="G88"/>
+    <enumeration value="G89"/>
+    <enumeration value="G90"/>
+    <enumeration value="G91"/>
+    <enumeration value="G92"/>
+    <enumeration value="G93"/>
+    <enumeration value="G94"/>
+    <enumeration value="G95"/>
+    <enumeration value="G96"/>
+    <enumeration value="G97"/>
+    <enumeration value="G98"/>
+    <enumeration value="G99"/>
+    <enumeration value="GB"/>
+    <enumeration value="GBQ"/>
+    <enumeration value="GDW"/>
+    <enumeration value="GE"/>
+    <enumeration value="GF"/>
+    <enumeration value="GFI"/>
+    <enumeration value="GGR"/>
+    <enumeration value="GIA"/>
+    <enumeration value="GIC"/>
+    <enumeration value="GII"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GJ"/>
+    <enumeration value="GL"/>
+    <enumeration value="GLD"/>
+    <enumeration value="GLI"/>
+    <enumeration value="GLL"/>
+    <enumeration value="GM"/>
+    <enumeration value="GO"/>
+    <enumeration value="GP"/>
+    <enumeration value="GQ"/>
+    <enumeration value="GRM"/>
+    <enumeration value="GRN"/>
+    <enumeration value="GRO"/>
+    <enumeration value="GV"/>
+    <enumeration value="GWH"/>
+    <enumeration value="H03"/>
+    <enumeration value="H04"/>
+    <enumeration value="H05"/>
+    <enumeration value="H06"/>
+    <enumeration value="H07"/>
+    <enumeration value="H08"/>
+    <enumeration value="H09"/>
+    <enumeration value="H10"/>
+    <enumeration value="H11"/>
+    <enumeration value="H12"/>
+    <enumeration value="H13"/>
+    <enumeration value="H14"/>
+    <enumeration value="H15"/>
+    <enumeration value="H16"/>
+    <enumeration value="H18"/>
+    <enumeration value="H19"/>
+    <enumeration value="H20"/>
+    <enumeration value="H21"/>
+    <enumeration value="H22"/>
+    <enumeration value="H23"/>
+    <enumeration value="H24"/>
+    <enumeration value="H25"/>
+    <enumeration value="H26"/>
+    <enumeration value="H27"/>
+    <enumeration value="H28"/>
+    <enumeration value="H29"/>
+    <enumeration value="H30"/>
+    <enumeration value="H31"/>
+    <enumeration value="H32"/>
+    <enumeration value="H33"/>
+    <enumeration value="H34"/>
+    <enumeration value="H35"/>
+    <enumeration value="H36"/>
+    <enumeration value="H37"/>
+    <enumeration value="H38"/>
+    <enumeration value="H39"/>
+    <enumeration value="H40"/>
+    <enumeration value="H41"/>
+    <enumeration value="H42"/>
+    <enumeration value="H43"/>
+    <enumeration value="H44"/>
+    <enumeration value="H45"/>
+    <enumeration value="H46"/>
+    <enumeration value="H47"/>
+    <enumeration value="H48"/>
+    <enumeration value="H49"/>
+    <enumeration value="H50"/>
+    <enumeration value="H51"/>
+    <enumeration value="H52"/>
+    <enumeration value="H53"/>
+    <enumeration value="H54"/>
+    <enumeration value="H55"/>
+    <enumeration value="H56"/>
+    <enumeration value="H57"/>
+    <enumeration value="H58"/>
+    <enumeration value="H59"/>
+    <enumeration value="H60"/>
+    <enumeration value="H61"/>
+    <enumeration value="H62"/>
+    <enumeration value="H63"/>
+    <enumeration value="H64"/>
+    <enumeration value="H65"/>
+    <enumeration value="H66"/>
+    <enumeration value="H67"/>
+    <enumeration value="H68"/>
+    <enumeration value="H69"/>
+    <enumeration value="H70"/>
+    <enumeration value="H71"/>
+    <enumeration value="H72"/>
+    <enumeration value="H73"/>
+    <enumeration value="H74"/>
+    <enumeration value="H75"/>
+    <enumeration value="H76"/>
+    <enumeration value="H77"/>
+    <enumeration value="H79"/>
+    <enumeration value="H80"/>
+    <enumeration value="H81"/>
+    <enumeration value="H82"/>
+    <enumeration value="H83"/>
+    <enumeration value="H84"/>
+    <enumeration value="H85"/>
+    <enumeration value="H87"/>
+    <enumeration value="H88"/>
+    <enumeration value="H89"/>
+    <enumeration value="H90"/>
+    <enumeration value="H91"/>
+    <enumeration value="H92"/>
+    <enumeration value="H93"/>
+    <enumeration value="H94"/>
+    <enumeration value="H95"/>
+    <enumeration value="H96"/>
+    <enumeration value="H98"/>
+    <enumeration value="H99"/>
+    <enumeration value="HA"/>
+    <enumeration value="HAD"/>
+    <enumeration value="HBA"/>
+    <enumeration value="HBX"/>
+    <enumeration value="HC"/>
+    <enumeration value="HDW"/>
+    <enumeration value="HEA"/>
+    <enumeration value="HGM"/>
+    <enumeration value="HH"/>
+    <enumeration value="HIU"/>
+    <enumeration value="HKM"/>
+    <enumeration value="HLT"/>
+    <enumeration value="HM"/>
+    <enumeration value="HMO"/>
+    <enumeration value="HMQ"/>
+    <enumeration value="HMT"/>
+    <enumeration value="HPA"/>
+    <enumeration value="HTZ"/>
+    <enumeration value="HUR"/>
+    <enumeration value="HWE"/>
+    <enumeration value="IA"/>
+    <enumeration value="IE"/>
+    <enumeration value="INH"/>
+    <enumeration value="INK"/>
+    <enumeration value="INQ"/>
+    <enumeration value="ISD"/>
+    <enumeration value="IU"/>
+    <enumeration value="IUG"/>
+    <enumeration value="IV"/>
+    <enumeration value="J10"/>
+    <enumeration value="J12"/>
+    <enumeration value="J13"/>
+    <enumeration value="J14"/>
+    <enumeration value="J15"/>
+    <enumeration value="J16"/>
+    <enumeration value="J17"/>
+    <enumeration value="J18"/>
+    <enumeration value="J19"/>
+    <enumeration value="J2"/>
+    <enumeration value="J20"/>
+    <enumeration value="J21"/>
+    <enumeration value="J22"/>
+    <enumeration value="J23"/>
+    <enumeration value="J24"/>
+    <enumeration value="J25"/>
+    <enumeration value="J26"/>
+    <enumeration value="J27"/>
+    <enumeration value="J28"/>
+    <enumeration value="J29"/>
+    <enumeration value="J30"/>
+    <enumeration value="J31"/>
+    <enumeration value="J32"/>
+    <enumeration value="J33"/>
+    <enumeration value="J34"/>
+    <enumeration value="J35"/>
+    <enumeration value="J36"/>
+    <enumeration value="J38"/>
+    <enumeration value="J39"/>
+    <enumeration value="J40"/>
+    <enumeration value="J41"/>
+    <enumeration value="J42"/>
+    <enumeration value="J43"/>
+    <enumeration value="J44"/>
+    <enumeration value="J45"/>
+    <enumeration value="J46"/>
+    <enumeration value="J47"/>
+    <enumeration value="J48"/>
+    <enumeration value="J49"/>
+    <enumeration value="J50"/>
+    <enumeration value="J51"/>
+    <enumeration value="J52"/>
+    <enumeration value="J53"/>
+    <enumeration value="J54"/>
+    <enumeration value="J55"/>
+    <enumeration value="J56"/>
+    <enumeration value="J57"/>
+    <enumeration value="J58"/>
+    <enumeration value="J59"/>
+    <enumeration value="J60"/>
+    <enumeration value="J61"/>
+    <enumeration value="J62"/>
+    <enumeration value="J63"/>
+    <enumeration value="J64"/>
+    <enumeration value="J65"/>
+    <enumeration value="J66"/>
+    <enumeration value="J67"/>
+    <enumeration value="J68"/>
+    <enumeration value="J69"/>
+    <enumeration value="J70"/>
+    <enumeration value="J71"/>
+    <enumeration value="J72"/>
+    <enumeration value="J73"/>
+    <enumeration value="J74"/>
+    <enumeration value="J75"/>
+    <enumeration value="J76"/>
+    <enumeration value="J78"/>
+    <enumeration value="J79"/>
+    <enumeration value="J81"/>
+    <enumeration value="J82"/>
+    <enumeration value="J83"/>
+    <enumeration value="J84"/>
+    <enumeration value="J85"/>
+    <enumeration value="J87"/>
+    <enumeration value="J90"/>
+    <enumeration value="J91"/>
+    <enumeration value="J92"/>
+    <enumeration value="J93"/>
+    <enumeration value="J95"/>
+    <enumeration value="J96"/>
+    <enumeration value="J97"/>
+    <enumeration value="J98"/>
+    <enumeration value="J99"/>
+    <enumeration value="JE"/>
+    <enumeration value="JK"/>
+    <enumeration value="JM"/>
+    <enumeration value="JNT"/>
+    <enumeration value="JOU"/>
+    <enumeration value="JPS"/>
+    <enumeration value="JWL"/>
+    <enumeration value="K1"/>
+    <enumeration value="K10"/>
+    <enumeration value="K11"/>
+    <enumeration value="K12"/>
+    <enumeration value="K13"/>
+    <enumeration value="K14"/>
+    <enumeration value="K15"/>
+    <enumeration value="K16"/>
+    <enumeration value="K17"/>
+    <enumeration value="K18"/>
+    <enumeration value="K19"/>
+    <enumeration value="K2"/>
+    <enumeration value="K20"/>
+    <enumeration value="K21"/>
+    <enumeration value="K22"/>
+    <enumeration value="K23"/>
+    <enumeration value="K26"/>
+    <enumeration value="K27"/>
+    <enumeration value="K28"/>
+    <enumeration value="K3"/>
+    <enumeration value="K30"/>
+    <enumeration value="K31"/>
+    <enumeration value="K32"/>
+    <enumeration value="K33"/>
+    <enumeration value="K34"/>
+    <enumeration value="K35"/>
+    <enumeration value="K36"/>
+    <enumeration value="K37"/>
+    <enumeration value="K38"/>
+    <enumeration value="K39"/>
+    <enumeration value="K40"/>
+    <enumeration value="K41"/>
+    <enumeration value="K42"/>
+    <enumeration value="K43"/>
+    <enumeration value="K45"/>
+    <enumeration value="K46"/>
+    <enumeration value="K47"/>
+    <enumeration value="K48"/>
+    <enumeration value="K49"/>
+    <enumeration value="K50"/>
+    <enumeration value="K51"/>
+    <enumeration value="K52"/>
+    <enumeration value="K53"/>
+    <enumeration value="K54"/>
+    <enumeration value="K55"/>
+    <enumeration value="K58"/>
+    <enumeration value="K59"/>
+    <enumeration value="K6"/>
+    <enumeration value="K60"/>
+    <enumeration value="K61"/>
+    <enumeration value="K62"/>
+    <enumeration value="K63"/>
+    <enumeration value="K64"/>
+    <enumeration value="K65"/>
+    <enumeration value="K66"/>
+    <enumeration value="K67"/>
+    <enumeration value="K68"/>
+    <enumeration value="K69"/>
+    <enumeration value="K70"/>
+    <enumeration value="K71"/>
+    <enumeration value="K73"/>
+    <enumeration value="K74"/>
+    <enumeration value="K75"/>
+    <enumeration value="K76"/>
+    <enumeration value="K77"/>
+    <enumeration value="K78"/>
+    <enumeration value="K79"/>
+    <enumeration value="K80"/>
+    <enumeration value="K81"/>
+    <enumeration value="K82"/>
+    <enumeration value="K83"/>
+    <enumeration value="K84"/>
+    <enumeration value="K85"/>
+    <enumeration value="K86"/>
+    <enumeration value="K87"/>
+    <enumeration value="K88"/>
+    <enumeration value="K89"/>
+    <enumeration value="K90"/>
+    <enumeration value="K91"/>
+    <enumeration value="K92"/>
+    <enumeration value="K93"/>
+    <enumeration value="K94"/>
+    <enumeration value="K95"/>
+    <enumeration value="K96"/>
+    <enumeration value="K97"/>
+    <enumeration value="K98"/>
+    <enumeration value="K99"/>
+    <enumeration value="KA"/>
+    <enumeration value="KAT"/>
+    <enumeration value="KB"/>
+    <enumeration value="KBA"/>
+    <enumeration value="KCC"/>
+    <enumeration value="KDW"/>
+    <enumeration value="KEL"/>
+    <enumeration value="KGM"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHY"/>
+    <enumeration value="KHZ"/>
+    <enumeration value="KI"/>
+    <enumeration value="KIC"/>
+    <enumeration value="KIP"/>
+    <enumeration value="KJ"/>
+    <enumeration value="KJO"/>
+    <enumeration value="KL"/>
+    <enumeration value="KLK"/>
+    <enumeration value="KLX"/>
+    <enumeration value="KMA"/>
+    <enumeration value="KMH"/>
+    <enumeration value="KMK"/>
+    <enumeration value="KMQ"/>
+    <enumeration value="KMT"/>
+    <enumeration value="KNI"/>
+    <enumeration value="KNM"/>
+    <enumeration value="KNS"/>
+    <enumeration value="KNT"/>
+    <enumeration value="KO"/>
+    <enumeration value="KPA"/>
+    <enumeration value="KPH"/>
+    <enumeration value="KPO"/>
+    <enumeration value="KPP"/>
+    <enumeration value="KR"/>
+    <enumeration value="KSD"/>
+    <enumeration value="KSH"/>
+    <enumeration value="KT"/>
+    <enumeration value="KTN"/>
+    <enumeration value="KUR"/>
+    <enumeration value="KVA"/>
+    <enumeration value="KVR"/>
+    <enumeration value="KVT"/>
+    <enumeration value="KW"/>
+    <enumeration value="KWH"/>
+    <enumeration value="KWN"/>
+    <enumeration value="KWO"/>
+    <enumeration value="KWS"/>
+    <enumeration value="KWT"/>
+    <enumeration value="KWY"/>
+    <enumeration value="KX"/>
+    <enumeration value="L10"/>
+    <enumeration value="L11"/>
+    <enumeration value="L12"/>
+    <enumeration value="L13"/>
+    <enumeration value="L14"/>
+    <enumeration value="L15"/>
+    <enumeration value="L16"/>
+    <enumeration value="L17"/>
+    <enumeration value="L18"/>
+    <enumeration value="L19"/>
+    <enumeration value="L2"/>
+    <enumeration value="L20"/>
+    <enumeration value="L21"/>
+    <enumeration value="L23"/>
+    <enumeration value="L24"/>
+    <enumeration value="L25"/>
+    <enumeration value="L26"/>
+    <enumeration value="L27"/>
+    <enumeration value="L28"/>
+    <enumeration value="L29"/>
+    <enumeration value="L30"/>
+    <enumeration value="L31"/>
+    <enumeration value="L32"/>
+    <enumeration value="L33"/>
+    <enumeration value="L34"/>
+    <enumeration value="L35"/>
+    <enumeration value="L36"/>
+    <enumeration value="L37"/>
+    <enumeration value="L38"/>
+    <enumeration value="L39"/>
+    <enumeration value="L40"/>
+    <enumeration value="L41"/>
+    <enumeration value="L42"/>
+    <enumeration value="L43"/>
+    <enumeration value="L44"/>
+    <enumeration value="L45"/>
+    <enumeration value="L46"/>
+    <enumeration value="L47"/>
+    <enumeration value="L48"/>
+    <enumeration value="L49"/>
+    <enumeration value="L50"/>
+    <enumeration value="L51"/>
+    <enumeration value="L52"/>
+    <enumeration value="L53"/>
+    <enumeration value="L54"/>
+    <enumeration value="L55"/>
+    <enumeration value="L56"/>
+    <enumeration value="L57"/>
+    <enumeration value="L58"/>
+    <enumeration value="L59"/>
+    <enumeration value="L60"/>
+    <enumeration value="L63"/>
+    <enumeration value="L64"/>
+    <enumeration value="L65"/>
+    <enumeration value="L66"/>
+    <enumeration value="L67"/>
+    <enumeration value="L68"/>
+    <enumeration value="L69"/>
+    <enumeration value="L70"/>
+    <enumeration value="L71"/>
+    <enumeration value="L72"/>
+    <enumeration value="L73"/>
+    <enumeration value="L74"/>
+    <enumeration value="L75"/>
+    <enumeration value="L76"/>
+    <enumeration value="L77"/>
+    <enumeration value="L78"/>
+    <enumeration value="L79"/>
+    <enumeration value="L80"/>
+    <enumeration value="L81"/>
+    <enumeration value="L82"/>
+    <enumeration value="L83"/>
+    <enumeration value="L84"/>
+    <enumeration value="L85"/>
+    <enumeration value="L86"/>
+    <enumeration value="L87"/>
+    <enumeration value="L88"/>
+    <enumeration value="L89"/>
+    <enumeration value="L90"/>
+    <enumeration value="L91"/>
+    <enumeration value="L92"/>
+    <enumeration value="L93"/>
+    <enumeration value="L94"/>
+    <enumeration value="L95"/>
+    <enumeration value="L96"/>
+    <enumeration value="L98"/>
+    <enumeration value="L99"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAC"/>
+    <enumeration value="LBR"/>
+    <enumeration value="LBT"/>
+    <enumeration value="LD"/>
+    <enumeration value="LEF"/>
+    <enumeration value="LF"/>
+    <enumeration value="LH"/>
+    <enumeration value="LK"/>
+    <enumeration value="LM"/>
+    <enumeration value="LN"/>
+    <enumeration value="LO"/>
+    <enumeration value="LP"/>
+    <enumeration value="LPA"/>
+    <enumeration value="LR"/>
+    <enumeration value="LS"/>
+    <enumeration value="LTN"/>
+    <enumeration value="LTR"/>
+    <enumeration value="LUB"/>
+    <enumeration value="LUM"/>
+    <enumeration value="LUX"/>
+    <enumeration value="LY"/>
+    <enumeration value="M1"/>
+    <enumeration value="M10"/>
+    <enumeration value="M11"/>
+    <enumeration value="M12"/>
+    <enumeration value="M13"/>
+    <enumeration value="M14"/>
+    <enumeration value="M15"/>
+    <enumeration value="M16"/>
+    <enumeration value="M17"/>
+    <enumeration value="M18"/>
+    <enumeration value="M19"/>
+    <enumeration value="M20"/>
+    <enumeration value="M21"/>
+    <enumeration value="M22"/>
+    <enumeration value="M23"/>
+    <enumeration value="M24"/>
+    <enumeration value="M25"/>
+    <enumeration value="M26"/>
+    <enumeration value="M27"/>
+    <enumeration value="M29"/>
+    <enumeration value="M30"/>
+    <enumeration value="M31"/>
+    <enumeration value="M32"/>
+    <enumeration value="M33"/>
+    <enumeration value="M34"/>
+    <enumeration value="M35"/>
+    <enumeration value="M36"/>
+    <enumeration value="M37"/>
+    <enumeration value="M38"/>
+    <enumeration value="M39"/>
+    <enumeration value="M4"/>
+    <enumeration value="M40"/>
+    <enumeration value="M41"/>
+    <enumeration value="M42"/>
+    <enumeration value="M43"/>
+    <enumeration value="M44"/>
+    <enumeration value="M45"/>
+    <enumeration value="M46"/>
+    <enumeration value="M47"/>
+    <enumeration value="M48"/>
+    <enumeration value="M49"/>
+    <enumeration value="M5"/>
+    <enumeration value="M50"/>
+    <enumeration value="M51"/>
+    <enumeration value="M52"/>
+    <enumeration value="M53"/>
+    <enumeration value="M55"/>
+    <enumeration value="M56"/>
+    <enumeration value="M57"/>
+    <enumeration value="M58"/>
+    <enumeration value="M59"/>
+    <enumeration value="M60"/>
+    <enumeration value="M61"/>
+    <enumeration value="M62"/>
+    <enumeration value="M63"/>
+    <enumeration value="M64"/>
+    <enumeration value="M65"/>
+    <enumeration value="M66"/>
+    <enumeration value="M67"/>
+    <enumeration value="M68"/>
+    <enumeration value="M69"/>
+    <enumeration value="M7"/>
+    <enumeration value="M70"/>
+    <enumeration value="M71"/>
+    <enumeration value="M72"/>
+    <enumeration value="M73"/>
+    <enumeration value="M74"/>
+    <enumeration value="M75"/>
+    <enumeration value="M76"/>
+    <enumeration value="M77"/>
+    <enumeration value="M78"/>
+    <enumeration value="M79"/>
+    <enumeration value="M80"/>
+    <enumeration value="M81"/>
+    <enumeration value="M82"/>
+    <enumeration value="M83"/>
+    <enumeration value="M84"/>
+    <enumeration value="M85"/>
+    <enumeration value="M86"/>
+    <enumeration value="M87"/>
+    <enumeration value="M88"/>
+    <enumeration value="M89"/>
+    <enumeration value="M9"/>
+    <enumeration value="M90"/>
+    <enumeration value="M91"/>
+    <enumeration value="M92"/>
+    <enumeration value="M93"/>
+    <enumeration value="M94"/>
+    <enumeration value="M95"/>
+    <enumeration value="M96"/>
+    <enumeration value="M97"/>
+    <enumeration value="M98"/>
+    <enumeration value="M99"/>
+    <enumeration value="MAH"/>
+    <enumeration value="MAL"/>
+    <enumeration value="MAM"/>
+    <enumeration value="MAR"/>
+    <enumeration value="MAW"/>
+    <enumeration value="MBE"/>
+    <enumeration value="MBF"/>
+    <enumeration value="MBR"/>
+    <enumeration value="MC"/>
+    <enumeration value="MCU"/>
+    <enumeration value="MD"/>
+    <enumeration value="MGM"/>
+    <enumeration value="MHZ"/>
+    <enumeration value="MIK"/>
+    <enumeration value="MIL"/>
+    <enumeration value="MIN"/>
+    <enumeration value="MIO"/>
+    <enumeration value="MIU"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MKM"/>
+    <enumeration value="MKW"/>
+    <enumeration value="MLD"/>
+    <enumeration value="MLT"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MMQ"/>
+    <enumeration value="MMT"/>
+    <enumeration value="MND"/>
+    <enumeration value="MNJ"/>
+    <enumeration value="MON"/>
+    <enumeration value="MPA"/>
+    <enumeration value="MQD"/>
+    <enumeration value="MQH"/>
+    <enumeration value="MQM"/>
+    <enumeration value="MQS"/>
+    <enumeration value="MQW"/>
+    <enumeration value="MRD"/>
+    <enumeration value="MRM"/>
+    <enumeration value="MRW"/>
+    <enumeration value="MSK"/>
+    <enumeration value="MTK"/>
+    <enumeration value="MTQ"/>
+    <enumeration value="MTR"/>
+    <enumeration value="MTS"/>
+    <enumeration value="MTZ"/>
+    <enumeration value="MVA"/>
+    <enumeration value="MWH"/>
+    <enumeration value="N1"/>
+    <enumeration value="N10"/>
+    <enumeration value="N11"/>
+    <enumeration value="N12"/>
+    <enumeration value="N13"/>
+    <enumeration value="N14"/>
+    <enumeration value="N15"/>
+    <enumeration value="N16"/>
+    <enumeration value="N17"/>
+    <enumeration value="N18"/>
+    <enumeration value="N19"/>
+    <enumeration value="N20"/>
+    <enumeration value="N21"/>
+    <enumeration value="N22"/>
+    <enumeration value="N23"/>
+    <enumeration value="N24"/>
+    <enumeration value="N25"/>
+    <enumeration value="N26"/>
+    <enumeration value="N27"/>
+    <enumeration value="N28"/>
+    <enumeration value="N29"/>
+    <enumeration value="N3"/>
+    <enumeration value="N30"/>
+    <enumeration value="N31"/>
+    <enumeration value="N32"/>
+    <enumeration value="N33"/>
+    <enumeration value="N34"/>
+    <enumeration value="N35"/>
+    <enumeration value="N36"/>
+    <enumeration value="N37"/>
+    <enumeration value="N38"/>
+    <enumeration value="N39"/>
+    <enumeration value="N40"/>
+    <enumeration value="N41"/>
+    <enumeration value="N42"/>
+    <enumeration value="N43"/>
+    <enumeration value="N44"/>
+    <enumeration value="N45"/>
+    <enumeration value="N46"/>
+    <enumeration value="N47"/>
+    <enumeration value="N48"/>
+    <enumeration value="N49"/>
+    <enumeration value="N50"/>
+    <enumeration value="N51"/>
+    <enumeration value="N52"/>
+    <enumeration value="N53"/>
+    <enumeration value="N54"/>
+    <enumeration value="N55"/>
+    <enumeration value="N56"/>
+    <enumeration value="N57"/>
+    <enumeration value="N58"/>
+    <enumeration value="N59"/>
+    <enumeration value="N60"/>
+    <enumeration value="N61"/>
+    <enumeration value="N62"/>
+    <enumeration value="N63"/>
+    <enumeration value="N64"/>
+    <enumeration value="N65"/>
+    <enumeration value="N66"/>
+    <enumeration value="N67"/>
+    <enumeration value="N68"/>
+    <enumeration value="N69"/>
+    <enumeration value="N70"/>
+    <enumeration value="N71"/>
+    <enumeration value="N72"/>
+    <enumeration value="N73"/>
+    <enumeration value="N74"/>
+    <enumeration value="N75"/>
+    <enumeration value="N76"/>
+    <enumeration value="N77"/>
+    <enumeration value="N78"/>
+    <enumeration value="N79"/>
+    <enumeration value="N80"/>
+    <enumeration value="N81"/>
+    <enumeration value="N82"/>
+    <enumeration value="N83"/>
+    <enumeration value="N84"/>
+    <enumeration value="N85"/>
+    <enumeration value="N86"/>
+    <enumeration value="N87"/>
+    <enumeration value="N88"/>
+    <enumeration value="N89"/>
+    <enumeration value="N90"/>
+    <enumeration value="N91"/>
+    <enumeration value="N92"/>
+    <enumeration value="N93"/>
+    <enumeration value="N94"/>
+    <enumeration value="N95"/>
+    <enumeration value="N96"/>
+    <enumeration value="N97"/>
+    <enumeration value="N98"/>
+    <enumeration value="N99"/>
+    <enumeration value="NA"/>
+    <enumeration value="NAR"/>
+    <enumeration value="NCL"/>
+    <enumeration value="NEW"/>
+    <enumeration value="NF"/>
+    <enumeration value="NIL"/>
+    <enumeration value="NIU"/>
+    <enumeration value="NL"/>
+    <enumeration value="NM3"/>
+    <enumeration value="NMI"/>
+    <enumeration value="NMP"/>
+    <enumeration value="NPT"/>
+    <enumeration value="NT"/>
+    <enumeration value="NTU"/>
+    <enumeration value="NU"/>
+    <enumeration value="NX"/>
+    <enumeration value="OA"/>
+    <enumeration value="ODE"/>
+    <enumeration value="ODG"/>
+    <enumeration value="ODK"/>
+    <enumeration value="ODM"/>
+    <enumeration value="OHM"/>
+    <enumeration value="ON"/>
+    <enumeration value="ONZ"/>
+    <enumeration value="OPM"/>
+    <enumeration value="OT"/>
+    <enumeration value="OZA"/>
+    <enumeration value="OZI"/>
+    <enumeration value="P1"/>
+    <enumeration value="P10"/>
+    <enumeration value="P11"/>
+    <enumeration value="P12"/>
+    <enumeration value="P13"/>
+    <enumeration value="P14"/>
+    <enumeration value="P15"/>
+    <enumeration value="P16"/>
+    <enumeration value="P17"/>
+    <enumeration value="P18"/>
+    <enumeration value="P19"/>
+    <enumeration value="P2"/>
+    <enumeration value="P20"/>
+    <enumeration value="P21"/>
+    <enumeration value="P22"/>
+    <enumeration value="P23"/>
+    <enumeration value="P24"/>
+    <enumeration value="P25"/>
+    <enumeration value="P26"/>
+    <enumeration value="P27"/>
+    <enumeration value="P28"/>
+    <enumeration value="P29"/>
+    <enumeration value="P30"/>
+    <enumeration value="P31"/>
+    <enumeration value="P32"/>
+    <enumeration value="P33"/>
+    <enumeration value="P34"/>
+    <enumeration value="P35"/>
+    <enumeration value="P36"/>
+    <enumeration value="P37"/>
+    <enumeration value="P38"/>
+    <enumeration value="P39"/>
+    <enumeration value="P40"/>
+    <enumeration value="P41"/>
+    <enumeration value="P42"/>
+    <enumeration value="P43"/>
+    <enumeration value="P44"/>
+    <enumeration value="P45"/>
+    <enumeration value="P46"/>
+    <enumeration value="P47"/>
+    <enumeration value="P48"/>
+    <enumeration value="P49"/>
+    <enumeration value="P5"/>
+    <enumeration value="P50"/>
+    <enumeration value="P51"/>
+    <enumeration value="P52"/>
+    <enumeration value="P53"/>
+    <enumeration value="P54"/>
+    <enumeration value="P55"/>
+    <enumeration value="P56"/>
+    <enumeration value="P57"/>
+    <enumeration value="P58"/>
+    <enumeration value="P59"/>
+    <enumeration value="P60"/>
+    <enumeration value="P61"/>
+    <enumeration value="P62"/>
+    <enumeration value="P63"/>
+    <enumeration value="P64"/>
+    <enumeration value="P65"/>
+    <enumeration value="P66"/>
+    <enumeration value="P67"/>
+    <enumeration value="P68"/>
+    <enumeration value="P69"/>
+    <enumeration value="P70"/>
+    <enumeration value="P71"/>
+    <enumeration value="P72"/>
+    <enumeration value="P73"/>
+    <enumeration value="P74"/>
+    <enumeration value="P75"/>
+    <enumeration value="P76"/>
+    <enumeration value="P77"/>
+    <enumeration value="P78"/>
+    <enumeration value="P79"/>
+    <enumeration value="P80"/>
+    <enumeration value="P81"/>
+    <enumeration value="P82"/>
+    <enumeration value="P83"/>
+    <enumeration value="P84"/>
+    <enumeration value="P85"/>
+    <enumeration value="P86"/>
+    <enumeration value="P87"/>
+    <enumeration value="P88"/>
+    <enumeration value="P89"/>
+    <enumeration value="P90"/>
+    <enumeration value="P91"/>
+    <enumeration value="P92"/>
+    <enumeration value="P93"/>
+    <enumeration value="P94"/>
+    <enumeration value="P95"/>
+    <enumeration value="P96"/>
+    <enumeration value="P97"/>
+    <enumeration value="P98"/>
+    <enumeration value="P99"/>
+    <enumeration value="PAL"/>
+    <enumeration value="PD"/>
+    <enumeration value="PFL"/>
+    <enumeration value="PGL"/>
+    <enumeration value="PI"/>
+    <enumeration value="PLA"/>
+    <enumeration value="PO"/>
+    <enumeration value="PQ"/>
+    <enumeration value="PR"/>
+    <enumeration value="PS"/>
+    <enumeration value="PTD"/>
+    <enumeration value="PTI"/>
+    <enumeration value="PTL"/>
+    <enumeration value="PTN"/>
+    <enumeration value="Q10"/>
+    <enumeration value="Q11"/>
+    <enumeration value="Q12"/>
+    <enumeration value="Q13"/>
+    <enumeration value="Q14"/>
+    <enumeration value="Q15"/>
+    <enumeration value="Q16"/>
+    <enumeration value="Q17"/>
+    <enumeration value="Q18"/>
+    <enumeration value="Q19"/>
+    <enumeration value="Q20"/>
+    <enumeration value="Q21"/>
+    <enumeration value="Q22"/>
+    <enumeration value="Q23"/>
+    <enumeration value="Q24"/>
+    <enumeration value="Q25"/>
+    <enumeration value="Q26"/>
+    <enumeration value="Q27"/>
+    <enumeration value="Q28"/>
+    <enumeration value="Q29"/>
+    <enumeration value="Q3"/>
+    <enumeration value="Q30"/>
+    <enumeration value="Q31"/>
+    <enumeration value="Q32"/>
+    <enumeration value="Q33"/>
+    <enumeration value="Q34"/>
+    <enumeration value="Q35"/>
+    <enumeration value="Q36"/>
+    <enumeration value="Q37"/>
+    <enumeration value="Q38"/>
+    <enumeration value="Q39"/>
+    <enumeration value="Q40"/>
+    <enumeration value="Q41"/>
+    <enumeration value="Q42"/>
+    <enumeration value="QA"/>
+    <enumeration value="QAN"/>
+    <enumeration value="QB"/>
+    <enumeration value="QR"/>
+    <enumeration value="QTD"/>
+    <enumeration value="QTI"/>
+    <enumeration value="QTL"/>
+    <enumeration value="QTR"/>
+    <enumeration value="R1"/>
+    <enumeration value="R9"/>
+    <enumeration value="RH"/>
+    <enumeration value="RM"/>
+    <enumeration value="ROM"/>
+    <enumeration value="RP"/>
+    <enumeration value="RPM"/>
+    <enumeration value="RPS"/>
+    <enumeration value="RT"/>
+    <enumeration value="S3"/>
+    <enumeration value="S4"/>
+    <enumeration value="SAN"/>
+    <enumeration value="SCO"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SEC"/>
+    <enumeration value="SET"/>
+    <enumeration value="SG"/>
+    <enumeration value="SIE"/>
+    <enumeration value="SM3"/>
+    <enumeration value="SMI"/>
+    <enumeration value="SQ"/>
+    <enumeration value="SQR"/>
+    <enumeration value="SR"/>
+    <enumeration value="STC"/>
+    <enumeration value="STI"/>
+    <enumeration value="STK"/>
+    <enumeration value="STL"/>
+    <enumeration value="STN"/>
+    <enumeration value="STW"/>
+    <enumeration value="SW"/>
+    <enumeration value="SX"/>
+    <enumeration value="SYR"/>
+    <enumeration value="T0"/>
+    <enumeration value="T3"/>
+    <enumeration value="TAH"/>
+    <enumeration value="TAN"/>
+    <enumeration value="TI"/>
+    <enumeration value="TIC"/>
+    <enumeration value="TIP"/>
+    <enumeration value="TKM"/>
+    <enumeration value="TMS"/>
+    <enumeration value="TNE"/>
+    <enumeration value="TP"/>
+    <enumeration value="TPI"/>
+    <enumeration value="TPR"/>
+    <enumeration value="TQD"/>
+    <enumeration value="TRL"/>
+    <enumeration value="TST"/>
+    <enumeration value="TTS"/>
+    <enumeration value="U1"/>
+    <enumeration value="U2"/>
+    <enumeration value="UB"/>
+    <enumeration value="UC"/>
+    <enumeration value="VA"/>
+    <enumeration value="VLT"/>
+    <enumeration value="VP"/>
+    <enumeration value="W2"/>
+    <enumeration value="WA"/>
+    <enumeration value="WB"/>
+    <enumeration value="WCD"/>
+    <enumeration value="WE"/>
+    <enumeration value="WEB"/>
+    <enumeration value="WEE"/>
+    <enumeration value="WG"/>
+    <enumeration value="WHR"/>
+    <enumeration value="WM"/>
+    <enumeration value="WSD"/>
+    <enumeration value="WTT"/>
+    <enumeration value="X1"/>
+    <enumeration value="X1A"/>
+    <enumeration value="X1B"/>
+    <enumeration value="X1D"/>
+    <enumeration value="X1F"/>
+    <enumeration value="X1G"/>
+    <enumeration value="X1W"/>
+    <enumeration value="X2C"/>
+    <enumeration value="X3A"/>
+    <enumeration value="X3H"/>
+    <enumeration value="X43"/>
+    <enumeration value="X44"/>
+    <enumeration value="X4A"/>
+    <enumeration value="X4B"/>
+    <enumeration value="X4C"/>
+    <enumeration value="X4D"/>
+    <enumeration value="X4F"/>
+    <enumeration value="X4G"/>
+    <enumeration value="X4H"/>
+    <enumeration value="X5H"/>
+    <enumeration value="X5L"/>
+    <enumeration value="X5M"/>
+    <enumeration value="X6H"/>
+    <enumeration value="X6P"/>
+    <enumeration value="X7A"/>
+    <enumeration value="X7B"/>
+    <enumeration value="X8A"/>
+    <enumeration value="X8B"/>
+    <enumeration value="X8C"/>
+    <enumeration value="XAA"/>
+    <enumeration value="XAB"/>
+    <enumeration value="XAC"/>
+    <enumeration value="XAD"/>
+    <enumeration value="XAE"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAH"/>
+    <enumeration value="XAI"/>
+    <enumeration value="XAJ"/>
+    <enumeration value="XAL"/>
+    <enumeration value="XAM"/>
+    <enumeration value="XAP"/>
+    <enumeration value="XAT"/>
+    <enumeration value="XAV"/>
+    <enumeration value="XB4"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XBE"/>
+    <enumeration value="XBF"/>
+    <enumeration value="XBG"/>
+    <enumeration value="XBH"/>
+    <enumeration value="XBI"/>
+    <enumeration value="XBJ"/>
+    <enumeration value="XBK"/>
+    <enumeration value="XBL"/>
+    <enumeration value="XBM"/>
+    <enumeration value="XBN"/>
+    <enumeration value="XBO"/>
+    <enumeration value="XBP"/>
+    <enumeration value="XBQ"/>
+    <enumeration value="XBR"/>
+    <enumeration value="XBS"/>
+    <enumeration value="XBT"/>
+    <enumeration value="XBU"/>
+    <enumeration value="XBV"/>
+    <enumeration value="XBW"/>
+    <enumeration value="XBX"/>
+    <enumeration value="XBY"/>
+    <enumeration value="XBZ"/>
+    <enumeration value="XCA"/>
+    <enumeration value="XCB"/>
+    <enumeration value="XCC"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XCE"/>
+    <enumeration value="XCF"/>
+    <enumeration value="XCG"/>
+    <enumeration value="XCH"/>
+    <enumeration value="XCI"/>
+    <enumeration value="XCJ"/>
+    <enumeration value="XCK"/>
+    <enumeration value="XCL"/>
+    <enumeration value="XCM"/>
+    <enumeration value="XCN"/>
+    <enumeration value="XCO"/>
+    <enumeration value="XCP"/>
+    <enumeration value="XCQ"/>
+    <enumeration value="XCR"/>
+    <enumeration value="XCS"/>
+    <enumeration value="XCT"/>
+    <enumeration value="XCU"/>
+    <enumeration value="XCV"/>
+    <enumeration value="XCW"/>
+    <enumeration value="XCX"/>
+    <enumeration value="XCY"/>
+    <enumeration value="XCZ"/>
+    <enumeration value="XDA"/>
+    <enumeration value="XDB"/>
+    <enumeration value="XDC"/>
+    <enumeration value="XDG"/>
+    <enumeration value="XDH"/>
+    <enumeration value="XDI"/>
+    <enumeration value="XDJ"/>
+    <enumeration value="XDK"/>
+    <enumeration value="XDL"/>
+    <enumeration value="XDM"/>
+    <enumeration value="XDN"/>
+    <enumeration value="XDP"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XDS"/>
+    <enumeration value="XDT"/>
+    <enumeration value="XDU"/>
+    <enumeration value="XDV"/>
+    <enumeration value="XDW"/>
+    <enumeration value="XDX"/>
+    <enumeration value="XDY"/>
+    <enumeration value="XEC"/>
+    <enumeration value="XED"/>
+    <enumeration value="XEE"/>
+    <enumeration value="XEF"/>
+    <enumeration value="XEG"/>
+    <enumeration value="XEH"/>
+    <enumeration value="XEI"/>
+    <enumeration value="XEN"/>
+    <enumeration value="XFB"/>
+    <enumeration value="XFC"/>
+    <enumeration value="XFD"/>
+    <enumeration value="XFE"/>
+    <enumeration value="XFI"/>
+    <enumeration value="XFL"/>
+    <enumeration value="XFO"/>
+    <enumeration value="XFP"/>
+    <enumeration value="XFR"/>
+    <enumeration value="XFT"/>
+    <enumeration value="XFW"/>
+    <enumeration value="XFX"/>
+    <enumeration value="XGB"/>
+    <enumeration value="XGI"/>
+    <enumeration value="XGL"/>
+    <enumeration value="XGR"/>
+    <enumeration value="XGU"/>
+    <enumeration value="XGY"/>
+    <enumeration value="XGZ"/>
+    <enumeration value="XHA"/>
+    <enumeration value="XHB"/>
+    <enumeration value="XHC"/>
+    <enumeration value="XHG"/>
+    <enumeration value="XHN"/>
+    <enumeration value="XHR"/>
+    <enumeration value="XIA"/>
+    <enumeration value="XIB"/>
+    <enumeration value="XIC"/>
+    <enumeration value="XID"/>
+    <enumeration value="XIE"/>
+    <enumeration value="XIF"/>
+    <enumeration value="XIG"/>
+    <enumeration value="XIH"/>
+    <enumeration value="XIK"/>
+    <enumeration value="XIL"/>
+    <enumeration value="XIN"/>
+    <enumeration value="XIZ"/>
+    <enumeration value="XJB"/>
+    <enumeration value="XJC"/>
+    <enumeration value="XJG"/>
+    <enumeration value="XJR"/>
+    <enumeration value="XJT"/>
+    <enumeration value="XJY"/>
+    <enumeration value="XKG"/>
+    <enumeration value="XKI"/>
+    <enumeration value="XLE"/>
+    <enumeration value="XLG"/>
+    <enumeration value="XLT"/>
+    <enumeration value="XLU"/>
+    <enumeration value="XLV"/>
+    <enumeration value="XLZ"/>
+    <enumeration value="XMA"/>
+    <enumeration value="XMB"/>
+    <enumeration value="XMC"/>
+    <enumeration value="XME"/>
+    <enumeration value="XMR"/>
+    <enumeration value="XMS"/>
+    <enumeration value="XMT"/>
+    <enumeration value="XMW"/>
+    <enumeration value="XMX"/>
+    <enumeration value="XNA"/>
+    <enumeration value="XNE"/>
+    <enumeration value="XNF"/>
+    <enumeration value="XNG"/>
+    <enumeration value="XNS"/>
+    <enumeration value="XNT"/>
+    <enumeration value="XNU"/>
+    <enumeration value="XNV"/>
+    <enumeration value="XO1"/>
+    <enumeration value="XO2"/>
+    <enumeration value="XO3"/>
+    <enumeration value="XO4"/>
+    <enumeration value="XO5"/>
+    <enumeration value="XO6"/>
+    <enumeration value="XO7"/>
+    <enumeration value="XO8"/>
+    <enumeration value="XO9"/>
+    <enumeration value="XOA"/>
+    <enumeration value="XOB"/>
+    <enumeration value="XOC"/>
+    <enumeration value="XOD"/>
+    <enumeration value="XOE"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XOG"/>
+    <enumeration value="XOH"/>
+    <enumeration value="XOI"/>
+    <enumeration value="XOJ"/>
+    <enumeration value="XOK"/>
+    <enumeration value="XOL"/>
+    <enumeration value="XOM"/>
+    <enumeration value="XON"/>
+    <enumeration value="XOP"/>
+    <enumeration value="XOQ"/>
+    <enumeration value="XOR"/>
+    <enumeration value="XOS"/>
+    <enumeration value="XOT"/>
+    <enumeration value="XOU"/>
+    <enumeration value="XOV"/>
+    <enumeration value="XOW"/>
+    <enumeration value="XOX"/>
+    <enumeration value="XOY"/>
+    <enumeration value="XOZ"/>
+    <enumeration value="XP1"/>
+    <enumeration value="XP2"/>
+    <enumeration value="XP3"/>
+    <enumeration value="XP4"/>
+    <enumeration value="XPA"/>
+    <enumeration value="XPB"/>
+    <enumeration value="XPC"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPE"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPG"/>
+    <enumeration value="XPH"/>
+    <enumeration value="XPI"/>
+    <enumeration value="XPJ"/>
+    <enumeration value="XPK"/>
+    <enumeration value="XPL"/>
+    <enumeration value="XPN"/>
+    <enumeration value="XPO"/>
+    <enumeration value="XPP"/>
+    <enumeration value="XPR"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XPU"/>
+    <enumeration value="XPV"/>
+    <enumeration value="XPX"/>
+    <enumeration value="XPY"/>
+    <enumeration value="XPZ"/>
+    <enumeration value="XQA"/>
+    <enumeration value="XQB"/>
+    <enumeration value="XQC"/>
+    <enumeration value="XQD"/>
+    <enumeration value="XQF"/>
+    <enumeration value="XQG"/>
+    <enumeration value="XQH"/>
+    <enumeration value="XQJ"/>
+    <enumeration value="XQK"/>
+    <enumeration value="XQL"/>
+    <enumeration value="XQM"/>
+    <enumeration value="XQN"/>
+    <enumeration value="XQP"/>
+    <enumeration value="XQQ"/>
+    <enumeration value="XQR"/>
+    <enumeration value="XQS"/>
+    <enumeration value="XRD"/>
+    <enumeration value="XRG"/>
+    <enumeration value="XRJ"/>
+    <enumeration value="XRK"/>
+    <enumeration value="XRL"/>
+    <enumeration value="XRO"/>
+    <enumeration value="XRT"/>
+    <enumeration value="XRZ"/>
+    <enumeration value="XSA"/>
+    <enumeration value="XSB"/>
+    <enumeration value="XSC"/>
+    <enumeration value="XSD"/>
+    <enumeration value="XSE"/>
+    <enumeration value="XSH"/>
+    <enumeration value="XSI"/>
+    <enumeration value="XSK"/>
+    <enumeration value="XSL"/>
+    <enumeration value="XSM"/>
+    <enumeration value="XSO"/>
+    <enumeration value="XSP"/>
+    <enumeration value="XSS"/>
+    <enumeration value="XST"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XSV"/>
+    <enumeration value="XSW"/>
+    <enumeration value="XSX"/>
+    <enumeration value="XSY"/>
+    <enumeration value="XSZ"/>
+    <enumeration value="XT1"/>
+    <enumeration value="XTB"/>
+    <enumeration value="XTC"/>
+    <enumeration value="XTD"/>
+    <enumeration value="XTE"/>
+    <enumeration value="XTG"/>
+    <enumeration value="XTI"/>
+    <enumeration value="XTK"/>
+    <enumeration value="XTL"/>
+    <enumeration value="XTN"/>
+    <enumeration value="XTO"/>
+    <enumeration value="XTR"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XTT"/>
+    <enumeration value="XTU"/>
+    <enumeration value="XTV"/>
+    <enumeration value="XTW"/>
+    <enumeration value="XTY"/>
+    <enumeration value="XTZ"/>
+    <enumeration value="XUC"/>
+    <enumeration value="XUN"/>
+    <enumeration value="XVA"/>
+    <enumeration value="XVG"/>
+    <enumeration value="XVI"/>
+    <enumeration value="XVK"/>
+    <enumeration value="XVL"/>
+    <enumeration value="XVN"/>
+    <enumeration value="XVO"/>
+    <enumeration value="XVP"/>
+    <enumeration value="XVQ"/>
+    <enumeration value="XVR"/>
+    <enumeration value="XVS"/>
+    <enumeration value="XVY"/>
+    <enumeration value="XWA"/>
+    <enumeration value="XWB"/>
+    <enumeration value="XWC"/>
+    <enumeration value="XWD"/>
+    <enumeration value="XWF"/>
+    <enumeration value="XWG"/>
+    <enumeration value="XWH"/>
+    <enumeration value="XWJ"/>
+    <enumeration value="XWK"/>
+    <enumeration value="XWL"/>
+    <enumeration value="XWM"/>
+    <enumeration value="XWN"/>
+    <enumeration value="XWP"/>
+    <enumeration value="XWQ"/>
+    <enumeration value="XWR"/>
+    <enumeration value="XWS"/>
+    <enumeration value="XWT"/>
+    <enumeration value="XWU"/>
+    <enumeration value="XWV"/>
+    <enumeration value="XWW"/>
+    <enumeration value="XWX"/>
+    <enumeration value="XWY"/>
+    <enumeration value="XWZ"/>
+    <enumeration value="XXA"/>
+    <enumeration value="XXB"/>
+    <enumeration value="XXC"/>
+    <enumeration value="XXD"/>
+    <enumeration value="XXF"/>
+    <enumeration value="XXG"/>
+    <enumeration value="XXH"/>
+    <enumeration value="XXJ"/>
+    <enumeration value="XXK"/>
+    <enumeration value="XYA"/>
+    <enumeration value="XYB"/>
+    <enumeration value="XYC"/>
+    <enumeration value="XYD"/>
+    <enumeration value="XYF"/>
+    <enumeration value="XYG"/>
+    <enumeration value="XYH"/>
+    <enumeration value="XYJ"/>
+    <enumeration value="XYK"/>
+    <enumeration value="XYL"/>
+    <enumeration value="XYM"/>
+    <enumeration value="XYN"/>
+    <enumeration value="XYP"/>
+    <enumeration value="XYQ"/>
+    <enumeration value="XYR"/>
+    <enumeration value="XYS"/>
+    <enumeration value="XYT"/>
+    <enumeration value="XYV"/>
+    <enumeration value="XYW"/>
+    <enumeration value="XYX"/>
+    <enumeration value="XYY"/>
+    <enumeration value="XYZ"/>
+    <enumeration value="XZA"/>
+    <enumeration value="XZB"/>
+    <enumeration value="XZC"/>
+    <enumeration value="XZD"/>
+    <enumeration value="XZF"/>
+    <enumeration value="XZG"/>
+    <enumeration value="XZH"/>
+    <enumeration value="XZJ"/>
+    <enumeration value="XZK"/>
+    <enumeration value="XZL"/>
+    <enumeration value="XZM"/>
+    <enumeration value="XZN"/>
+    <enumeration value="XZP"/>
+    <enumeration value="XZQ"/>
+    <enumeration value="XZR"/>
+    <enumeration value="XZS"/>
+    <enumeration value="XZT"/>
+    <enumeration value="XZU"/>
+    <enumeration value="XZV"/>
+    <enumeration value="XZW"/>
+    <enumeration value="XZX"/>
+    <enumeration value="XZY"/>
+    <enumeration value="XZZ"/>
+    <enumeration value="YDK"/>
+    <enumeration value="YDQ"/>
+    <enumeration value="YRD"/>
+    <enumeration value="Z11"/>
+    <enumeration value="Z9"/>
+    <enumeration value="ZP"/>
+    <enumeration value="ZZ"/>
+  </cl>
+  <cl id="9">
+    <enumeration value="VAT"/>
+  </cl>
+  <cl id="10">
+    <enumeration value="AE"/>
+    <enumeration value="E"/>
+    <enumeration value="G"/>
+    <enumeration value="K"/>
+    <enumeration value="L"/>
+    <enumeration value="M"/>
+    <enumeration value="O"/>
+    <enumeration value="S"/>
+    <enumeration value="Z"/>
+  </cl>
+  <cl id="11">
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="60"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="70"/>
+    <enumeration value="71"/>
+    <enumeration value="88"/>
+    <enumeration value="95"/>
+    <enumeration value="100"/>
+    <enumeration value="102"/>
+    <enumeration value="103"/>
+    <enumeration value="104"/>
+    <enumeration value="105"/>
+  </cl>
+  <cl id="12">
+    <enumeration value="AA"/>
+    <enumeration value="AAA"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAH"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AJ"/>
+    <enumeration value="AU"/>
+    <enumeration value="CA"/>
+    <enumeration value="CAB"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CAE"/>
+    <enumeration value="CAF"/>
+    <enumeration value="CAI"/>
+    <enumeration value="CAJ"/>
+    <enumeration value="CAK"/>
+    <enumeration value="CAL"/>
+    <enumeration value="CAM"/>
+    <enumeration value="CAN"/>
+    <enumeration value="CAO"/>
+    <enumeration value="CAP"/>
+    <enumeration value="CAQ"/>
+    <enumeration value="CAR"/>
+    <enumeration value="CAS"/>
+    <enumeration value="CAT"/>
+    <enumeration value="CAU"/>
+    <enumeration value="CAV"/>
+    <enumeration value="CAW"/>
+    <enumeration value="CAX"/>
+    <enumeration value="CAY"/>
+    <enumeration value="CAZ"/>
+    <enumeration value="CD"/>
+    <enumeration value="CG"/>
+    <enumeration value="CS"/>
+    <enumeration value="CT"/>
+    <enumeration value="DAB"/>
+    <enumeration value="DAC"/>
+    <enumeration value="DAD"/>
+    <enumeration value="DAF"/>
+    <enumeration value="DAG"/>
+    <enumeration value="DAH"/>
+    <enumeration value="DAI"/>
+    <enumeration value="DAJ"/>
+    <enumeration value="DAK"/>
+    <enumeration value="DAL"/>
+    <enumeration value="DAM"/>
+    <enumeration value="DAN"/>
+    <enumeration value="DAO"/>
+    <enumeration value="DAP"/>
+    <enumeration value="DAQ"/>
+    <enumeration value="DL"/>
+    <enumeration value="EG"/>
+    <enumeration value="EP"/>
+    <enumeration value="ER"/>
+    <enumeration value="FAA"/>
+    <enumeration value="FAB"/>
+    <enumeration value="FAC"/>
+    <enumeration value="FC"/>
+    <enumeration value="FH"/>
+    <enumeration value="FI"/>
+    <enumeration value="GAA"/>
+    <enumeration value="HAA"/>
+    <enumeration value="HD"/>
+    <enumeration value="HH"/>
+    <enumeration value="IAA"/>
+    <enumeration value="IAB"/>
+    <enumeration value="ID"/>
+    <enumeration value="IF"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="KO"/>
+    <enumeration value="L1"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAA"/>
+    <enumeration value="LAB"/>
+    <enumeration value="LF"/>
+    <enumeration value="MAE"/>
+    <enumeration value="MI"/>
+    <enumeration value="ML"/>
+    <enumeration value="NAA"/>
+    <enumeration value="OA"/>
+    <enumeration value="PA"/>
+    <enumeration value="PAA"/>
+    <enumeration value="PC"/>
+    <enumeration value="PL"/>
+    <enumeration value="PRV"/>
+    <enumeration value="RAB"/>
+    <enumeration value="RAC"/>
+    <enumeration value="RAD"/>
+    <enumeration value="RAF"/>
+    <enumeration value="RE"/>
+    <enumeration value="RF"/>
+    <enumeration value="RH"/>
+    <enumeration value="RV"/>
+    <enumeration value="SA"/>
+    <enumeration value="SAA"/>
+    <enumeration value="SAD"/>
+    <enumeration value="SAE"/>
+    <enumeration value="SAI"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SM"/>
+    <enumeration value="SU"/>
+    <enumeration value="TAB"/>
+    <enumeration value="TAC"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="V1"/>
+    <enumeration value="V2"/>
+    <enumeration value="WH"/>
+    <enumeration value="XAA"/>
+    <enumeration value="YY"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="13">
+    <enumeration value="50"/>
+    <enumeration value="130"/>
+    <enumeration value="916"/>
+  </cl>
+  <cl id="14">
+    <enumeration value="AAA"/>
+    <enumeration value="AAB"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAG"/>
+    <enumeration value="AAH"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAJ"/>
+    <enumeration value="AAK"/>
+    <enumeration value="AAL"/>
+    <enumeration value="AAM"/>
+    <enumeration value="AAN"/>
+    <enumeration value="AAO"/>
+    <enumeration value="AAP"/>
+    <enumeration value="AAQ"/>
+    <enumeration value="AAR"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAU"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAW"/>
+    <enumeration value="AAX"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABE"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABG"/>
+    <enumeration value="ABH"/>
+    <enumeration value="ABI"/>
+    <enumeration value="ABJ"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABM"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABO"/>
+    <enumeration value="ABP"/>
+    <enumeration value="ABQ"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ABV"/>
+    <enumeration value="ABW"/>
+    <enumeration value="ABX"/>
+    <enumeration value="ABY"/>
+    <enumeration value="ABZ"/>
+    <enumeration value="AC"/>
+    <enumeration value="ACA"/>
+    <enumeration value="ACB"/>
+    <enumeration value="ACC"/>
+    <enumeration value="ACD"/>
+    <enumeration value="ACE"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACN"/>
+    <enumeration value="ACO"/>
+    <enumeration value="ACP"/>
+    <enumeration value="ACQ"/>
+    <enumeration value="ACR"/>
+    <enumeration value="ACT"/>
+    <enumeration value="ACU"/>
+    <enumeration value="ACV"/>
+    <enumeration value="ACW"/>
+    <enumeration value="ACX"/>
+    <enumeration value="ACY"/>
+    <enumeration value="ACZ"/>
+    <enumeration value="ADA"/>
+    <enumeration value="ADB"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADD"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADF"/>
+    <enumeration value="ADG"/>
+    <enumeration value="ADI"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADU"/>
+    <enumeration value="ADV"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADX"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AE"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEE"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEG"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AEQ"/>
+    <enumeration value="AER"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AF"/>
+    <enumeration value="AFA"/>
+    <enumeration value="AFB"/>
+    <enumeration value="AFC"/>
+    <enumeration value="AFD"/>
+    <enumeration value="AFE"/>
+    <enumeration value="AFF"/>
+    <enumeration value="AFG"/>
+    <enumeration value="AFH"/>
+    <enumeration value="AFI"/>
+    <enumeration value="AFJ"/>
+    <enumeration value="AFK"/>
+    <enumeration value="AFL"/>
+    <enumeration value="AFM"/>
+    <enumeration value="AFN"/>
+    <enumeration value="AFO"/>
+    <enumeration value="AFP"/>
+    <enumeration value="AFQ"/>
+    <enumeration value="AFR"/>
+    <enumeration value="AFS"/>
+    <enumeration value="AFT"/>
+    <enumeration value="AFU"/>
+    <enumeration value="AFV"/>
+    <enumeration value="AFW"/>
+    <enumeration value="AFX"/>
+    <enumeration value="AFY"/>
+    <enumeration value="AFZ"/>
+    <enumeration value="AGA"/>
+    <enumeration value="AGB"/>
+    <enumeration value="AGC"/>
+    <enumeration value="AGD"/>
+    <enumeration value="AGE"/>
+    <enumeration value="AGF"/>
+    <enumeration value="AGG"/>
+    <enumeration value="AGH"/>
+    <enumeration value="AGI"/>
+    <enumeration value="AGJ"/>
+    <enumeration value="AGK"/>
+    <enumeration value="AGL"/>
+    <enumeration value="AGM"/>
+    <enumeration value="AGN"/>
+    <enumeration value="AGO"/>
+    <enumeration value="AGP"/>
+    <enumeration value="AGQ"/>
+    <enumeration value="AGR"/>
+    <enumeration value="AGS"/>
+    <enumeration value="AGT"/>
+    <enumeration value="AGU"/>
+    <enumeration value="AGV"/>
+    <enumeration value="AGW"/>
+    <enumeration value="AGX"/>
+    <enumeration value="AGY"/>
+    <enumeration value="AGZ"/>
+    <enumeration value="AHA"/>
+    <enumeration value="AHB"/>
+    <enumeration value="AHC"/>
+    <enumeration value="AHD"/>
+    <enumeration value="AHE"/>
+    <enumeration value="AHF"/>
+    <enumeration value="AHG"/>
+    <enumeration value="AHH"/>
+    <enumeration value="AHI"/>
+    <enumeration value="AHJ"/>
+    <enumeration value="AHK"/>
+    <enumeration value="AHL"/>
+    <enumeration value="AHM"/>
+    <enumeration value="AHN"/>
+    <enumeration value="AHO"/>
+    <enumeration value="AHP"/>
+    <enumeration value="AHQ"/>
+    <enumeration value="AHR"/>
+    <enumeration value="AHS"/>
+    <enumeration value="AHT"/>
+    <enumeration value="AHU"/>
+    <enumeration value="AHV"/>
+    <enumeration value="AHX"/>
+    <enumeration value="AHY"/>
+    <enumeration value="AHZ"/>
+    <enumeration value="AIA"/>
+    <enumeration value="AIB"/>
+    <enumeration value="AIC"/>
+    <enumeration value="AID"/>
+    <enumeration value="AIE"/>
+    <enumeration value="AIF"/>
+    <enumeration value="AIG"/>
+    <enumeration value="AIH"/>
+    <enumeration value="AII"/>
+    <enumeration value="AIJ"/>
+    <enumeration value="AIK"/>
+    <enumeration value="AIL"/>
+    <enumeration value="AIM"/>
+    <enumeration value="AIN"/>
+    <enumeration value="AIO"/>
+    <enumeration value="AIP"/>
+    <enumeration value="AIQ"/>
+    <enumeration value="AIR"/>
+    <enumeration value="AIS"/>
+    <enumeration value="AIT"/>
+    <enumeration value="AIU"/>
+    <enumeration value="AIV"/>
+    <enumeration value="AIW"/>
+    <enumeration value="AIX"/>
+    <enumeration value="AIY"/>
+    <enumeration value="AIZ"/>
+    <enumeration value="AJA"/>
+    <enumeration value="AJB"/>
+    <enumeration value="AJC"/>
+    <enumeration value="AJD"/>
+    <enumeration value="AJE"/>
+    <enumeration value="AJF"/>
+    <enumeration value="AJG"/>
+    <enumeration value="AJH"/>
+    <enumeration value="AJI"/>
+    <enumeration value="AJJ"/>
+    <enumeration value="AJK"/>
+    <enumeration value="AJL"/>
+    <enumeration value="AJM"/>
+    <enumeration value="AJN"/>
+    <enumeration value="AJO"/>
+    <enumeration value="AJP"/>
+    <enumeration value="AJQ"/>
+    <enumeration value="AJR"/>
+    <enumeration value="AJS"/>
+    <enumeration value="AJT"/>
+    <enumeration value="AJU"/>
+    <enumeration value="AJV"/>
+    <enumeration value="AJW"/>
+    <enumeration value="AJX"/>
+    <enumeration value="AJY"/>
+    <enumeration value="AJZ"/>
+    <enumeration value="AKA"/>
+    <enumeration value="AKB"/>
+    <enumeration value="AKC"/>
+    <enumeration value="AKD"/>
+    <enumeration value="AKE"/>
+    <enumeration value="AKF"/>
+    <enumeration value="AKG"/>
+    <enumeration value="AKH"/>
+    <enumeration value="AKI"/>
+    <enumeration value="AKJ"/>
+    <enumeration value="AKK"/>
+    <enumeration value="AKL"/>
+    <enumeration value="AKM"/>
+    <enumeration value="AKN"/>
+    <enumeration value="AKO"/>
+    <enumeration value="AKP"/>
+    <enumeration value="AKQ"/>
+    <enumeration value="AKR"/>
+    <enumeration value="AKS"/>
+    <enumeration value="AKT"/>
+    <enumeration value="AKU"/>
+    <enumeration value="AKV"/>
+    <enumeration value="AKW"/>
+    <enumeration value="AKX"/>
+    <enumeration value="AKY"/>
+    <enumeration value="AKZ"/>
+    <enumeration value="ALA"/>
+    <enumeration value="ALB"/>
+    <enumeration value="ALC"/>
+    <enumeration value="ALD"/>
+    <enumeration value="ALE"/>
+    <enumeration value="ALF"/>
+    <enumeration value="ALG"/>
+    <enumeration value="ALH"/>
+    <enumeration value="ALI"/>
+    <enumeration value="ALJ"/>
+    <enumeration value="ALK"/>
+    <enumeration value="ALL"/>
+    <enumeration value="ALM"/>
+    <enumeration value="ALN"/>
+    <enumeration value="ALO"/>
+    <enumeration value="ALP"/>
+    <enumeration value="ALQ"/>
+    <enumeration value="ALR"/>
+    <enumeration value="ALS"/>
+    <enumeration value="ALT"/>
+    <enumeration value="ALU"/>
+    <enumeration value="ALV"/>
+    <enumeration value="ALW"/>
+    <enumeration value="ALX"/>
+    <enumeration value="ALY"/>
+    <enumeration value="ALZ"/>
+    <enumeration value="AMA"/>
+    <enumeration value="AMB"/>
+    <enumeration value="AMC"/>
+    <enumeration value="AMD"/>
+    <enumeration value="AME"/>
+    <enumeration value="AMF"/>
+    <enumeration value="AMG"/>
+    <enumeration value="AMH"/>
+    <enumeration value="AMI"/>
+    <enumeration value="AMJ"/>
+    <enumeration value="AMK"/>
+    <enumeration value="AML"/>
+    <enumeration value="AMM"/>
+    <enumeration value="AMN"/>
+    <enumeration value="AMO"/>
+    <enumeration value="AMP"/>
+    <enumeration value="AMQ"/>
+    <enumeration value="AMR"/>
+    <enumeration value="AMS"/>
+    <enumeration value="AMT"/>
+    <enumeration value="AMU"/>
+    <enumeration value="AMV"/>
+    <enumeration value="AMW"/>
+    <enumeration value="AMX"/>
+    <enumeration value="AMY"/>
+    <enumeration value="AMZ"/>
+    <enumeration value="ANA"/>
+    <enumeration value="ANB"/>
+    <enumeration value="ANC"/>
+    <enumeration value="AND"/>
+    <enumeration value="ANE"/>
+    <enumeration value="ANF"/>
+    <enumeration value="ANG"/>
+    <enumeration value="ANH"/>
+    <enumeration value="ANI"/>
+    <enumeration value="ANJ"/>
+    <enumeration value="ANK"/>
+    <enumeration value="ANL"/>
+    <enumeration value="ANM"/>
+    <enumeration value="ANN"/>
+    <enumeration value="ANO"/>
+    <enumeration value="ANP"/>
+    <enumeration value="ANQ"/>
+    <enumeration value="ANR"/>
+    <enumeration value="ANS"/>
+    <enumeration value="ANT"/>
+    <enumeration value="ANU"/>
+    <enumeration value="ANV"/>
+    <enumeration value="ANW"/>
+    <enumeration value="ANX"/>
+    <enumeration value="ANY"/>
+    <enumeration value="AOA"/>
+    <enumeration value="AOD"/>
+    <enumeration value="AOE"/>
+    <enumeration value="AOF"/>
+    <enumeration value="AOG"/>
+    <enumeration value="AOH"/>
+    <enumeration value="AOI"/>
+    <enumeration value="AOJ"/>
+    <enumeration value="AOK"/>
+    <enumeration value="AOL"/>
+    <enumeration value="AOM"/>
+    <enumeration value="AON"/>
+    <enumeration value="AOO"/>
+    <enumeration value="AOP"/>
+    <enumeration value="AOQ"/>
+    <enumeration value="AOR"/>
+    <enumeration value="AOS"/>
+    <enumeration value="AOT"/>
+    <enumeration value="AOU"/>
+    <enumeration value="AOV"/>
+    <enumeration value="AOW"/>
+    <enumeration value="AOX"/>
+    <enumeration value="AOY"/>
+    <enumeration value="AOZ"/>
+    <enumeration value="AP"/>
+    <enumeration value="APA"/>
+    <enumeration value="APB"/>
+    <enumeration value="APC"/>
+    <enumeration value="APD"/>
+    <enumeration value="APE"/>
+    <enumeration value="APF"/>
+    <enumeration value="APG"/>
+    <enumeration value="APH"/>
+    <enumeration value="API"/>
+    <enumeration value="APJ"/>
+    <enumeration value="APK"/>
+    <enumeration value="APL"/>
+    <enumeration value="APM"/>
+    <enumeration value="APN"/>
+    <enumeration value="APO"/>
+    <enumeration value="APP"/>
+    <enumeration value="APQ"/>
+    <enumeration value="APR"/>
+    <enumeration value="APS"/>
+    <enumeration value="APT"/>
+    <enumeration value="APU"/>
+    <enumeration value="APV"/>
+    <enumeration value="APW"/>
+    <enumeration value="APX"/>
+    <enumeration value="APY"/>
+    <enumeration value="APZ"/>
+    <enumeration value="AQA"/>
+    <enumeration value="AQB"/>
+    <enumeration value="AQC"/>
+    <enumeration value="AQD"/>
+    <enumeration value="AQE"/>
+    <enumeration value="AQF"/>
+    <enumeration value="AQG"/>
+    <enumeration value="AQH"/>
+    <enumeration value="AQI"/>
+    <enumeration value="AQJ"/>
+    <enumeration value="AQK"/>
+    <enumeration value="AQL"/>
+    <enumeration value="AQM"/>
+    <enumeration value="AQN"/>
+    <enumeration value="AQO"/>
+    <enumeration value="AQP"/>
+    <enumeration value="AQQ"/>
+    <enumeration value="AQR"/>
+    <enumeration value="AQS"/>
+    <enumeration value="AQT"/>
+    <enumeration value="AQU"/>
+    <enumeration value="AQV"/>
+    <enumeration value="AQW"/>
+    <enumeration value="AQX"/>
+    <enumeration value="AQY"/>
+    <enumeration value="AQZ"/>
+    <enumeration value="ARA"/>
+    <enumeration value="ARB"/>
+    <enumeration value="ARC"/>
+    <enumeration value="ARD"/>
+    <enumeration value="ARE"/>
+    <enumeration value="ARF"/>
+    <enumeration value="ARG"/>
+    <enumeration value="ARH"/>
+    <enumeration value="ARI"/>
+    <enumeration value="ARJ"/>
+    <enumeration value="ARK"/>
+    <enumeration value="ARL"/>
+    <enumeration value="ARM"/>
+    <enumeration value="ARN"/>
+    <enumeration value="ARO"/>
+    <enumeration value="ARP"/>
+    <enumeration value="ARQ"/>
+    <enumeration value="ARR"/>
+    <enumeration value="ARS"/>
+    <enumeration value="ART"/>
+    <enumeration value="ARU"/>
+    <enumeration value="ARV"/>
+    <enumeration value="ARW"/>
+    <enumeration value="ARX"/>
+    <enumeration value="ARY"/>
+    <enumeration value="ARZ"/>
+    <enumeration value="ASA"/>
+    <enumeration value="ASB"/>
+    <enumeration value="ASC"/>
+    <enumeration value="ASD"/>
+    <enumeration value="ASE"/>
+    <enumeration value="ASF"/>
+    <enumeration value="ASG"/>
+    <enumeration value="ASH"/>
+    <enumeration value="ASI"/>
+    <enumeration value="ASJ"/>
+    <enumeration value="ASK"/>
+    <enumeration value="ASL"/>
+    <enumeration value="ASM"/>
+    <enumeration value="ASN"/>
+    <enumeration value="ASO"/>
+    <enumeration value="ASP"/>
+    <enumeration value="ASQ"/>
+    <enumeration value="ASR"/>
+    <enumeration value="ASS"/>
+    <enumeration value="AST"/>
+    <enumeration value="ASU"/>
+    <enumeration value="ASV"/>
+    <enumeration value="ASW"/>
+    <enumeration value="ASX"/>
+    <enumeration value="ASY"/>
+    <enumeration value="ASZ"/>
+    <enumeration value="ATA"/>
+    <enumeration value="ATB"/>
+    <enumeration value="ATC"/>
+    <enumeration value="ATD"/>
+    <enumeration value="ATE"/>
+    <enumeration value="ATF"/>
+    <enumeration value="ATG"/>
+    <enumeration value="ATH"/>
+    <enumeration value="ATI"/>
+    <enumeration value="ATJ"/>
+    <enumeration value="ATK"/>
+    <enumeration value="ATL"/>
+    <enumeration value="ATM"/>
+    <enumeration value="ATN"/>
+    <enumeration value="ATO"/>
+    <enumeration value="ATP"/>
+    <enumeration value="ATQ"/>
+    <enumeration value="ATR"/>
+    <enumeration value="ATS"/>
+    <enumeration value="ATT"/>
+    <enumeration value="ATU"/>
+    <enumeration value="ATV"/>
+    <enumeration value="ATW"/>
+    <enumeration value="ATX"/>
+    <enumeration value="ATY"/>
+    <enumeration value="ATZ"/>
+    <enumeration value="AU"/>
+    <enumeration value="AUA"/>
+    <enumeration value="AUB"/>
+    <enumeration value="AUC"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AUE"/>
+    <enumeration value="AUF"/>
+    <enumeration value="AUG"/>
+    <enumeration value="AUH"/>
+    <enumeration value="AUI"/>
+    <enumeration value="AUJ"/>
+    <enumeration value="AUK"/>
+    <enumeration value="AUL"/>
+    <enumeration value="AUM"/>
+    <enumeration value="AUN"/>
+    <enumeration value="AUO"/>
+    <enumeration value="AUP"/>
+    <enumeration value="AUQ"/>
+    <enumeration value="AUR"/>
+    <enumeration value="AUS"/>
+    <enumeration value="AUT"/>
+    <enumeration value="AUU"/>
+    <enumeration value="AUV"/>
+    <enumeration value="AUW"/>
+    <enumeration value="AUX"/>
+    <enumeration value="AUY"/>
+    <enumeration value="AUZ"/>
+    <enumeration value="AV"/>
+    <enumeration value="AVA"/>
+    <enumeration value="AVB"/>
+    <enumeration value="AVC"/>
+    <enumeration value="AVD"/>
+    <enumeration value="AVE"/>
+    <enumeration value="AVF"/>
+    <enumeration value="AVG"/>
+    <enumeration value="AVH"/>
+    <enumeration value="AVI"/>
+    <enumeration value="AVJ"/>
+    <enumeration value="AVK"/>
+    <enumeration value="AVL"/>
+    <enumeration value="AVM"/>
+    <enumeration value="AVN"/>
+    <enumeration value="AVO"/>
+    <enumeration value="AVP"/>
+    <enumeration value="AVQ"/>
+    <enumeration value="AVR"/>
+    <enumeration value="AVS"/>
+    <enumeration value="AVT"/>
+    <enumeration value="AVU"/>
+    <enumeration value="AVV"/>
+    <enumeration value="AVW"/>
+    <enumeration value="AVX"/>
+    <enumeration value="AVY"/>
+    <enumeration value="AVZ"/>
+    <enumeration value="AWA"/>
+    <enumeration value="AWB"/>
+    <enumeration value="AWC"/>
+    <enumeration value="AWD"/>
+    <enumeration value="AWE"/>
+    <enumeration value="AWF"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AWH"/>
+    <enumeration value="AWI"/>
+    <enumeration value="AWJ"/>
+    <enumeration value="AWK"/>
+    <enumeration value="AWL"/>
+    <enumeration value="AWM"/>
+    <enumeration value="AWN"/>
+    <enumeration value="AWO"/>
+    <enumeration value="AWP"/>
+    <enumeration value="AWQ"/>
+    <enumeration value="AWR"/>
+    <enumeration value="AWS"/>
+    <enumeration value="AWT"/>
+    <enumeration value="AWU"/>
+    <enumeration value="AWV"/>
+    <enumeration value="AWW"/>
+    <enumeration value="AWX"/>
+    <enumeration value="AWY"/>
+    <enumeration value="AWZ"/>
+    <enumeration value="AXA"/>
+    <enumeration value="AXB"/>
+    <enumeration value="AXC"/>
+    <enumeration value="AXD"/>
+    <enumeration value="AXE"/>
+    <enumeration value="AXF"/>
+    <enumeration value="AXG"/>
+    <enumeration value="AXH"/>
+    <enumeration value="AXI"/>
+    <enumeration value="AXJ"/>
+    <enumeration value="AXK"/>
+    <enumeration value="AXL"/>
+    <enumeration value="AXM"/>
+    <enumeration value="AXN"/>
+    <enumeration value="AXO"/>
+    <enumeration value="AXP"/>
+    <enumeration value="AXQ"/>
+    <enumeration value="AXR"/>
+    <enumeration value="AXS"/>
+    <enumeration value="BA"/>
+    <enumeration value="BC"/>
+    <enumeration value="BD"/>
+    <enumeration value="BE"/>
+    <enumeration value="BH"/>
+    <enumeration value="BM"/>
+    <enumeration value="BN"/>
+    <enumeration value="BO"/>
+    <enumeration value="BR"/>
+    <enumeration value="BT"/>
+    <enumeration value="BTP"/>
+    <enumeration value="BW"/>
+    <enumeration value="CAS"/>
+    <enumeration value="CAT"/>
+    <enumeration value="CAU"/>
+    <enumeration value="CAV"/>
+    <enumeration value="CAW"/>
+    <enumeration value="CAX"/>
+    <enumeration value="CAY"/>
+    <enumeration value="CAZ"/>
+    <enumeration value="CBA"/>
+    <enumeration value="CBB"/>
+    <enumeration value="CD"/>
+    <enumeration value="CEC"/>
+    <enumeration value="CED"/>
+    <enumeration value="CFE"/>
+    <enumeration value="CFF"/>
+    <enumeration value="CFO"/>
+    <enumeration value="CG"/>
+    <enumeration value="CH"/>
+    <enumeration value="CK"/>
+    <enumeration value="CKN"/>
+    <enumeration value="CM"/>
+    <enumeration value="CMR"/>
+    <enumeration value="CN"/>
+    <enumeration value="CNO"/>
+    <enumeration value="COF"/>
+    <enumeration value="CP"/>
+    <enumeration value="CR"/>
+    <enumeration value="CRN"/>
+    <enumeration value="CS"/>
+    <enumeration value="CST"/>
+    <enumeration value="CT"/>
+    <enumeration value="CU"/>
+    <enumeration value="CV"/>
+    <enumeration value="CW"/>
+    <enumeration value="CZ"/>
+    <enumeration value="DA"/>
+    <enumeration value="DAN"/>
+    <enumeration value="DB"/>
+    <enumeration value="DI"/>
+    <enumeration value="DL"/>
+    <enumeration value="DM"/>
+    <enumeration value="DQ"/>
+    <enumeration value="DR"/>
+    <enumeration value="EA"/>
+    <enumeration value="EB"/>
+    <enumeration value="ED"/>
+    <enumeration value="EE"/>
+    <enumeration value="EEP"/>
+    <enumeration value="EI"/>
+    <enumeration value="EN"/>
+    <enumeration value="EQ"/>
+    <enumeration value="ER"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ET"/>
+    <enumeration value="EX"/>
+    <enumeration value="FC"/>
+    <enumeration value="FF"/>
+    <enumeration value="FI"/>
+    <enumeration value="FLW"/>
+    <enumeration value="FN"/>
+    <enumeration value="FO"/>
+    <enumeration value="FS"/>
+    <enumeration value="FT"/>
+    <enumeration value="FV"/>
+    <enumeration value="FX"/>
+    <enumeration value="GA"/>
+    <enumeration value="GC"/>
+    <enumeration value="GD"/>
+    <enumeration value="GDN"/>
+    <enumeration value="GN"/>
+    <enumeration value="HS"/>
+    <enumeration value="HWB"/>
+    <enumeration value="IA"/>
+    <enumeration value="IB"/>
+    <enumeration value="ICA"/>
+    <enumeration value="ICE"/>
+    <enumeration value="ICO"/>
+    <enumeration value="II"/>
+    <enumeration value="IL"/>
+    <enumeration value="INB"/>
+    <enumeration value="INN"/>
+    <enumeration value="INO"/>
+    <enumeration value="IP"/>
+    <enumeration value="IS"/>
+    <enumeration value="IT"/>
+    <enumeration value="IV"/>
+    <enumeration value="JB"/>
+    <enumeration value="JE"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAN"/>
+    <enumeration value="LAR"/>
+    <enumeration value="LB"/>
+    <enumeration value="LC"/>
+    <enumeration value="LI"/>
+    <enumeration value="LO"/>
+    <enumeration value="LRC"/>
+    <enumeration value="LS"/>
+    <enumeration value="MA"/>
+    <enumeration value="MB"/>
+    <enumeration value="MF"/>
+    <enumeration value="MG"/>
+    <enumeration value="MH"/>
+    <enumeration value="MR"/>
+    <enumeration value="MRN"/>
+    <enumeration value="MS"/>
+    <enumeration value="MSS"/>
+    <enumeration value="MWB"/>
+    <enumeration value="NA"/>
+    <enumeration value="NF"/>
+    <enumeration value="OH"/>
+    <enumeration value="OI"/>
+    <enumeration value="ON"/>
+    <enumeration value="OP"/>
+    <enumeration value="OR"/>
+    <enumeration value="PB"/>
+    <enumeration value="PC"/>
+    <enumeration value="PD"/>
+    <enumeration value="PE"/>
+    <enumeration value="PF"/>
+    <enumeration value="PI"/>
+    <enumeration value="PK"/>
+    <enumeration value="PL"/>
+    <enumeration value="POR"/>
+    <enumeration value="PP"/>
+    <enumeration value="PQ"/>
+    <enumeration value="PR"/>
+    <enumeration value="PS"/>
+    <enumeration value="PW"/>
+    <enumeration value="PY"/>
+    <enumeration value="RA"/>
+    <enumeration value="RC"/>
+    <enumeration value="RCN"/>
+    <enumeration value="RE"/>
+    <enumeration value="REN"/>
+    <enumeration value="RF"/>
+    <enumeration value="RR"/>
+    <enumeration value="RT"/>
+    <enumeration value="SA"/>
+    <enumeration value="SB"/>
+    <enumeration value="SD"/>
+    <enumeration value="SE"/>
+    <enumeration value="SEA"/>
+    <enumeration value="SF"/>
+    <enumeration value="SH"/>
+    <enumeration value="SI"/>
+    <enumeration value="SM"/>
+    <enumeration value="SN"/>
+    <enumeration value="SP"/>
+    <enumeration value="SQ"/>
+    <enumeration value="SRN"/>
+    <enumeration value="SS"/>
+    <enumeration value="STA"/>
+    <enumeration value="SW"/>
+    <enumeration value="SZ"/>
+    <enumeration value="TB"/>
+    <enumeration value="TCR"/>
+    <enumeration value="TE"/>
+    <enumeration value="TF"/>
+    <enumeration value="TI"/>
+    <enumeration value="TIN"/>
+    <enumeration value="TL"/>
+    <enumeration value="TN"/>
+    <enumeration value="TP"/>
+    <enumeration value="UAR"/>
+    <enumeration value="UC"/>
+    <enumeration value="UCN"/>
+    <enumeration value="UN"/>
+    <enumeration value="UO"/>
+    <enumeration value="URI"/>
+    <enumeration value="VA"/>
+    <enumeration value="VC"/>
+    <enumeration value="VGR"/>
+    <enumeration value="VM"/>
+    <enumeration value="VN"/>
+    <enumeration value="VON"/>
+    <enumeration value="VOR"/>
+    <enumeration value="VP"/>
+    <enumeration value="VR"/>
+    <enumeration value="VS"/>
+    <enumeration value="VT"/>
+    <enumeration value="VV"/>
+    <enumeration value="WE"/>
+    <enumeration value="WM"/>
+    <enumeration value="WN"/>
+    <enumeration value="WR"/>
+    <enumeration value="WS"/>
+    <enumeration value="WY"/>
+    <enumeration value="XA"/>
+    <enumeration value="XC"/>
+    <enumeration value="XP"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="15">
+    <enumeration value="0002"/>
+    <enumeration value="0003"/>
+    <enumeration value="0004"/>
+    <enumeration value="0005"/>
+    <enumeration value="0006"/>
+    <enumeration value="0007"/>
+    <enumeration value="0008"/>
+    <enumeration value="0009"/>
+    <enumeration value="0010"/>
+    <enumeration value="0011"/>
+    <enumeration value="0012"/>
+    <enumeration value="0013"/>
+    <enumeration value="0014"/>
+    <enumeration value="0015"/>
+    <enumeration value="0016"/>
+    <enumeration value="0017"/>
+    <enumeration value="0018"/>
+    <enumeration value="0019"/>
+    <enumeration value="0020"/>
+    <enumeration value="0021"/>
+    <enumeration value="0022"/>
+    <enumeration value="0023"/>
+    <enumeration value="0024"/>
+    <enumeration value="0025"/>
+    <enumeration value="0026"/>
+    <enumeration value="0027"/>
+    <enumeration value="0028"/>
+    <enumeration value="0029"/>
+    <enumeration value="0030"/>
+    <enumeration value="0031"/>
+    <enumeration value="0032"/>
+    <enumeration value="0033"/>
+    <enumeration value="0034"/>
+    <enumeration value="0035"/>
+    <enumeration value="0036"/>
+    <enumeration value="0037"/>
+    <enumeration value="0038"/>
+    <enumeration value="0039"/>
+    <enumeration value="0040"/>
+    <enumeration value="0041"/>
+    <enumeration value="0042"/>
+    <enumeration value="0043"/>
+    <enumeration value="0044"/>
+    <enumeration value="0045"/>
+    <enumeration value="0046"/>
+    <enumeration value="0047"/>
+    <enumeration value="0048"/>
+    <enumeration value="0049"/>
+    <enumeration value="0050"/>
+    <enumeration value="0051"/>
+    <enumeration value="0052"/>
+    <enumeration value="0053"/>
+    <enumeration value="0054"/>
+    <enumeration value="0055"/>
+    <enumeration value="0056"/>
+    <enumeration value="0057"/>
+    <enumeration value="0058"/>
+    <enumeration value="0059"/>
+    <enumeration value="0060"/>
+    <enumeration value="0061"/>
+    <enumeration value="0062"/>
+    <enumeration value="0063"/>
+    <enumeration value="0064"/>
+    <enumeration value="0065"/>
+    <enumeration value="0066"/>
+    <enumeration value="0067"/>
+    <enumeration value="0068"/>
+    <enumeration value="0069"/>
+    <enumeration value="0070"/>
+    <enumeration value="0071"/>
+    <enumeration value="0072"/>
+    <enumeration value="0073"/>
+    <enumeration value="0074"/>
+    <enumeration value="0075"/>
+    <enumeration value="0076"/>
+    <enumeration value="0077"/>
+    <enumeration value="0078"/>
+    <enumeration value="0079"/>
+    <enumeration value="0080"/>
+    <enumeration value="0081"/>
+    <enumeration value="0082"/>
+    <enumeration value="0083"/>
+    <enumeration value="0084"/>
+    <enumeration value="0085"/>
+    <enumeration value="0086"/>
+    <enumeration value="0087"/>
+    <enumeration value="0088"/>
+    <enumeration value="0089"/>
+    <enumeration value="0090"/>
+    <enumeration value="0091"/>
+    <enumeration value="0093"/>
+    <enumeration value="0094"/>
+    <enumeration value="0095"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0098"/>
+    <enumeration value="0099"/>
+    <enumeration value="0100"/>
+    <enumeration value="0101"/>
+    <enumeration value="0102"/>
+    <enumeration value="0104"/>
+    <enumeration value="0105"/>
+    <enumeration value="0106"/>
+    <enumeration value="0107"/>
+    <enumeration value="0108"/>
+    <enumeration value="0109"/>
+    <enumeration value="0110"/>
+    <enumeration value="0111"/>
+    <enumeration value="0112"/>
+    <enumeration value="0113"/>
+    <enumeration value="0114"/>
+    <enumeration value="0115"/>
+    <enumeration value="0116"/>
+    <enumeration value="0117"/>
+    <enumeration value="0118"/>
+    <enumeration value="0119"/>
+    <enumeration value="0120"/>
+    <enumeration value="0121"/>
+    <enumeration value="0122"/>
+    <enumeration value="0123"/>
+    <enumeration value="0124"/>
+    <enumeration value="0125"/>
+    <enumeration value="0126"/>
+    <enumeration value="0127"/>
+    <enumeration value="0128"/>
+    <enumeration value="0129"/>
+    <enumeration value="0130"/>
+    <enumeration value="0131"/>
+    <enumeration value="0132"/>
+    <enumeration value="0133"/>
+    <enumeration value="0134"/>
+    <enumeration value="0135"/>
+    <enumeration value="0136"/>
+    <enumeration value="0137"/>
+    <enumeration value="0138"/>
+    <enumeration value="0139"/>
+    <enumeration value="0140"/>
+    <enumeration value="0141"/>
+    <enumeration value="0142"/>
+    <enumeration value="0143"/>
+    <enumeration value="0144"/>
+    <enumeration value="0145"/>
+    <enumeration value="0146"/>
+    <enumeration value="0147"/>
+    <enumeration value="0148"/>
+    <enumeration value="0149"/>
+    <enumeration value="0150"/>
+    <enumeration value="0151"/>
+    <enumeration value="0152"/>
+    <enumeration value="0153"/>
+    <enumeration value="0154"/>
+    <enumeration value="0155"/>
+    <enumeration value="0156"/>
+    <enumeration value="0157"/>
+    <enumeration value="0158"/>
+    <enumeration value="0159"/>
+    <enumeration value="0160"/>
+    <enumeration value="0161"/>
+    <enumeration value="0162"/>
+    <enumeration value="0163"/>
+    <enumeration value="0164"/>
+    <enumeration value="0165"/>
+    <enumeration value="0166"/>
+    <enumeration value="0167"/>
+    <enumeration value="0168"/>
+    <enumeration value="0169"/>
+    <enumeration value="0170"/>
+    <enumeration value="0171"/>
+    <enumeration value="0172"/>
+    <enumeration value="0173"/>
+    <enumeration value="0174"/>
+    <enumeration value="0175"/>
+    <enumeration value="0176"/>
+    <enumeration value="0177"/>
+    <enumeration value="0178"/>
+    <enumeration value="0179"/>
+    <enumeration value="0180"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0185"/>
+    <enumeration value="0186"/>
+    <enumeration value="0187"/>
+    <enumeration value="0188"/>
+    <enumeration value="0189"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0197"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
+  </cl>
+  <cl id="16">
+    <enumeration value="0002"/>
+    <enumeration value="0003"/>
+    <enumeration value="0004"/>
+    <enumeration value="0005"/>
+    <enumeration value="0006"/>
+    <enumeration value="0007"/>
+    <enumeration value="0008"/>
+    <enumeration value="0009"/>
+    <enumeration value="0010"/>
+    <enumeration value="0011"/>
+    <enumeration value="0012"/>
+    <enumeration value="0013"/>
+    <enumeration value="0014"/>
+    <enumeration value="0015"/>
+    <enumeration value="0016"/>
+    <enumeration value="0017"/>
+    <enumeration value="0018"/>
+    <enumeration value="0019"/>
+    <enumeration value="0020"/>
+    <enumeration value="0021"/>
+    <enumeration value="0022"/>
+    <enumeration value="0023"/>
+    <enumeration value="0024"/>
+    <enumeration value="0025"/>
+    <enumeration value="0026"/>
+    <enumeration value="0027"/>
+    <enumeration value="0028"/>
+    <enumeration value="0029"/>
+    <enumeration value="0030"/>
+    <enumeration value="0031"/>
+    <enumeration value="0032"/>
+    <enumeration value="0033"/>
+    <enumeration value="0034"/>
+    <enumeration value="0035"/>
+    <enumeration value="0036"/>
+    <enumeration value="0037"/>
+    <enumeration value="0038"/>
+    <enumeration value="0039"/>
+    <enumeration value="0040"/>
+    <enumeration value="0041"/>
+    <enumeration value="0042"/>
+    <enumeration value="0043"/>
+    <enumeration value="0044"/>
+    <enumeration value="0045"/>
+    <enumeration value="0046"/>
+    <enumeration value="0047"/>
+    <enumeration value="0048"/>
+    <enumeration value="0049"/>
+    <enumeration value="0050"/>
+    <enumeration value="0051"/>
+    <enumeration value="0052"/>
+    <enumeration value="0053"/>
+    <enumeration value="0054"/>
+    <enumeration value="0055"/>
+    <enumeration value="0056"/>
+    <enumeration value="0057"/>
+    <enumeration value="0058"/>
+    <enumeration value="0059"/>
+    <enumeration value="0060"/>
+    <enumeration value="0061"/>
+    <enumeration value="0062"/>
+    <enumeration value="0063"/>
+    <enumeration value="0064"/>
+    <enumeration value="0065"/>
+    <enumeration value="0066"/>
+    <enumeration value="0067"/>
+    <enumeration value="0068"/>
+    <enumeration value="0069"/>
+    <enumeration value="0070"/>
+    <enumeration value="0071"/>
+    <enumeration value="0072"/>
+    <enumeration value="0073"/>
+    <enumeration value="0074"/>
+    <enumeration value="0075"/>
+    <enumeration value="0076"/>
+    <enumeration value="0077"/>
+    <enumeration value="0078"/>
+    <enumeration value="0079"/>
+    <enumeration value="0080"/>
+    <enumeration value="0081"/>
+    <enumeration value="0082"/>
+    <enumeration value="0083"/>
+    <enumeration value="0084"/>
+    <enumeration value="0085"/>
+    <enumeration value="0086"/>
+    <enumeration value="0087"/>
+    <enumeration value="0088"/>
+    <enumeration value="0089"/>
+    <enumeration value="0090"/>
+    <enumeration value="0091"/>
+    <enumeration value="0093"/>
+    <enumeration value="0094"/>
+    <enumeration value="0095"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0098"/>
+    <enumeration value="0099"/>
+    <enumeration value="0100"/>
+    <enumeration value="0101"/>
+    <enumeration value="0102"/>
+    <enumeration value="0104"/>
+    <enumeration value="0105"/>
+    <enumeration value="0106"/>
+    <enumeration value="0107"/>
+    <enumeration value="0108"/>
+    <enumeration value="0109"/>
+    <enumeration value="0110"/>
+    <enumeration value="0111"/>
+    <enumeration value="0112"/>
+    <enumeration value="0113"/>
+    <enumeration value="0114"/>
+    <enumeration value="0115"/>
+    <enumeration value="0116"/>
+    <enumeration value="0117"/>
+    <enumeration value="0118"/>
+    <enumeration value="0119"/>
+    <enumeration value="0120"/>
+    <enumeration value="0121"/>
+    <enumeration value="0122"/>
+    <enumeration value="0123"/>
+    <enumeration value="0124"/>
+    <enumeration value="0125"/>
+    <enumeration value="0126"/>
+    <enumeration value="0127"/>
+    <enumeration value="0128"/>
+    <enumeration value="0129"/>
+    <enumeration value="0130"/>
+    <enumeration value="0131"/>
+    <enumeration value="0132"/>
+    <enumeration value="0133"/>
+    <enumeration value="0134"/>
+    <enumeration value="0135"/>
+    <enumeration value="0136"/>
+    <enumeration value="0137"/>
+    <enumeration value="0138"/>
+    <enumeration value="0139"/>
+    <enumeration value="0140"/>
+    <enumeration value="0141"/>
+    <enumeration value="0142"/>
+    <enumeration value="0143"/>
+    <enumeration value="0144"/>
+    <enumeration value="0145"/>
+    <enumeration value="0146"/>
+    <enumeration value="0147"/>
+    <enumeration value="0148"/>
+    <enumeration value="0149"/>
+    <enumeration value="0150"/>
+    <enumeration value="0151"/>
+    <enumeration value="0152"/>
+    <enumeration value="0153"/>
+    <enumeration value="0154"/>
+    <enumeration value="0155"/>
+    <enumeration value="0156"/>
+    <enumeration value="0157"/>
+    <enumeration value="0158"/>
+    <enumeration value="0159"/>
+    <enumeration value="0160"/>
+    <enumeration value="0161"/>
+    <enumeration value="0162"/>
+    <enumeration value="0163"/>
+    <enumeration value="0164"/>
+    <enumeration value="0165"/>
+    <enumeration value="0166"/>
+    <enumeration value="0167"/>
+    <enumeration value="0168"/>
+    <enumeration value="0169"/>
+    <enumeration value="0170"/>
+    <enumeration value="0171"/>
+    <enumeration value="0172"/>
+    <enumeration value="0173"/>
+    <enumeration value="0174"/>
+    <enumeration value="0175"/>
+    <enumeration value="0176"/>
+    <enumeration value="0177"/>
+    <enumeration value="0178"/>
+    <enumeration value="0179"/>
+    <enumeration value="0180"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0185"/>
+    <enumeration value="0186"/>
+    <enumeration value="0187"/>
+    <enumeration value="0188"/>
+    <enumeration value="0189"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0197"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
+  </cl>
+  <cl id="17">
+    <enumeration value="0002"/>
+    <enumeration value="0007"/>
+    <enumeration value="0009"/>
+    <enumeration value="0037"/>
+    <enumeration value="0060"/>
+    <enumeration value="0088"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0106"/>
+    <enumeration value="0130"/>
+    <enumeration value="0135"/>
+    <enumeration value="0142"/>
+    <enumeration value="0147"/>
+    <enumeration value="0151"/>
+    <enumeration value="0170"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0188"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0221"/>
+    <enumeration value="0225"/>
+    <enumeration value="0230"/>
+    <enumeration value="9901"/>
+    <enumeration value="9910"/>
+    <enumeration value="9913"/>
+    <enumeration value="9914"/>
+    <enumeration value="9915"/>
+    <enumeration value="9918"/>
+    <enumeration value="9919"/>
+    <enumeration value="9920"/>
+    <enumeration value="9922"/>
+    <enumeration value="9923"/>
+    <enumeration value="9924"/>
+    <enumeration value="9925"/>
+    <enumeration value="9926"/>
+    <enumeration value="9927"/>
+    <enumeration value="9928"/>
+    <enumeration value="9929"/>
+    <enumeration value="9930"/>
+    <enumeration value="9931"/>
+    <enumeration value="9932"/>
+    <enumeration value="9933"/>
+    <enumeration value="9934"/>
+    <enumeration value="9935"/>
+    <enumeration value="9936"/>
+    <enumeration value="9937"/>
+    <enumeration value="9938"/>
+    <enumeration value="9939"/>
+    <enumeration value="9940"/>
+    <enumeration value="9941"/>
+    <enumeration value="9942"/>
+    <enumeration value="9943"/>
+    <enumeration value="9944"/>
+    <enumeration value="9945"/>
+    <enumeration value="9946"/>
+    <enumeration value="9947"/>
+    <enumeration value="9948"/>
+    <enumeration value="9949"/>
+    <enumeration value="9950"/>
+    <enumeration value="9951"/>
+    <enumeration value="9952"/>
+    <enumeration value="9953"/>
+    <enumeration value="9957"/>
+    <enumeration value="9959"/>
+    <enumeration value="AN"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AS"/>
+    <enumeration value="AU"/>
+    <enumeration value="EM"/>
+  </cl>
+  <cl id="18">
+    <enumeration value="VA"/>
+  </cl>
+  <cl id="19">
+    <enumeration value="VA"/>
+  </cl>
+  <cl id="20">
+    <enumeration value="916"/>
+  </cl>
+  <cl id="21">
+    <enumeration value="application/pdf"/>
+    <enumeration value="application/vnd.oasis.opendocument.spreadsheet"/>
+    <enumeration value="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
+    <enumeration value="image/jpeg"/>
+    <enumeration value="image/png"/>
+    <enumeration value="text/csv"/>
+  </cl>
+  <cl id="22">
+    <enumeration value="50"/>
+  </cl>
+  <cl id="23">
+    <enumeration value="130"/>
+  </cl>
+  <cl id="24">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="25">
+    <enumeration value="1"/>
+    <enumeration value="2"/>
+    <enumeration value="3"/>
+    <enumeration value="4"/>
+    <enumeration value="5"/>
+    <enumeration value="6"/>
+    <enumeration value="7"/>
+    <enumeration value="8"/>
+    <enumeration value="9"/>
+    <enumeration value="10"/>
+    <enumeration value="11"/>
+    <enumeration value="12"/>
+    <enumeration value="13"/>
+    <enumeration value="14"/>
+    <enumeration value="15"/>
+    <enumeration value="16"/>
+    <enumeration value="17"/>
+    <enumeration value="18"/>
+    <enumeration value="19"/>
+    <enumeration value="20"/>
+    <enumeration value="21"/>
+    <enumeration value="22"/>
+    <enumeration value="23"/>
+    <enumeration value="24"/>
+    <enumeration value="25"/>
+    <enumeration value="26"/>
+    <enumeration value="27"/>
+    <enumeration value="28"/>
+    <enumeration value="29"/>
+    <enumeration value="30"/>
+    <enumeration value="31"/>
+    <enumeration value="32"/>
+    <enumeration value="33"/>
+    <enumeration value="34"/>
+    <enumeration value="35"/>
+    <enumeration value="36"/>
+    <enumeration value="37"/>
+    <enumeration value="38"/>
+    <enumeration value="39"/>
+    <enumeration value="40"/>
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="43"/>
+    <enumeration value="44"/>
+    <enumeration value="45"/>
+    <enumeration value="46"/>
+    <enumeration value="47"/>
+    <enumeration value="48"/>
+    <enumeration value="49"/>
+    <enumeration value="50"/>
+    <enumeration value="51"/>
+    <enumeration value="52"/>
+    <enumeration value="53"/>
+    <enumeration value="54"/>
+    <enumeration value="55"/>
+    <enumeration value="56"/>
+    <enumeration value="57"/>
+    <enumeration value="58"/>
+    <enumeration value="59"/>
+    <enumeration value="60"/>
+    <enumeration value="61"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="69"/>
+    <enumeration value="70"/>
+    <enumeration value="74"/>
+    <enumeration value="75"/>
+    <enumeration value="76"/>
+    <enumeration value="77"/>
+    <enumeration value="78"/>
+    <enumeration value="91"/>
+    <enumeration value="92"/>
+    <enumeration value="93"/>
+    <enumeration value="94"/>
+    <enumeration value="95"/>
+    <enumeration value="96"/>
+    <enumeration value="97"/>
+    <enumeration value="98"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="26">
+    <enumeration value="VATEX-EU-132"/>
+    <enumeration value="VATEX-EU-132-1A"/>
+    <enumeration value="VATEX-EU-132-1B"/>
+    <enumeration value="VATEX-EU-132-1C"/>
+    <enumeration value="VATEX-EU-132-1D"/>
+    <enumeration value="VATEX-EU-132-1E"/>
+    <enumeration value="VATEX-EU-132-1F"/>
+    <enumeration value="VATEX-EU-132-1G"/>
+    <enumeration value="VATEX-EU-132-1H"/>
+    <enumeration value="VATEX-EU-132-1I"/>
+    <enumeration value="VATEX-EU-132-1J"/>
+    <enumeration value="VATEX-EU-132-1K"/>
+    <enumeration value="VATEX-EU-132-1L"/>
+    <enumeration value="VATEX-EU-132-1M"/>
+    <enumeration value="VATEX-EU-132-1N"/>
+    <enumeration value="VATEX-EU-132-1O"/>
+    <enumeration value="VATEX-EU-132-1P"/>
+    <enumeration value="VATEX-EU-132-1Q"/>
+    <enumeration value="VATEX-EU-143"/>
+    <enumeration value="VATEX-EU-143-1A"/>
+    <enumeration value="VATEX-EU-143-1B"/>
+    <enumeration value="VATEX-EU-143-1C"/>
+    <enumeration value="VATEX-EU-143-1D"/>
+    <enumeration value="VATEX-EU-143-1E"/>
+    <enumeration value="VATEX-EU-143-1F"/>
+    <enumeration value="VATEX-EU-143-1FA"/>
+    <enumeration value="VATEX-EU-143-1G"/>
+    <enumeration value="VATEX-EU-143-1H"/>
+    <enumeration value="VATEX-EU-143-1I"/>
+    <enumeration value="VATEX-EU-143-1J"/>
+    <enumeration value="VATEX-EU-143-1K"/>
+    <enumeration value="VATEX-EU-143-1L"/>
+    <enumeration value="VATEX-EU-148"/>
+    <enumeration value="VATEX-EU-148-A"/>
+    <enumeration value="VATEX-EU-148-B"/>
+    <enumeration value="VATEX-EU-148-C"/>
+    <enumeration value="VATEX-EU-148-D"/>
+    <enumeration value="VATEX-EU-148-E"/>
+    <enumeration value="VATEX-EU-148-F"/>
+    <enumeration value="VATEX-EU-148-G"/>
+    <enumeration value="VATEX-EU-151"/>
+    <enumeration value="VATEX-EU-151-1A"/>
+    <enumeration value="VATEX-EU-151-1AA"/>
+    <enumeration value="VATEX-EU-151-1B"/>
+    <enumeration value="VATEX-EU-151-1C"/>
+    <enumeration value="VATEX-EU-151-1D"/>
+    <enumeration value="VATEX-EU-151-1E"/>
+    <enumeration value="VATEX-EU-309"/>
+    <enumeration value="VATEX-EU-79-C"/>
+    <enumeration value="VATEX-EU-AE"/>
+    <enumeration value="VATEX-EU-D"/>
+    <enumeration value="VATEX-EU-F"/>
+    <enumeration value="VATEX-EU-G"/>
+    <enumeration value="VATEX-EU-I"/>
+    <enumeration value="VATEX-EU-IC"/>
+    <enumeration value="VATEX-EU-J"/>
+    <enumeration value="VATEX-EU-O"/>
+    <enumeration value="VATEX-FR-CNWVAT"/>
+    <enumeration value="VATEX-FR-FRANCHISE"/>
+  </cl>
+  <cl id="27">
+    <enumeration value="102"/>
+  </cl>
+  <cl id="28">
+    <enumeration value="5"/>
+    <enumeration value="29"/>
+    <enumeration value="72"/>
+  </cl>
+  <cl id="29">
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="60"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="70"/>
+    <enumeration value="71"/>
+    <enumeration value="88"/>
+    <enumeration value="95"/>
+    <enumeration value="100"/>
+    <enumeration value="102"/>
+    <enumeration value="103"/>
+    <enumeration value="104"/>
+    <enumeration value="105"/>
+  </cl>
+  <cl id="30">
+    <enumeration value="AA"/>
+    <enumeration value="AAA"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAH"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AJ"/>
+    <enumeration value="AU"/>
+    <enumeration value="CA"/>
+    <enumeration value="CAB"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CAE"/>
+    <enumeration value="CAF"/>
+    <enumeration value="CAI"/>
+    <enumeration value="CAJ"/>
+    <enumeration value="CAK"/>
+    <enumeration value="CAL"/>
+    <enumeration value="CAM"/>
+    <enumeration value="CAN"/>
+    <enumeration value="CAO"/>
+    <enumeration value="CAP"/>
+    <enumeration value="CAQ"/>
+    <enumeration value="CAR"/>
+    <enumeration value="CAS"/>
+    <enumeration value="CAT"/>
+    <enumeration value="CAU"/>
+    <enumeration value="CAV"/>
+    <enumeration value="CAW"/>
+    <enumeration value="CAX"/>
+    <enumeration value="CAY"/>
+    <enumeration value="CAZ"/>
+    <enumeration value="CD"/>
+    <enumeration value="CG"/>
+    <enumeration value="CS"/>
+    <enumeration value="CT"/>
+    <enumeration value="DAB"/>
+    <enumeration value="DAC"/>
+    <enumeration value="DAD"/>
+    <enumeration value="DAF"/>
+    <enumeration value="DAG"/>
+    <enumeration value="DAH"/>
+    <enumeration value="DAI"/>
+    <enumeration value="DAJ"/>
+    <enumeration value="DAK"/>
+    <enumeration value="DAL"/>
+    <enumeration value="DAM"/>
+    <enumeration value="DAN"/>
+    <enumeration value="DAO"/>
+    <enumeration value="DAP"/>
+    <enumeration value="DAQ"/>
+    <enumeration value="DL"/>
+    <enumeration value="EG"/>
+    <enumeration value="EP"/>
+    <enumeration value="ER"/>
+    <enumeration value="FAA"/>
+    <enumeration value="FAB"/>
+    <enumeration value="FAC"/>
+    <enumeration value="FC"/>
+    <enumeration value="FH"/>
+    <enumeration value="FI"/>
+    <enumeration value="GAA"/>
+    <enumeration value="HAA"/>
+    <enumeration value="HD"/>
+    <enumeration value="HH"/>
+    <enumeration value="IAA"/>
+    <enumeration value="IAB"/>
+    <enumeration value="ID"/>
+    <enumeration value="IF"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="KO"/>
+    <enumeration value="L1"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAA"/>
+    <enumeration value="LAB"/>
+    <enumeration value="LF"/>
+    <enumeration value="MAE"/>
+    <enumeration value="MI"/>
+    <enumeration value="ML"/>
+    <enumeration value="NAA"/>
+    <enumeration value="OA"/>
+    <enumeration value="PA"/>
+    <enumeration value="PAA"/>
+    <enumeration value="PC"/>
+    <enumeration value="PL"/>
+    <enumeration value="PRV"/>
+    <enumeration value="RAB"/>
+    <enumeration value="RAC"/>
+    <enumeration value="RAD"/>
+    <enumeration value="RAF"/>
+    <enumeration value="RE"/>
+    <enumeration value="RF"/>
+    <enumeration value="RH"/>
+    <enumeration value="RV"/>
+    <enumeration value="SA"/>
+    <enumeration value="SAA"/>
+    <enumeration value="SAD"/>
+    <enumeration value="SAE"/>
+    <enumeration value="SAI"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SM"/>
+    <enumeration value="SU"/>
+    <enumeration value="TAB"/>
+    <enumeration value="TAC"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="V1"/>
+    <enumeration value="V2"/>
+    <enumeration value="WH"/>
+    <enumeration value="XAA"/>
+    <enumeration value="YY"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="31">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="32">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="33">
+    <enumeration value="102"/>
+  </cl>
 </codedb>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EXTENDED.sch
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EXTENDED.sch	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EXTENDED.sch	(revision 8504)
@@ -1,20294 +1,7069 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<schema xmlns="http://purl.oclc.org/dsdl/schematron" schemaVersion="iso">
-    <title>Schema for FACTUR-X; 1.0; EN16931-CONFORMANT-EXTENDED</title>
-    <ns uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" prefix="rsm"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" prefix="qdt"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" prefix="ram"/>
-    <ns uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" prefix="udt"/>
-    <pattern>
-        <rule context="//ram:AdditionalReferencedDocument">
-            <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
-                Each Additional supporting document (BG-24) shall contain a Supporting document reference (BT-122).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="(ram:BasisAmount)">
-                Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).</assert>
-            <assert test="(ram:CalculatedAmount)">
-                Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).</assert>
-            <assert test="(ram:CategoryCode)">
-                Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).</assert>
-            <assert test="(ram:RateApplicablePercent) or (ram:CategoryCode = &apos;O&apos;)">
-                Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.</assert>
-            <assert test="((ram:TaxPointDate) and not (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and not (ram:DueDateTypeCode))">
-                Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.</assert>
-            <assert test="ram:CalculatedAmount = round(ram:BasisAmount * ram:RateApplicablePercent) div 100 +0 or not (ram:RateApplicablePercent)">
-                VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2.</assert>
-            <assert test="string-length(substring-after(ram:CalculatedAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;Z&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amount (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âZero rated".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" shall equal 0 (zero).</assert>
-            <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.=&apos;S&apos;]">
-            <assert test="../ram:CalculatedAmount = round(../ram:BasisAmount * ../ram:RateApplicablePercent) div 100 +0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
-            <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
-                If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).</assert>
-            <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
-                If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).</assert>
-            <assert test="(ram:CategoryTradeTax/ram:CategoryCode)">
-                Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).</assert>
-            <assert test="true()">
-                Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Document level charge (BG-21) shall have a Document level charge amount (BT-99).</assert>
-            <assert test="(ram:CategoryTradeTax/ram:CategoryCode)">
-                Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).</assert>
-            <assert test="true()">
-                Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level charge amount (BT-92) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Document level charge base amount (BT-93) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableProductCharacteristic">
-            <assert test="(ram:Description) and (ram:Value)">
-                Each Item attribute (BG-32) shall contain an Item attribute name (BT-160) and an Item attribute value (BT-161).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:ApplicableTradeSettlementFinancialCard">
-            <assert test="string-length(ram:ID)&lt;=6 and string-length(ram:ID)&gt;=4">
-                The last 4 to 6 digits of the Payment card primary account number (BT-87) shall be present if Payment card information (BG-18) is provided in the Invoice.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:IncludedSupplyChainTradeLineItem">
-            <assert test="(ram:AssociatedDocumentLineDocument/ram:LineID!=&apos;&apos;)">
-                Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).</assert>
-            <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)">
-                Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).</assert>
-            <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)">
-                An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).</assert>
-            <assert test="(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)">
-                Each Invoice line (BG-25) shall have an Invoice line net amount (BT-131).</assert>
-            <assert test="(ram:SpecifiedTradeProduct/ram:Name!=&apos;&apos;)">
-                Each Invoice line (BG-25) shall contain the Item name (BT-153).</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)">
-                Each Invoice line (BG-25) shall contain the Item net price (BT-146).</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount) &gt;= 0">
-                The Item net price (BT-146) shall NOT be negative.</assert>
-            <assert test="(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount &gt;= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)">
-                The Item gross price (BT-148) shall NOT be negative.</assert>
-            <assert test="ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID!=&apos;&apos; or not (ram:SpecifiedTradeProduct/ram:GlobalID)">
-                The Item standard identifier (BT-157) shall have a Scheme identifier</assert>
-            <assert test="(ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode/@listID!=&apos;&apos;) or not (ram:SpecifiedTradeProduct/ram:DesignatedProductClassification)">
-                The Item classification identifier (BT-158) shall have a Scheme identifier</assert>
-            <assert test="(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode)">
-                Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).</assert>
-            <assert test="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-                An Invoice shall at least have one VAT breakdown group (BG-23).</assert>
-            <assert test="string-length(substring-after(ram:SpecifiedTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line net amount (BT-131) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:PayeeTradeParty">
-            <assert test="(ram:Name) and (not(ram:Name = ../ram:SellerTradeParty/ram:Name) and not(ram:ID = ../ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))">
-                The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SellerTaxRepresentativeTradeParty">
-            <assert test="(ram:Name)">
-                The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:PostalTradeAddress)">
-                The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:PostalTradeAddress/ram:CountryID)">
-                The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-            <assert test="(ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]!=&apos;&apos;)">
-                Each Seller tax representative party (BG-11) shall have a Seller tax representative VAT identifier (BT-63).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SellerTradeParty">
-            <assert test="(ram:ID) or (ram:GlobalID) or (ram:SpecifiedLegalOrganization/ram:ID) or (ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;])">
-                In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod">
-            <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
-                If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).</assert>
-            <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
-                If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = &apos;false&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Invoice line allowance (BG-27) shall have an Invoice line allowance amount (BT-136).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).</assert>
-            <assert test="true()">
-                Invoice line allowance reason code (BT-140) and Invoice line allowance reason (BT-139) shall indicate the same type of allowance reason.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line allowance amount (BT-136) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line allowance base amount (BT-137) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = &apos;true&apos;]">
-            <assert test="(ram:ActualAmount)">
-                Each Invoice line charge (BG-28) shall have an Invoice line charge amount (BT-141).</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line charge (BG-28) shall have an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145).</assert>
-            <assert test="true()">
-                Invoice line charge reason code (BT-145) and Invoice line charge reason (BT144) shall indicate the same type of charge reason.</assert>
-            <assert test="(ram:Reason) or (ram:ReasonCode)">
-                Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.</assert>
-            <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line charge amount (BT-141) is 2.</assert>
-            <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice line charge base amount (BT-142) is 2.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]">
-            <assert test="contains(&apos; EL AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CX CY CZ DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW &apos;, concat(&apos; &apos;, substring(.,1,2), &apos; &apos;))">
-                The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix âELâ.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT", the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                A Document level allowance (BG-20) where VAT category code (BT-95) is "Not subject to VAT" shall not contain a Document level allowance VAT rate (BT-96).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT", the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                A Document level charge (BG-21) where the VAT category code (BT-102) is "Not subject to VAT" shall not contain a Document level charge VAT rate (BT-103).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Zero rated" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation">
-            <assert test="(ram:TaxBasisTotalAmount)">
-                An Invoice shall have the Invoice total amount without VAT (BT-109).</assert>
-            <assert test="(ram:GrandTotalAmount)">
-                An Invoice shall have the Invoice total amount with VAT (BT-112).</assert>
-            <assert test="(ram:DuePayableAmount)">
-                An Invoice shall have the Amount due for payment (BT-115).</assert>
-            <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:ActualAmount)* 10 * 10 ) div 100)">
-                Sum of allowances on document level (BT-107) = S Document level allowance amount (BT-92).</assert>
-            <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;])and not (ram:ChargeTotalAmount)) or ram:ChargeTotalAmount = &#13;&#10;((round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:ActualAmount)* 10 * 10 ) div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100))">
-                Sum of charges on document level (BT-108) = S Document level charge amount (BT-99).</assert>
-            <assert test="(ram:GrandTotalAmount = round(ram:TaxBasisTotalAmount*100 + ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]*100 +0) div 100) or ((ram:GrandTotalAmount = ram:TaxBasisTotalAmount) and not (ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]))">
-                Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).</assert>
-            <assert test="string-length(substring-after(ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2.</assert>
-            <assert test="string-length(substring-after(ram:AllowanceTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.</assert>
-            <assert test="string-length(substring-after(ram:ChargeTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2.</assert>
-            <assert test="string-length(substring-after(ram:TaxBasisTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.</assert>
-            <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]">
-                The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.</assert>
-            <assert test="string-length(substring-after(ram:GrandTotalAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.</assert>
-            <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]">
-                The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.</assert>
-            <assert test="string-length(substring-after(ram:TotalPrepaidAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Paid amount (BT-113) is 2.</assert>
-            <assert test="string-length(substring-after(ram:RoundingAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Rounding amount (BT-114) is 2.</assert>
-            <assert test="string-length(substring-after(ram:DuePayableAmount,&apos;.&apos;))&lt;=2">
-                The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.</assert>
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))">
-                If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided.</assert>
-            <assert test="(ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 - ram:AllowanceTotalAmount*100 + ram:ChargeTotalAmount*100) div 100)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 - ram:AllowanceTotalAmount*100) div 100)) and not (ram:ChargeTotalAmount)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount*100 + ram:ChargeTotalAmount*100) div 100)) and not (ram:AllowanceTotalAmount)) or ((ram:TaxBasisTotalAmount = (round(ram:LineTotalAmount * 100) div 100)) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))">
-                Invoice total amount without VAT (BT-109) = S Invoice line net amount (BT-131) - Sum of allowances on document level (BT-107) + Sum of charges on document level (BT-108).</assert>
-            <assert test="(ram:DuePayableAmount = (round(ram:GrandTotalAmount*100 - ram:TotalPrepaidAmount*100 + ram:RoundingAmount*100) div 100)) or ((ram:DuePayableAmount = ram:GrandTotalAmount + ram:RoundingAmount) and not (ram:TotalPrepaidAmount)) or ((ram:DuePayableAmount = (round(ram:GrandTotalAmount*100 - ram:TotalPrepaidAmount*100) div 100)) and not (ram:RoundingAmount)) or ((ram:DuePayableAmount = (round(ram:GrandTotalAmount*100) div 100)) and not (ram:TotalPrepaidAmount) and not (ram:RoundingAmount))">
-                Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).</assert>
-            <assert test="(ram:LineTotalAmount)">
-                An Invoice shall have the Sum of Invoice line net amount (BT-106).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]">
-            <assert test=". = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount)*10*10)div 100)">
-                Invoice total VAT amount (BT-110) = S VAT category tax amount (BT-117).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementPaymentMeans">
-            <assert test="(ram:TypeCode)">
-                A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode=&apos;30&apos; or ram:TypeCode=&apos;58&apos;]/ram:PayerPartyDebtorFinancialAccount">
-            <assert test="(ram:IBANID) or (ram:ProprietaryID)">
-                A Payment account identifier (BT-84) shall be present if Credit transfer (BG-16) information is provided in the Invoice.</assert>
-            <assert test="(ram:IBANID) or (ram:ProprietaryID)">
-                If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;AE&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âReverse charge".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âReverse chargeâ shall be 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;E&apos;]">
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) In a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).</assert>
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;E&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Exempt from VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âExempt from VAT".</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;G&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âExport outside the EU".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âExport outside the EUâ shall be 0 (zero).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.= &apos;K&apos;]">
-            <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âIntra-community supply".</assert>
-            <assert test="../ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).</assert>
-            <assert test="(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString) or (../../ram:BillingSpecifiedPeriod/ram:StartDateTime) or (../../ram:BillingSpecifiedPeriod/ram:EndDateTime)">
-                In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.</assert>
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
-                In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Deliver to country code (BT-80) shall not be blank.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;L&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100)">
-                For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IGIC", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is âIGICâ and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
-            <assert test="true()">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IGIC" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;M&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100)">
-                For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IPSI", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is âIPSIâ and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
-            <assert test="true()">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-            <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IPSI" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;O&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/ram:ActualAmount)*10*10)div 100)">
-                In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âNot subject to VAT".</assert>
-            <assert test="ram:CalculatedAmount = 0">
-                The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âNot subject to VATâ shall be 0 (zero).</assert>
-            <assert test="(ram:ExemptionReason) or (ram:ExemptionReasonCode)">
-                A VAT Breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).</assert>
-            <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain other VAT breakdown groups (BG-23).</assert>
-            <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is not "Not subject to VAT".</assert>
-            <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".</assert>
-            <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
-                An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level charges (BG-21) where Document level charge VAT category code (BT-102) is not "Not subject to VAT".</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;E&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT", the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;G&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;K&apos;]">
-            <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intracommunity supply" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" the invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" the Invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
-            <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-46).</assert>
-            <assert test="not(ram:RateApplicablePercent)">
-                An Invoice line (BG-25) where the VAT category code (BT-151) is "Not subject to VAT" shall not contain an Invoiced item VAT rate (BT-152).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;S&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent &gt; 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" the Invoiced item VAT rate (BT-152) shall be greater than zero.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-            <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-                An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-            <assert test="ram:RateApplicablePercent = 0">
-                In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Zero rated" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice">
-            <assert test="(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID != &apos;&apos;)">
-                An Invoice shall have a Specification identifier (BT-24).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:ID !=&apos;&apos;)">
-                An Invoice shall have an Invoice number (BT-1).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format=&apos;102&apos;]!=&apos;&apos;)">
-                An Invoice shall have an Invoice issue date (BT-2).</assert>
-            <assert test="(rsm:ExchangedDocument/ram:TypeCode!=&apos;&apos;)">
-                An Invoice shall have an Invoice type code (BT-3).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode!=&apos;&apos;)">
-                An Invoice shall have an Invoice currency code (BT-5).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name!=&apos;&apos;)">
-                An Invoice shall contain the Seller name (BT-27).</assert>
-            <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name!=&apos;&apos;)">
-                An Invoice shall contain the Buyer name (BT-44).</assert>
-            <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress">
-                An Invoice shall contain the Seller postal address (BG-5).</assert>
-            <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
-                The Seller postal address (BG-5) shall contain a Seller country code (BT-40).</assert>
-            <assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID/@schemeID!=&apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)">
-                The Seller electronic address (BT-34) shall have a Scheme identifier.</assert>
-            <assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID/@schemeID!=&apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)">
-                The Buyer electronic address (BT-49) shall have a Scheme identifier.</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âStandard ratedâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âZero ratedâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExempt from VATâ shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âReverse chargeâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIntra-community supplyâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Intra-community supply".</assert>
-            <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExport outside the EUâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU".</assert>
-            <assert test="not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or (     count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;])=1 and     (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;] or    //ram:CategoryTradeTax[ram:CategoryCode=&apos;O&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âNot subject to VATâ shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIGICâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC".</assert>
-            <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]))">
-                An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIPSIâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IPSI".</assert>
-            <assert test="(number(//ram:DuePayableAmount) &gt; 0 and ((//ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime) or (//ram:SpecifiedTradePaymentTerms/ram:Description))) or not(number(//ram:DuePayableAmount)&gt;0)">
-                In case the Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.</assert>
-            <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress">
-                An Invoice shall contain the Buyer postal address (BG-8).</assert>
-            <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
-                The Buyer postal address shall contain a Buyer country code (BT-55).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument">
-            <assert test="count(ram:Name)&lt;=1">
-                Element 'ram:Name' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:CategoryCode">
-            <report test="true()">
-                Element 'ram:CategoryCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ControlRequirementIndicator">
-            <report test="true()">
-                Element 'ram:ControlRequirementIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:CopyIndicator/udt:IndicatorString">
-            <report test="true()">
-                Element 'udt:IndicatorString' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod">
-            <assert test="count(ram:CompleteDateTime)=1">
-                Element 'ram:CompleteDateTime' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:CompleteDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:CompleteDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:ContinuousIndicator">
-            <report test="true()">
-                Element 'ram:ContinuousIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:DurationMeasure">
-            <report test="true()">
-                Element 'ram:DurationMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:EndDateTime">
-            <report test="true()">
-                Element 'ram:EndDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:InclusiveIndicator">
-            <report test="true()">
-                Element 'ram:InclusiveIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:OpenIndicator">
-            <report test="true()">
-                Element 'ram:OpenIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:SeasonCode">
-            <report test="true()">
-                Element 'ram:SeasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:StartDateFlexibilityCode">
-            <report test="true()">
-                Element 'ram:StartDateFlexibilityCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:StartDateTime">
-            <report test="true()">
-                Element 'ram:StartDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote">
-            <assert test="count(ram:Content)=1">
-                Element 'ram:Content' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Content[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Content[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:Subject">
-            <report test="true()">
-                Element 'ram:Subject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode">
-            <let name="codeValue3" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
-                Value of 'ram:SubjectCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Purpose">
-            <report test="true()">
-                Element 'ram:Purpose' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:RevisionDateTime">
-            <report test="true()">
-                Element 'ram:RevisionDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
-            <let name="codeValue1" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=1]/enumeration[@value=$codeValue1]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:VersionID">
-            <report test="true()">
-                Element 'ram:VersionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext">
-            <assert test="count(ram:BusinessProcessSpecifiedDocumentContextParameter)&lt;=1">
-                Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GuidelineSpecifiedDocumentContextParameter)=1">
-                Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:ApplicationSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:ApplicationSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BIMSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:BIMSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:SpecifiedDocumentVersion">
-            <report test="true()">
-                Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:Value">
-            <report test="true()">
-                Element 'ram:Value' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:SpecifiedDocumentVersion">
-            <report test="true()">
-                Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:Value">
-            <report test="true()">
-                Element 'ram:Value' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:MessageStandardSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:MessageStandardSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:ScenarioSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:ScenarioSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:SpecifiedTransactionID">
-            <report test="true()">
-                Element 'ram:SpecifiedTransactionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:SubsetSpecifiedDocumentContextParameter">
-            <report test="true()">
-                Element 'ram:SubsetSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:TestIndicator/udt:IndicatorString">
-            <report test="true()">
-                Element 'udt:IndicatorString' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction">
-            <assert test="count(ram:IncludedSupplyChainTradeLineItem)&gt;=1">
-                Element 'ram:IncludedSupplyChainTradeLineItem' must occur at least 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement">
-            <assert test="count(ram:SellerTradeParty)=1">
-                Element 'ram:SellerTradeParty' must occur exactly 1 times.</assert>
-            <assert test="count(ram:BuyerTradeParty)=1">
-                Element 'ram:BuyerTradeParty' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:Name)&lt;=1">
-                Element 'ram:Name' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:AttachmentBinaryObject)&lt;=1">
-                Element 'ram:AttachmentBinaryObject' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@characterSetCode]">
-            <report test="true()">
-                Attribute @characterSetCode' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@encodingCode]">
-            <report test="true()">
-                Attribute @encodingCode' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@mimeCode]">
-            <let name="codeValue11" value="@mimeCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
-                Value of '@mimeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@uri]">
-            <report test="true()">
-                Attribute @uri' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode">
-            <let name="codeValue23" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=23]/enumeration[@value=$codeValue23]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ApplicableTradeDeliveryTerms/ram:DeliveryTypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ApplicableTradeDeliveryTerms/ram:DeliveryTypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ApplicableTradeDeliveryTerms/ram:DeliveryTypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ApplicableTradeDeliveryTerms/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ApplicableTradeDeliveryTerms/ram:RelevantTradeLocation">
-            <report test="true()">
-                Element 'ram:RelevantTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerAgentTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAssignedAccountantTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerAssignedAccountantTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerRequisitionerTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerRequisitionerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerTaxRepresentativeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
-                Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue19" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue20" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue21" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:DemandForecastReferencedDocument">
-            <report test="true()">
-                Element 'ram:DemandForecastReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:OrderResponseReferencedDocument">
-            <report test="true()">
-                Element 'ram:OrderResponseReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PriceListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PriceListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PromotionalDealReferencedDocument">
-            <report test="true()">
-                Element 'ram:PromotionalDealReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PurchaseConditionsReferencedDocument">
-            <report test="true()">
-                Element 'ram:PurchaseConditionsReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument">
-            <report test="true()">
-                Element 'ram:QuotationReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:Reference">
-            <report test="true()">
-                Element 'ram:Reference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:RequisitionerReferencedDocument">
-            <report test="true()">
-                Element 'ram:RequisitionerReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty">
-            <report test="true()">
-                Element 'ram:SalesAgentTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerAssignedAccountantTradeParty">
-            <report test="true()">
-                Element 'ram:SellerAssignedAccountantTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:SpecifiedTaxRegistration)=1">
-                Element 'ram:SpecifiedTaxRegistration' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue22" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:Description)&lt;=1">
-                Element 'ram:Description' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:PostalTradeAddress)=1">
-                Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue17" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue18" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SupplyInstructionReferencedDocument">
-            <report test="true()">
-                Element 'ram:SupplyInstructionReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery">
-            <assert test="(ram:ShipToTradeParty/ram:PostalTradeAddress and ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;) or not (ram:ShipToTradeParty/ram:PostalTradeAddress)">
-                Each Deliver to address (BG-15) shall contain a Deliver to country code (BT-80).</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:DescriptionBinaryObject">
-            <report test="true()">
-                Element 'ram:DescriptionBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:EarliestOccurrenceDateTime">
-            <report test="true()">
-                Element 'ram:EarliestOccurrenceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:LatestOccurrenceDateTime">
-            <report test="true()">
-                Element 'ram:LatestOccurrenceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceLogisticsLocation">
-            <report test="true()">
-                Element 'ram:OccurrenceLogisticsLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:OccurrenceSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:UnitQuantity">
-            <report test="true()">
-                Element 'ram:UnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDespatchSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualDespatchSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualPickUpSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualPickUpSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualReceiptSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualReceiptSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ConsumptionReportReferencedDocument">
-            <report test="true()">
-                Element 'ram:ConsumptionReportReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:PackingListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PackingListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:PreviousDeliverySupplyChainEvent">
-            <report test="true()">
-                Element 'ram:PreviousDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:AssociatedInvoiceAmount">
-            <report test="true()">
-                Element 'ram:AssociatedInvoiceAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:AssociatedReferencedDocument">
-            <report test="true()">
-                Element 'ram:AssociatedReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:CarrierTradeParty">
-            <report test="true()">
-                Element 'ram:CarrierTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:ConsigneeTradeParty">
-            <report test="true()">
-                Element 'ram:ConsigneeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:ConsignorTradeParty">
-            <report test="true()">
-                Element 'ram:ConsignorTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:CustomsExportAgentTradeParty">
-            <report test="true()">
-                Element 'ram:CustomsExportAgentTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:CustomsImportAgentTradeParty">
-            <report test="true()">
-                Element 'ram:CustomsImportAgentTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:DeclaredValueForCustomsAmount">
-            <report test="true()">
-                Element 'ram:DeclaredValueForCustomsAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:DeliveryTradeParty">
-            <report test="true()">
-                Element 'ram:DeliveryTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:FreightForwarderTradeParty">
-            <report test="true()">
-                Element 'ram:FreightForwarderTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:GrossVolumeMeasure">
-            <report test="true()">
-                Element 'ram:GrossVolumeMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:GrossWeightMeasure">
-            <report test="true()">
-                Element 'ram:GrossWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:GroupingCentreTradeParty">
-            <report test="true()">
-                Element 'ram:GroupingCentreTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:IncludedSupplyChainConsignmentItem">
-            <report test="true()">
-                Element 'ram:IncludedSupplyChainConsignmentItem' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:InsurancePremiumAmount">
-            <report test="true()">
-                Element 'ram:InsurancePremiumAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:NetWeightMeasure">
-            <report test="true()">
-                Element 'ram:NetWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:PackageQuantity">
-            <report test="true()">
-                Element 'ram:PackageQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:SpecifiedLogisticsTransportMovement">
-            <assert test="count(ram:ModeCode)=1">
-                Element 'ram:ModeCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:SpecifiedLogisticsTransportMovement/ram:Mode">
-            <report test="true()">
-                Element 'ram:Mode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:SpecifiedLogisticsTransportMovement/ram:ModeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:SpecifiedLogisticsTransportMovement/ram:ModeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:SpecifiedLogisticsTransportMovement/ram:ModeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:SpecifiedLogisticsTransportMovement/ram:ModeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:SpecifiedLogisticsTransportMovement/ram:StageCode">
-            <report test="true()">
-                Element 'ram:StageCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:SpecifiedLogisticsTransportMovement/ram:UsedLogisticsTransportMeans">
-            <report test="true()">
-                Element 'ram:UsedLogisticsTransportMeans' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:TotalChargeAmount">
-            <report test="true()">
-                Element 'ram:TotalChargeAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:TransportContractReferencedDocument">
-            <report test="true()">
-                Element 'ram:TransportContractReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:UtilizedLogisticsTransportEquipment">
-            <report test="true()">
-                Element 'ram:UtilizedLogisticsTransportEquipment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty">
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty">
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue24" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=24]/enumeration[@value=$codeValue24]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty">
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
-            <assert test="count(ram:PaymentReference)&lt;=1">
-                Element 'ram:PaymentReference' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:InvoiceCurrencyCode)=1">
-                Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ApplicableTradeTax)&gt;=1">
-                Element 'ram:ApplicableTradeTax' must occur at least 1 times.</assert>
-            <assert test="count(ram:SpecifiedTradeSettlementHeaderMonetarySummation)=1">
-                Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="count(ram:CalculatedAmount)=1">
-                Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:BasisAmount)=1">
-                Element 'ram:BasisAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:LineTotalBasisAmount)&lt;=1">
-                Element 'ram:LineTotalBasisAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:AllowanceChargeBasisAmount)&lt;=1">
-                Element 'ram:AllowanceChargeBasisAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:AllowanceChargeBasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:AllowanceChargeBasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
-            <let name="codeValue27" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=27]/enumeration[@value=$codeValue27]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
-            <let name="codeValue28" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=28]/enumeration[@value=$codeValue28]">
-                Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:LineTotalBasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:LineTotalBasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate/udt:Date">
-            <report test="true()">
-                Element 'udt:Date' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate/udt:DateString[@format]">
-            <let name="codeValue29" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=29]/enumeration[@value=$codeValue29]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
-            <assert test="count(ram:Description)&lt;=1">
-                Element 'ram:Description' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:CompleteDateTime">
-            <report test="true()">
-                Element 'ram:CompleteDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:ContinuousIndicator">
-            <report test="true()">
-                Element 'ram:ContinuousIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:DurationMeasure">
-            <report test="true()">
-                Element 'ram:DurationMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:InclusiveIndicator">
-            <report test="true()">
-                Element 'ram:InclusiveIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:OpenIndicator">
-            <report test="true()">
-                Element 'ram:OpenIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:SeasonCode">
-            <report test="true()">
-                Element 'ram:SeasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateFlexibilityCode">
-            <report test="true()">
-                Element 'ram:StartDateFlexibilityCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditReason">
-            <report test="true()">
-                Element 'ram:CreditReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditReasonCode">
-            <report test="true()">
-                Element 'ram:CreditReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceIssuerID">
-            <report test="true()">
-                Element 'ram:CreditorReferenceIssuerID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceType">
-            <report test="true()">
-                Element 'ram:CreditorReferenceType' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:CreditorReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:DuePayableAmount">
-            <report test="true()">
-                Element 'ram:DuePayableAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:FactoringAgreementReferencedDocument">
-            <report test="true()">
-                Element 'ram:FactoringAgreementReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:FactoringListReferencedDocument">
-            <report test="true()">
-                Element 'ram:FactoringListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:InvoiceApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceDateTime">
-            <report test="true()">
-                Element 'ram:InvoiceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceIssuerReference[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceIssuerReference[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument">
-            <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
-                Each Preceding Invoice reference (BG-3) shall contain a Preceding Invoice reference (BT-25).</assert>
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty">
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty">
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
-            <report test="true()">
-                Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:LetterOfCreditReferencedDocument">
-            <report test="true()">
-                Element 'ram:LetterOfCreditReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:NextInvoiceDateTime">
-            <report test="true()">
-                Element 'ram:NextInvoiceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayableSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PayableSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeID]">
-            <let name="codeValue25" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=25]/enumeration[@value=$codeValue25]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-            <let name="codeValue26" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=26]/enumeration[@value=$codeValue26]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty">
-            <report test="true()">
-                Element 'ram:PayerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentApplicableTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:PaymentApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentCurrencyCode">
-            <report test="true()">
-                Element 'ram:PaymentCurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentReference[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentReference[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ProFormaInvoiceReferencedDocument">
-            <report test="true()">
-                Element 'ram:ProFormaInvoiceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PurchaseSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PurchaseSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:AmountTypeCode">
-            <report test="true()">
-                Element 'ram:AmountTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:CostReferenceDimensionPattern">
-            <report test="true()">
-                Element 'ram:CostReferenceDimensionPattern' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:SetTriggerCode">
-            <report test="true()">
-                Element 'ram:SetTriggerCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SalesSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SalesSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment">
-            <assert test="count(ram:IncludedTradeTax)&gt;=1">
-                Element 'ram:IncludedTradeTax' must occur at least 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:FormattedReceivedDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax">
-            <assert test="count(ram:CalculatedAmount)=1">
-                Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CalculatedAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CalculatedAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CategoryCode">
-            <let name="codeValue32" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=32]/enumeration[@value=$codeValue32]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:DueDateTypeCode">
-            <report test="true()">
-                Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:ExemptionReasonCode">
-            <report test="true()">
-                Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:ExemptionReason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:ExemptionReason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:PaidAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:PaidAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedFinancialAdjustment">
-            <report test="true()">
-                Element 'ram:SpecifiedFinancialAdjustment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge">
-            <assert test="count(ram:Description)=1">
-                Element 'ram:Description' must occur exactly 1 times.</assert>
-            <assert test="count(ram:AppliedAmount)=1">
-                Element 'ram:AppliedAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AllowanceCharge">
-            <report test="true()">
-                Element 'ram:AllowanceCharge' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedFromLogisticsLocation">
-            <report test="true()">
-                Element 'ram:AppliedFromLogisticsLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedToLogisticsLocation">
-            <report test="true()">
-                Element 'ram:AppliedToLogisticsLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CalculatedAmount">
-            <report test="true()">
-                Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:DueDateTypeCode">
-            <report test="true()">
-                Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:ExemptionReason">
-            <report test="true()">
-                Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:ExemptionReasonCode">
-            <report test="true()">
-                Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:CalculationBasis">
-            <report test="true()">
-                Element 'ram:CalculationBasis' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:CalculationBasisCode">
-            <report test="true()">
-                Element 'ram:CalculationBasisCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:ChargeCategoryCode">
-            <report test="true()">
-                Element 'ram:ChargeCategoryCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:DisbursementAmount">
-            <report test="true()">
-                Element 'ram:DisbursementAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:PayingPartyRoleCode">
-            <report test="true()">
-                Element 'ram:PayingPartyRoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:PaymentArrangementCode">
-            <report test="true()">
-                Element 'ram:PaymentArrangementCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:PaymentPlaceLogisticsLocation">
-            <report test="true()">
-                Element 'ram:PaymentPlaceLogisticsLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:ServiceCategoryCode">
-            <report test="true()">
-                Element 'ram:ServiceCategoryCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:TariffClassCode">
-            <report test="true()">
-                Element 'ram:TariffClassCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:TransportPaymentMethodCode">
-            <report test="true()">
-                Element 'ram:TransportPaymentMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge">
-            <assert test="count(ram:ChargeIndicator)=1">
-                Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ActualAmount)=1">
-                Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryTradeTax)=1">
-                Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisQuantity[@unitCode]">
-            <let name="codeValue9" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CalculationPercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculatedAmount">
-            <report test="true()">
-                Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode">
-            <let name="codeValue30" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=30]/enumeration[@value=$codeValue30]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:DueDateTypeCode">
-            <report test="true()">
-                Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ExemptionReason">
-            <report test="true()">
-                Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ExemptionReasonCode">
-            <report test="true()">
-                Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator/udt:IndicatorString">
-            <report test="true()">
-                Element 'udt:IndicatorString' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:PrepaidIndicator">
-            <report test="true()">
-                Element 'ram:PrepaidIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:SequenceNumeric[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms">
-            <assert test="count(ram:Description)&lt;=1">
-                Element 'ram:Description' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:DirectDebitMandateID)&lt;=1">
-                Element 'ram:DirectDebitMandateID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:PartialPaymentAmount)&lt;=1">
-                Element 'ram:PartialPaymentAmount' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:ActualDiscountAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:ActualDiscountAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:BasisDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:BasisDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:BasisPeriodMeasure[@unitCodeListVersionID]">
-            <report test="true()">
-                Attribute @unitCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:BasisPeriodMeasure[@unitCode]">
-            <let name="codeValue6" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:CalculationPercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:ActualPenaltyAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:ActualPenaltyAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisPeriodMeasure[@unitCodeListVersionID]">
-            <report test="true()">
-                Attribute @unitCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisPeriodMeasure[@unitCode]">
-            <let name="codeValue6" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:CalculationPercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:FromEventCode">
-            <report test="true()">
-                Element 'ram:FromEventCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:InstructionTypeCode">
-            <report test="true()">
-                Element 'ram:InstructionTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentPercent">
-            <report test="true()">
-                Element 'ram:PartialPaymentPercent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty">
-            <report test="true()">
-                Element 'ram:PayeeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PaymentMeansID">
-            <report test="true()">
-                Element 'ram:PaymentMeansID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:SettlementPeriodMeasure">
-            <report test="true()">
-                Element 'ram:SettlementPeriodMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementFinancialCard">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeSettlementFinancialCard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation">
-            <assert test="count(ram:LineTotalAmount)=1">
-                Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ChargeTotalAmount)&lt;=1">
-                Element 'ram:ChargeTotalAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:AllowanceTotalAmount)&lt;=1">
-                Element 'ram:AllowanceTotalAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:TaxBasisTotalAmount)&lt;=2">
-                Element 'ram:TaxBasisTotalAmount' may occur at maximum 2 times.</assert>
-            <assert test="count(ram:TaxTotalAmount)&lt;=2">
-                Element 'ram:TaxTotalAmount' may occur at maximum 2 times.</assert>
-            <assert test="count(ram:RoundingAmount)&lt;=1">
-                Element 'ram:RoundingAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:GrandTotalAmount)&lt;=2">
-                Element 'ram:GrandTotalAmount' may occur at maximum 2 times.</assert>
-            <assert test="count(ram:TotalPrepaidAmount)&lt;=1">
-                Element 'ram:TotalPrepaidAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:DuePayableAmount)=1">
-                Element 'ram:DuePayableAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:DuePayableAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount[@currencyID]">
-            <let name="codeValue31" value="@currencyID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=31]/enumeration[@value=$codeValue31]">
-                Value of '@currencyID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrossLineTotalAmount">
-            <report test="true()">
-                Element 'ram:GrossLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:NetIncludingTaxesLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetIncludingTaxesLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:NetLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ProductValueExcludingTobaccoTaxInformationAmount">
-            <report test="true()">
-                Element 'ram:ProductValueExcludingTobaccoTaxInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RetailValueExcludingTaxInformationAmount">
-            <report test="true()">
-                Element 'ram:RetailValueExcludingTaxInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RoundingAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RoundingAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <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>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount">
-            <assert test="@currencyID">
-                Attribute '@currencyID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID]">
-            <let name="codeValue31" value="@currencyID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=31]/enumeration[@value=$codeValue31]">
-                Value of '@currencyID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalAllowanceChargeAmount">
-            <report test="true()">
-                Element 'ram:TotalAllowanceChargeAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalDepositFeeInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalDepositFeeInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalDiscountAmount">
-            <report test="true()">
-                Element 'ram:TotalDiscountAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalRetailValueInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalRetailValueInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:Information)&lt;=1">
-                Element 'ram:Information' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CreditAvailableAmount">
-            <report test="true()">
-                Element 'ram:CreditAvailableAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CreditLimitAmount">
-            <report test="true()">
-                Element 'ram:CreditLimitAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ExpiryDate">
-            <report test="true()">
-                Element 'ram:ExpiryDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:InterestRatePercent">
-            <report test="true()">
-                Element 'ram:InterestRatePercent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:IssuingCompanyName">
-            <report test="true()">
-                Element 'ram:IssuingCompanyName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:MicrochipIndicator">
-            <report test="true()">
-                Element 'ram:MicrochipIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ValidFromDateTime">
-            <report test="true()">
-                Element 'ram:ValidFromDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:VerificationNumeric">
-            <report test="true()">
-                Element 'ram:VerificationNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:GuaranteeMethodCode">
-            <report test="true()">
-                Element 'ram:GuaranteeMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution">
-            <assert test="count(ram:BICID)=1">
-                Element 'ram:BICID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:AustralianBSBID">
-            <report test="true()">
-                Element 'ram:AustralianBSBID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:AustrianBankleitzahlID">
-            <report test="true()">
-                Element 'ram:AustrianBankleitzahlID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:CHIPSParticipantID">
-            <report test="true()">
-                Element 'ram:CHIPSParticipantID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:CHIPSUniversalID">
-            <report test="true()">
-                Element 'ram:CHIPSUniversalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:CanadianPaymentsAssociationID">
-            <report test="true()">
-                Element 'ram:CanadianPaymentsAssociationID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:ClearingSystemName">
-            <report test="true()">
-                Element 'ram:ClearingSystemName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:FedwireRoutingNumberID">
-            <report test="true()">
-                Element 'ram:FedwireRoutingNumberID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:GermanBankleitzahlID">
-            <report test="true()">
-                Element 'ram:GermanBankleitzahlID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:HellenicBankID">
-            <report test="true()">
-                Element 'ram:HellenicBankID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:HongKongBankID">
-            <report test="true()">
-                Element 'ram:HongKongBankID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:IndianFinancialSystemID">
-            <report test="true()">
-                Element 'ram:IndianFinancialSystemID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:IrishNSCID">
-            <report test="true()">
-                Element 'ram:IrishNSCID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:ItalianDomesticID">
-            <report test="true()">
-                Element 'ram:ItalianDomesticID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:JapanFinancialInstitutionCommonID">
-            <report test="true()">
-                Element 'ram:JapanFinancialInstitutionCommonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:LocationFinancialInstitutionAddress">
-            <report test="true()">
-                Element 'ram:LocationFinancialInstitutionAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:NewZealandNCCID">
-            <report test="true()">
-                Element 'ram:NewZealandNCCID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:PolishNationalClearingID">
-            <report test="true()">
-                Element 'ram:PolishNationalClearingID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:PortugueseNCCID">
-            <report test="true()">
-                Element 'ram:PortugueseNCCID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:RussianCentralBankID">
-            <report test="true()">
-                Element 'ram:RussianCentralBankID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:SICID">
-            <report test="true()">
-                Element 'ram:SICID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:SouthAfricanNCCID">
-            <report test="true()">
-                Element 'ram:SouthAfricanNCCID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:SpanishDomesticInterbankingID">
-            <report test="true()">
-                Element 'ram:SpanishDomesticInterbankingID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:SubDivisionBranchFinancialInstitution">
-            <report test="true()">
-                Element 'ram:SubDivisionBranchFinancialInstitution' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:SwissBCID">
-            <report test="true()">
-                Element 'ram:SwissBCID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:UKSortCodeID">
-            <report test="true()">
-                Element 'ram:UKSortCodeID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount">
-            <assert test="count(ram:IBANID)=1">
-                Element 'ram:IBANID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:AccountName">
-            <report test="true()">
-                Element 'ram:AccountName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:ProprietaryID">
-            <report test="true()">
-                Element 'ram:ProprietaryID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerSpecifiedDebtorFinancialInstitution">
-            <report test="true()">
-                Element 'ram:PayerSpecifiedDebtorFinancialInstitution' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PaymentChannelCode">
-            <report test="true()">
-                Element 'ram:PaymentChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PaymentMethodCode">
-            <report test="true()">
-                Element 'ram:PaymentMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SubtotalCalculatedTradeTax">
-            <report test="true()">
-                Element 'ram:SubtotalCalculatedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:AssociatedReferencedDocument">
-            <report test="true()">
-                Element 'ram:AssociatedReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:ConversionRateDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:ConversionRate[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:MarketID">
-            <report test="true()">
-                Element 'ram:MarketID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:SourceCurrencyCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:SourceCurrencyCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:SourceCurrencyCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:SourceCurrencyCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:SourceUnitBasisNumeric">
-            <report test="true()">
-                Element 'ram:SourceUnitBasisNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:TargetCurrencyCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:TargetCurrencyCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:TargetCurrencyCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:TargetCurrencyCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:TargetUnitBaseNumeric">
-            <report test="true()">
-                Element 'ram:TargetUnitBaseNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:UltimatePayeeTradeParty">
-            <report test="true()">
-                Element 'ram:UltimatePayeeTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem">
-            <assert test="count(ram:SpecifiedTradeProduct)=1">
-                Element 'ram:SpecifiedTradeProduct' must occur exactly 1 times.</assert>
-            <assert test="count(ram:SpecifiedLineTradeAgreement)=1">
-                Element 'ram:SpecifiedLineTradeAgreement' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument">
-            <assert test="count(ram:LineID)=1">
-                Element 'ram:LineID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote">
-            <assert test="count(ram:Content)=1">
-                Element 'ram:Content' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:Content[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:Content[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:Subject">
-            <report test="true()">
-                Element 'ram:Subject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode">
-            <let name="codeValue3" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
-                Value of 'ram:SubjectCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:ParentLineID">
-            <report test="true()">
-                Element 'ram:ParentLineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:DescriptionCode">
-            <report test="true()">
-                Element 'ram:DescriptionCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:IncludedSubordinateTradeLineItem">
-            <report test="true()">
-                Element 'ram:IncludedSubordinateTradeLineItem' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement">
-            <assert test="count(ram:NetPriceProductTradePrice)=1">
-                Element 'ram:NetPriceProductTradePrice' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument">
-            <assert test="count(ram:IssuerAssignedID)=1">
-                Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:AttachmentBinaryObject)&lt;=1">
-                Element 'ram:AttachmentBinaryObject' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:ReferenceTypeCode)=1">
-                Element 'ram:ReferenceTypeCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@characterSetCode]">
-            <report test="true()">
-                Attribute @characterSetCode' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@encodingCode]">
-            <report test="true()">
-                Attribute @encodingCode' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@mimeCode]">
-            <let name="codeValue11" value="@mimeCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
-                Value of '@mimeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@uri]">
-            <report test="true()">
-                Attribute @uri' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ApplicableTradeDeliveryTerms">
-            <report test="true()">
-                Element 'ram:ApplicableTradeDeliveryTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerReference">
-            <report test="true()">
-                Element 'ram:BuyerReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerRequisitionerTradeParty">
-            <report test="true()">
-                Element 'ram:BuyerRequisitionerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:DemandForecastReferencedDocument">
-            <report test="true()">
-                Element 'ram:DemandForecastReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice">
-            <assert test="count(ram:ChargeAmount)=1">
-                Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge">
-            <assert test="count(ram:ActualAmount)=1">
-                Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ActualAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ActualAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ActualTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:CalculationPercent">
-            <report test="true()">
-                Element 'ram:CalculationPercent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:CategoryTradeTax">
-            <report test="true()">
-                Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ChargeIndicator/udt:IndicatorString">
-            <report test="true()">
-                Element 'udt:IndicatorString' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:PrepaidIndicator">
-            <report test="true()">
-                Element 'ram:PrepaidIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:ReasonCode">
-            <report test="true()">
-                Element 'ram:ReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:Reason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:Reason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AssociatedReferencedDocument">
-            <report test="true()">
-                Element 'ram:AssociatedReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
-            <let name="codeValue9" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChangeReason">
-            <report test="true()">
-                Element 'ram:ChangeReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:DeliveryTradeLocation">
-            <report test="true()">
-                Element 'ram:DeliveryTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:IncludedTradeTax">
-            <report test="true()">
-                Element 'ram:IncludedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:MaximumQuantity">
-            <report test="true()">
-                Element 'ram:MaximumQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:MinimumQuantity">
-            <report test="true()">
-                Element 'ram:MinimumQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:OrderUnitConversionFactorNumeric">
-            <report test="true()">
-                Element 'ram:OrderUnitConversionFactorNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:TradeComparisonReferencePrice">
-            <report test="true()">
-                Element 'ram:TradeComparisonReferencePrice' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ValiditySpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:ValiditySpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:IncludedSpecifiedMarketplace">
-            <report test="true()">
-                Element 'ram:IncludedSpecifiedMarketplace' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ItemBuyerTradeParty">
-            <report test="true()">
-                Element 'ram:ItemBuyerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ItemSellerTradeParty">
-            <report test="true()">
-                Element 'ram:ItemSellerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice">
-            <assert test="count(ram:ChargeAmount)=1">
-                Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:IncludedTradeTax)&lt;=1">
-                Element 'ram:IncludedTradeTax' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:AppliedTradeAllowanceCharge">
-            <report test="true()">
-                Element 'ram:AppliedTradeAllowanceCharge' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:AssociatedReferencedDocument">
-            <report test="true()">
-                Element 'ram:AssociatedReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
-            <let name="codeValue9" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChangeReason">
-            <report test="true()">
-                Element 'ram:ChangeReason' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:DeliveryTradeLocation">
-            <report test="true()">
-                Element 'ram:DeliveryTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax">
-            <assert test="count(ram:CalculatedAmount)=1">
-                Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:RateApplicablePercent)=1">
-                Element 'ram:RateApplicablePercent' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CalculatedAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CalculatedAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:DueDateTypeCode">
-            <report test="true()">
-                Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:ExemptionReasonCode">
-            <report test="true()">
-                Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:ExemptionReason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:ExemptionReason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:MaximumQuantity">
-            <report test="true()">
-                Element 'ram:MaximumQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:MinimumQuantity">
-            <report test="true()">
-                Element 'ram:MinimumQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:OrderUnitConversionFactorNumeric">
-            <report test="true()">
-                Element 'ram:OrderUnitConversionFactorNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:TradeComparisonReferencePrice">
-            <report test="true()">
-                Element 'ram:TradeComparisonReferencePrice' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ValiditySpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:ValiditySpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:PromotionalDealReferencedDocument">
-            <report test="true()">
-                Element 'ram:PromotionalDealReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument">
-            <report test="true()">
-                Element 'ram:QuotationReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:RequisitionerReferencedDocument">
-            <report test="true()">
-                Element 'ram:RequisitionerReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument">
-            <report test="true()">
-                Element 'ram:SellerOrderReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery">
-            <assert test="count(ram:BilledQuantity)=1">
-                Element 'ram:BilledQuantity' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent">
-            <assert test="count(ram:OccurrenceDateTime)=1">
-                Element 'ram:OccurrenceDateTime' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:DescriptionBinaryObject">
-            <report test="true()">
-                Element 'ram:DescriptionBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:EarliestOccurrenceDateTime">
-            <report test="true()">
-                Element 'ram:EarliestOccurrenceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:LatestOccurrenceDateTime">
-            <report test="true()">
-                Element 'ram:LatestOccurrenceDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceLogisticsLocation">
-            <report test="true()">
-                Element 'ram:OccurrenceLogisticsLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:OccurrenceSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:UnitQuantity">
-            <report test="true()">
-                Element 'ram:UnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDespatchSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualDespatchSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualPickUpSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualPickUpSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualReceiptSupplyChainEvent">
-            <report test="true()">
-                Element 'ram:ActualReceiptSupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:AdditionalReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCode]">
-            <let name="codeValue9" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ChargeFreeQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ChargeFreeQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ChargeFreeQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ChargeFreeQuantity[@unitCode]">
-            <let name="codeValue9" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ConsumptionReportReferencedDocument">
-            <report test="true()">
-                Element 'ram:ConsumptionReportReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchedQuantity">
-            <report test="true()">
-                Element 'ram:DespatchedQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:GrossWeightMeasure">
-            <report test="true()">
-                Element 'ram:GrossWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:IncludedSupplyChainPackaging">
-            <report test="true()">
-                Element 'ram:IncludedSupplyChainPackaging' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:NetWeightMeasure">
-            <report test="true()">
-                Element 'ram:NetWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackageQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackageQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackageQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackageQuantity[@unitCode]">
-            <let name="codeValue9" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackingListReferencedDocument">
-            <report test="true()">
-                Element 'ram:PackingListReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PerPackageUnitQuantity">
-            <report test="true()">
-                Element 'ram:PerPackageUnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ProductUnitQuantity">
-            <report test="true()">
-                Element 'ram:ProductUnitQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivedQuantity">
-            <report test="true()">
-                Element 'ram:ReceivedQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
-            <let name="codeValue10" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:ReferenceTypeCode">
-            <report test="true()">
-                Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:RelatedSupplyChainConsignment">
-            <report test="true()">
-                Element 'ram:RelatedSupplyChainConsignment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:RequestedDeliverySupplyChainEvent">
-            <report test="true()">
-                Element 'ram:RequestedDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:RequestedQuantity">
-            <report test="true()">
-                Element 'ram:RequestedQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipFromTradeParty">
-            <report test="true()">
-                Element 'ram:ShipFromTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
-                Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:SpecifiedDeliveryAdjustment">
-            <report test="true()">
-                Element 'ram:SpecifiedDeliveryAdjustment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:TheoreticalWeightMeasure">
-            <report test="true()">
-                Element 'ram:TheoreticalWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty">
-            <assert test="count(ram:ID)&lt;=1">
-                Element 'ram:ID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:DefinedTradeContact)&lt;=1">
-                Element 'ram:DefinedTradeContact' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:URIUniversalCommunication)&lt;=1">
-                Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
-                Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:DepartmentName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:DirectTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:InstantMessagingUniversalCommunication">
-            <report test="true()">
-                Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:JobTitle">
-            <report test="true()">
-                Element 'ram:JobTitle' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:MobileTelephoneUniversalCommunication">
-            <report test="true()">
-                Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:PersonID">
-            <report test="true()">
-                Element 'ram:PersonID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:PersonName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:Responsibility">
-            <report test="true()">
-                Element 'ram:Responsibility' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:SpecifiedContactPerson">
-            <report test="true()">
-                Element 'ram:SpecifiedContactPerson' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:SpecifiedNote">
-            <report test="true()">
-                Element 'ram:SpecifiedNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
-            <assert test="count(ram:CompleteNumber)=1">
-                Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:CompleteNumber[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelexUniversalCommunication">
-            <report test="true()">
-                Element 'ram:TelexUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:VOIPUniversalCommunication">
-            <report test="true()">
-                Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:EndPointURIUniversalCommunication">
-            <report test="true()">
-                Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress">
-            <assert test="count(ram:CountryID)=1">
-                Element 'ram:CountryID' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-                Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-            <report test="true()">
-                Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-            <report test="true()">
-                Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-            <report test="true()">
-                Element 'ram:BuildingName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-            <report test="true()">
-                Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CareOf">
-            <report test="true()">
-                Element 'ram:CareOf' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-            <report test="true()">
-                Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountryName">
-            <report test="true()">
-                Element 'ram:CountryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-            <report test="true()">
-                Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-            <report test="true()">
-                Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineFive">
-            <report test="true()">
-                Element 'ram:LineFive' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineFour">
-            <report test="true()">
-                Element 'ram:LineFour' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-            <report test="true()">
-                Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:StreetName">
-            <report test="true()">
-                Element 'ram:StreetName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:RoleCode">
-            <report test="true()">
-                Element 'ram:RoleCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-            <report test="true()">
-                Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-            <report test="true()">
-                Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-            <report test="true()">
-                Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-            <report test="true()">
-                Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
-            <let name="codeValue13" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication">
-            <assert test="count(ram:URIID)=1">
-                Element 'ram:URIID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:ChannelCode">
-            <report test="true()">
-                Element 'ram:ChannelCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
-            <report test="true()">
-                Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
-            <let name="codeValue12" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement">
-            <assert test="count(ram:ApplicableTradeTax)&gt;=1">
-                Element 'ram:ApplicableTradeTax' must occur at least 1 times.</assert>
-            <assert test="count(ram:SpecifiedTradeSettlementLineMonetarySummation)=1">
-                Element 'ram:SpecifiedTradeSettlementLineMonetarySummation' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument">
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject">
-            <report test="true()">
-                Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:CopyIndicator">
-            <report test="true()">
-                Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:EffectiveSpecifiedPeriod">
-            <report test="true()">
-                Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime">
-            <report test="true()">
-                Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:GlobalID">
-            <report test="true()">
-                Element 'ram:GlobalID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:Information">
-            <report test="true()">
-                Element 'ram:Information' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerTradeParty">
-            <report test="true()">
-                Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:LineID">
-            <report test="true()">
-                Element 'ram:LineID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:PreviousRevisionID">
-            <report test="true()">
-                Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:RevisionID">
-            <report test="true()">
-                Element 'ram:RevisionID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:SectionName">
-            <report test="true()">
-                Element 'ram:SectionName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:StatusCode">
-            <report test="true()">
-                Element 'ram:StatusCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode">
-            <let name="codeValue16" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=16]/enumeration[@value=$codeValue16]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:URIID">
-            <report test="true()">
-                Element 'ram:URIID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax">
-            <assert test="count(ram:CalculatedAmount)&lt;=1">
-                Element 'ram:CalculatedAmount' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:TypeCode)=1">
-                Element 'ram:TypeCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:CategoryCode)=1">
-                Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:AllowanceChargeBasisAmount">
-            <report test="true()">
-                Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount">
-            <report test="true()">
-                Element 'ram:BasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedRate">
-            <report test="true()">
-                Element 'ram:CalculatedRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculationSequenceNumeric">
-            <report test="true()">
-                Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
-            <let name="codeValue14" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
-                Value of 'ram:CategoryCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryName">
-            <report test="true()">
-                Element 'ram:CategoryName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CurrencyCode">
-            <report test="true()">
-                Element 'ram:CurrencyCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CustomsDutyIndicator">
-            <report test="true()">
-                Element 'ram:CustomsDutyIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode">
-            <report test="true()">
-                Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
-            <let name="codeValue15" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
-                Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:Jurisdiction">
-            <report test="true()">
-                Element 'ram:Jurisdiction' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:LineTotalBasisAmount">
-            <report test="true()">
-                Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:PlaceApplicableTradeLocation">
-            <report test="true()">
-                Element 'ram:PlaceApplicableTradeLocation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:RateApplicablePercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:SellerPayableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:SellerRefundableTaxSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ServiceSupplyTradeCountry">
-            <report test="true()">
-                Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:SpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TaxBasisAllowanceRate">
-            <report test="true()">
-                Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate">
-            <report test="true()">
-                Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:Type">
-            <report test="true()">
-                Element 'ram:Type' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:CompleteDateTime">
-            <report test="true()">
-                Element 'ram:CompleteDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:ContinuousIndicator">
-            <report test="true()">
-                Element 'ram:ContinuousIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:Description">
-            <report test="true()">
-                Element 'ram:Description' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:DurationMeasure">
-            <report test="true()">
-                Element 'ram:DurationMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:InclusiveIndicator">
-            <report test="true()">
-                Element 'ram:InclusiveIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:OpenIndicator">
-            <report test="true()">
-                Element 'ram:OpenIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:PurposeCode">
-            <report test="true()">
-                Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:SeasonCode">
-            <report test="true()">
-                Element 'ram:SeasonCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateFlexibilityCode">
-            <report test="true()">
-                Element 'ram:StartDateFlexibilityCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTime">
-            <report test="true()">
-                Element 'udt:DateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
-            <let name="codeValue2" value="@format"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-                Value of '@format' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:DiscountIndicator">
-            <report test="true()">
-                Element 'ram:DiscountIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceIssuerReference">
-            <report test="true()">
-                Element 'ram:InvoiceIssuerReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument">
-            <report test="true()">
-                Element 'ram:InvoiceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:PayableSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PayableSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:PaymentReference">
-            <report test="true()">
-                Element 'ram:PaymentReference' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:PurchaseSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:PurchaseSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:AmountTypeCode">
-            <report test="true()">
-                Element 'ram:AmountTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:CostReferenceDimensionPattern">
-            <report test="true()">
-                Element 'ram:CostReferenceDimensionPattern' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:SetTriggerCode">
-            <report test="true()">
-                Element 'ram:SetTriggerCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SalesSpecifiedTradeAccountingAccount">
-            <report test="true()">
-                Element 'ram:SalesSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedFinancialAdjustment">
-            <report test="true()">
-                Element 'ram:SpecifiedFinancialAdjustment' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedLogisticsServiceCharge">
-            <report test="true()">
-                Element 'ram:SpecifiedLogisticsServiceCharge' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge">
-            <assert test="count(ram:ChargeIndicator)=1">
-                Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ActualAmount)=1">
-                Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualTradeCurrencyExchange">
-            <report test="true()">
-                Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:BasisQuantity">
-            <report test="true()">
-                Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CalculationPercent[@format]">
-            <report test="true()">
-                Attribute @format' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax">
-            <report test="true()">
-                Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator/udt:IndicatorString">
-            <report test="true()">
-                Element 'udt:IndicatorString' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:PrepaidIndicator">
-            <report test="true()">
-                Element 'ram:PrepaidIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ReasonCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:Reason[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:SequenceNumeric">
-            <report test="true()">
-                Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:UnitBasisAmount">
-            <report test="true()">
-                Element 'ram:UnitBasisAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradePaymentTerms">
-            <report test="true()">
-                Element 'ram:SpecifiedTradePaymentTerms' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementFinancialCard">
-            <report test="true()">
-                Element 'ram:SpecifiedTradeSettlementFinancialCard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation">
-            <assert test="count(ram:LineTotalAmount)=1">
-                Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
-            <assert test="count(ram:TotalAllowanceChargeAmount)&lt;=1">
-                Element 'ram:TotalAllowanceChargeAmount' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:AllowanceTotalAmount">
-            <report test="true()">
-                Element 'ram:AllowanceTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:ChargeTotalAmount">
-            <report test="true()">
-                Element 'ram:ChargeTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:GrandTotalAmount">
-            <report test="true()">
-                Element 'ram:GrandTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:GrossLineTotalAmount">
-            <report test="true()">
-                Element 'ram:GrossLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:InformationAmount">
-            <report test="true()">
-                Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:NetIncludingTaxesLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetIncludingTaxesLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:NetLineTotalAmount">
-            <report test="true()">
-                Element 'ram:NetLineTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:ProductWeightLossInformationAmount">
-            <report test="true()">
-                Element 'ram:ProductWeightLossInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TaxBasisTotalAmount">
-            <report test="true()">
-                Element 'ram:TaxBasisTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TaxTotalAmount">
-            <report test="true()">
-                Element 'ram:TaxTotalAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TotalAllowanceChargeAmount[@currencyCodeListVersionID]">
-            <report test="true()">
-                Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TotalAllowanceChargeAmount[@currencyID]">
-            <report test="true()">
-                Attribute @currencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TotalRetailValueInformationAmount">
-            <report test="true()">
-                Element 'ram:TotalRetailValueInformationAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SubtotalCalculatedTradeTax">
-            <report test="true()">
-                Element 'ram:SubtotalCalculatedTradeTax' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:TotalAdjustmentAmount">
-            <report test="true()">
-                Element 'ram:TotalAdjustmentAmount' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct">
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:AdditionalReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:AdditionalReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableMaterialGoodsCharacteristic">
-            <report test="true()">
-                Element 'ram:ApplicableMaterialGoodsCharacteristic' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic">
-            <assert test="count(ram:Description)=1">
-                Element 'ram:Description' must occur exactly 1 times.</assert>
-            <assert test="count(ram:Value)=1">
-                Element 'ram:Value' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ApplicableProductCharacteristicCondition">
-            <report test="true()">
-                Element 'ram:ApplicableProductCharacteristicCondition' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ApplicableReferencedStandard">
-            <report test="true()">
-                Element 'ram:ApplicableReferencedStandard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ContentTypeCode">
-            <report test="true()">
-                Element 'ram:ContentTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:MeasurementMethodCode">
-            <report test="true()">
-                Element 'ram:MeasurementMethodCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode">
-            <let name="codeValue5" value="."/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
-                Value of 'ram:TypeCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@listID]">
-            <report test="true()">
-                Attribute @listID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@listVersionID]">
-            <report test="true()">
-                Attribute @listVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueCode">
-            <report test="true()">
-                Element 'ram:ValueCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueDateTime">
-            <report test="true()">
-                Element 'ram:ValueDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueIndicator">
-            <report test="true()">
-                Element 'ram:ValueIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueMeasure[@unitCodeListVersionID]">
-            <report test="true()">
-                Attribute @unitCodeListVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueMeasure[@unitCode]">
-            <let name="codeValue6" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:ValueSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:ValueSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:Value[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:Value[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:AreaDensityMeasure">
-            <report test="true()">
-                Element 'ram:AreaDensityMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BrandName">
-            <report test="true()">
-                Element 'ram:BrandName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BrandOwnerTradeParty">
-            <report test="true()">
-                Element 'ram:BrandOwnerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:CertificationEvidenceReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:CertificationEvidenceReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ColourCode">
-            <report test="true()">
-                Element 'ram:ColourCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ColourDescription">
-            <report test="true()">
-                Element 'ram:ColourDescription' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification">
-            <assert test="count(ram:ClassCode)=1">
-                Element 'ram:ClassCode' must occur exactly 1 times.</assert>
-            <assert test="count(ram:ClassName)&lt;=1">
-                Element 'ram:ClassName' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ApplicableReferencedStandard">
-            <report test="true()">
-                Element 'ram:ApplicableReferencedStandard' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode">
-            <let name="codeValue7" value="@listID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
-                Value of 'ram:ClassCode' is not allowed.</assert>
-            <assert test="@listID">
-                Attribute '@listID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listAgencyID]">
-            <report test="true()">
-                Attribute @listAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listAgencyName]">
-            <report test="true()">
-                Attribute @listAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listID]">
-            <let name="codeValue8" value="@listID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
-                Value of '@listID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listName]">
-            <report test="true()">
-                Attribute @listName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listSchemeURI]">
-            <report test="true()">
-                Attribute @listSchemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listURI]">
-            <report test="true()">
-                Attribute @listURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@name]">
-            <report test="true()">
-                Attribute @name' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassName[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassName[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassProductCharacteristic">
-            <report test="true()">
-                Element 'ram:ClassProductCharacteristic' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:SubClassCode">
-            <report test="true()">
-                Element 'ram:SubClassCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:SystemID">
-            <report test="true()">
-                Element 'ram:SystemID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:SystemName">
-            <report test="true()">
-                Element 'ram:SystemName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Designation">
-            <report test="true()">
-                Element 'ram:Designation' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DrainedNetWeightMeasure">
-            <report test="true()">
-                Element 'ram:DrainedNetWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:EndItemName">
-            <report test="true()">
-                Element 'ram:EndItemName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:EndItemTypeCode">
-            <report test="true()">
-                Element 'ram:EndItemTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:FormattedCancellationAnnouncedLaunchDateTime">
-            <report test="true()">
-                Element 'ram:FormattedCancellationAnnouncedLaunchDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:FormattedLatestProductDataChangeDateTime">
-            <report test="true()">
-                Element 'ram:FormattedLatestProductDataChangeDateTime' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeID]">
-            <let name="codeValue4" value="@schemeID"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
-                Value of '@schemeID' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GrossWeightMeasure">
-            <report test="true()">
-                Element 'ram:GrossWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct">
-            <assert test="count(ram:GlobalID)&lt;=1">
-                Element 'ram:GlobalID' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:Name)=1">
-                Element 'ram:Name' must occur exactly 1 times.</assert>
-            <assert test="count(ram:Description)&lt;=1">
-                Element 'ram:Description' may occur at maximum 1 times.</assert>
-            <assert test="count(ram:UnitQuantity)&lt;=1">
-                Element 'ram:UnitQuantity' may occur at maximum 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:BuyerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:BuyerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:BuyerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:BuyerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:BuyerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:BuyerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:BuyerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:Description[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:Description[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:GlobalID">
-            <assert test="@schemeID">
-                Attribute '@schemeID' is required in this context.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:GlobalID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:GlobalID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:GlobalID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:GlobalID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:GlobalID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:GlobalID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:ID">
-            <report test="true()">
-                Element 'ram:ID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:IndustryAssignedID">
-            <report test="true()">
-                Element 'ram:IndustryAssignedID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:ManufacturerAssignedID">
-            <report test="true()">
-                Element 'ram:ManufacturerAssignedID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:RelationshipTypeCode">
-            <report test="true()">
-                Element 'ram:RelationshipTypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:SellerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:SellerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:SellerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:SellerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:SellerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:SellerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:SellerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:UnitQuantity[@unitCodeListAgencyID]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:UnitQuantity[@unitCodeListAgencyName]">
-            <report test="true()">
-                Attribute @unitCodeListAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:UnitQuantity[@unitCodeListID]">
-            <report test="true()">
-                Attribute @unitCodeListID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:UnitQuantity[@unitCode]">
-            <let name="codeValue9" value="@unitCode"/>
-            <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
-                Value of '@unitCode' is not allowed.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IndividualTradeProductInstance">
-            <report test="true()">
-                Element 'ram:IndividualTradeProductInstance' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:InformationNote">
-            <report test="true()">
-                Element 'ram:InformationNote' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:InspectionReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:InspectionReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:LegalRightsOwnerTradeParty">
-            <report test="true()">
-                Element 'ram:LegalRightsOwnerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:LinearSpatialDimension">
-            <report test="true()">
-                Element 'ram:LinearSpatialDimension' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:MSDSReferenceReferencedDocument">
-            <report test="true()">
-                Element 'ram:MSDSReferenceReferencedDocument' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ManufacturerAssignedID">
-            <report test="true()">
-                Element 'ram:ManufacturerAssignedID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ManufacturerTradeParty">
-            <report test="true()">
-                Element 'ram:ManufacturerTradeParty' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:MaximumLinearSpatialDimension">
-            <report test="true()">
-                Element 'ram:MaximumLinearSpatialDimension' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:MinimumLinearSpatialDimension">
-            <report test="true()">
-                Element 'ram:MinimumLinearSpatialDimension' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Name[@languageID]">
-            <report test="true()">
-                Attribute @languageID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Name[@languageLocaleID]">
-            <report test="true()">
-                Attribute @languageLocaleID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:NetWeightMeasure">
-            <report test="true()">
-                Element 'ram:NetWeightMeasure' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry">
-            <assert test="count(ram:ID)=1">
-                Element 'ram:ID' must occur exactly 1 times.</assert>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:ID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:ID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:ID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:Name">
-            <report test="true()">
-                Element 'ram:Name' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:SubordinateTradeCountrySubDivision">
-            <report test="true()">
-                Element 'ram:SubordinateTradeCountrySubDivision' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:PresentationSpecifiedBinaryFile">
-            <report test="true()">
-                Element 'ram:PresentationSpecifiedBinaryFile' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ProductGroupID">
-            <report test="true()">
-                Element 'ram:ProductGroupID' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeAgencyID]">
-            <report test="true()">
-                Attribute @schemeAgencyID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeAgencyName]">
-            <report test="true()">
-                Attribute @schemeAgencyName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeDataURI]">
-            <report test="true()">
-                Attribute @schemeDataURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeID]">
-            <report test="true()">
-                Attribute @schemeID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeName]">
-            <report test="true()">
-                Attribute @schemeName' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeURI]">
-            <report test="true()">
-                Attribute @schemeURI' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeVersionID]">
-            <report test="true()">
-                Attribute @schemeVersionID' marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SubBrandName">
-            <report test="true()">
-                Element 'ram:SubBrandName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:TradeName">
-            <report test="true()">
-                Element 'ram:TradeName' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:TypeCode">
-            <report test="true()">
-                Element 'ram:TypeCode' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:UseDescription">
-            <report test="true()">
-                Element 'ram:UseDescription' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:VariableMeasureIndicator">
-            <report test="true()">
-                Element 'ram:VariableMeasureIndicator' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
-    <pattern>
-        <rule context="/rsm:CrossIndustryInvoice/rsm:ValuationBreakdownStatement">
-            <report test="true()">
-                Element 'rsm:ValuationBreakdownStatement' is marked as not used in the given context.</report>
-        </rule>
-    </pattern>
+<schema xmlns="http://purl.oclc.org/dsdl/schematron"
+    queryBinding="xslt2"
+    schemaVersion="iso">
+  <title>Schema for Factur-X; 1.0.07; EN16931-CONFORMANT-EXTENDED</title>
+  <ns uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" prefix="rsm"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" prefix="qdt"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" prefix="ram"/>
+  <ns uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" prefix="udt"/>
+  <pattern>
+    <rule context="//ram:AdditionalReferencedDocument">
+      <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
+	[BR-52]-Each Additional supporting document (BG-24) shall contain a Supporting document reference (BT-122).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="(ram:BasisAmount)">
+	[BR-45]-Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).</assert>
+      <assert test="(ram:CalculatedAmount)">
+	[BR-46]-Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).</assert>
+      <assert test="(ram:CategoryCode)">
+	[BR-47]-Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).</assert>
+      <assert test="(ram:RateApplicablePercent) or (ram:CategoryCode = &apos;O&apos;)">
+	[BR-48]-Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.</assert>
+      <assert test="((ram:TaxPointDate) and not (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and not (ram:DueDateTypeCode))">
+	[BR-CO-03]-Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.</assert>
+      <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-19]-The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2.</assert>
+      <assert test="string-length(substring-after(ram:CalculatedAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-20]-The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;Z&apos;]">
+      <assert test="for &#13;&#10;				$basisAmount in xs:decimal(../ram:BasisAmount),&#13;&#10;				$lineAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), &#13;&#10;			    $chargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$logisticChargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:AppliedAmount)) * 100) div 100),&#13;&#10;				$allowanceAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$calculatedAmount in xs:decimal($lineAmount + $chargeAmount + $logisticChargeAmount - $allowanceAmount),&#13;&#10;				$nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;])),&#13;&#10;				$nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;])),&#13;&#10;				$nbLogisticCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;Z&apos;])),&#13;&#10;				$tolerance in xs:decimal(0.01),&#13;&#10;				$maxTolerance in $tolerance * ($nbLineItems + $nbAllowancesOrCharges + $nbLogisticCharges),&#13;&#10;				$diff in xs:decimal($basisAmount - $calculatedAmount),&#13;&#10;				$abs in xs:decimal(abs($diff))&#13;&#10;            return&#13;&#10;                $abs le $maxTolerance">
+	[BR-FXEXT-Z-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to âZâ ("Zero Rated"), Absolute Value of (VAT category taxable amount (BT-116) - â Invoice line net amounts (BT-131) + Î£ Document level allowance amounts (BT-92) - Î£ Document level charge amounts (BT-99) - Î£ Logistics Service fee amounts (BT-x-272)) &lt;= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is "Zero Rated" (Z).</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-Z-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" shall equal 0 (zero).</assert>
+      <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
+	[BR-Z-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.=&apos;S&apos;]">
+      <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
+	[BR-S-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+      <assert test="every $rate in ../ram:RateApplicablePercent/xs:decimal(.) satisfies (&#13;&#10;            for &#13;&#10;				$basisAmount in xs:decimal(../ram:BasisAmount),&#13;&#10;				$lineAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;S&apos; and ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), &#13;&#10;			    $chargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;S&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$logisticChargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;S&apos; and ram:AppliedTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:AppliedAmount)) * 100) div 100),&#13;&#10;				$allowanceAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;S&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$calculatedAmount in xs:decimal($lineAmount + $chargeAmount + $logisticChargeAmount - $allowanceAmount),&#13;&#10;				$nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = &apos;S&apos; and ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/xs:decimal(ram:RateApplicablePercent) =$rate])),&#13;&#10;				$nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:CategoryTradeTax/ram:CategoryCode=&apos;S&apos; and ram:CategoryTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate])),&#13;&#10;				$nbLogisticCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;S&apos; and ram:AppliedTradeTax/xs:decimal(ram:RateApplicablePercent)=$rate])),&#13;&#10;				$tolerance in xs:decimal(0.01),&#13;&#10;				$maxTolerance in $tolerance * ($nbLineItems + $nbAllowancesOrCharges + $nbLogisticCharges),&#13;&#10;				$diff in xs:decimal($basisAmount - $calculatedAmount),&#13;&#10;				$abs in xs:decimal(abs($diff))&#13;&#10;            return&#13;&#10;                $abs le $maxTolerance&#13;&#10;        )">
+	[BR-FXEXT-S-08]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is equal to âSâ ("Standard rated"), Absolute Value of (VAT category taxable amount (BT-116) - â Invoice line net amounts (BT-131) + Î£ Document level allowance amounts (BT-92) - Î£ Document level charges amounts (BT-99) - Î£ Logistics Service fee amounts (BT-x-272)) &lt;= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is "Standard rated" (S) and the VAT rate (BT-152, BT-96, BT-103, BT-X-274) equals the VAT category rate (BT-119).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;]">
+      <assert test="for&#13;&#10;	$BT117 in xs:decimal(ram:CalculatedAmount),	&#13;&#10;	$BT116 in xs:decimal(ram:BasisAmount),&#13;&#10;	$BT118 in xs:decimal(ram:RateApplicablePercent),&#13;&#10;	$calculatedAmount in xs:decimal(round($BT116 * $BT118 * xs:decimal(100)) div xs:decimal(100*100)),&#13;&#10;	$nbLineItems in xs:decimal(count(../../ram:IncludedSupplyChainTradeLineItem)),&#13;&#10;	$nbAllowanceItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])),&#13;&#10;	$nbChargeItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]) + count(../ram:SpecifiedLogisticsServiceCharge)),&#13;&#10;	$tolerance in xs:decimal(0.01),&#13;&#10;	$maxTolerance in $tolerance * ($nbLineItems + $nbAllowanceItems + $nbChargeItems),&#13;&#10;	$diff in xs:decimal($BT117 - $calculatedAmount),&#13;&#10;	$abs in xs:decimal(abs($diff))&#13;&#10;return&#13;&#10;	$abs le $maxTolerance">
+	[BR-FXEXT-S-09]-For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is equal to âSâ ("Standard rated"), Absolute Value of (VAT  category  tax  amount  (BT-117) - VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119)/100) &lt;= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is " Standard rated " (S), and the VAT rate (BT-152, BT-96, BT-103, BT-X-274) equals the VAT category rate (BT-119).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
+      <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
+	[BR-29]-If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).</assert>
+      <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
+	[BR-CO-19]-If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator=&apos;false&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-31]-Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).</assert>
+      <assert test="(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-32]-Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-33]-Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).</assert>
+      <assert test="true()">
+	[BR-CO-05]-Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-21]-Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-01]-The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-02]-The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator=&apos;true&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-36]-Each Document level charge (BG-21) shall have a Document level charge amount (BT-99).</assert>
+      <assert test="(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-37]-Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-38]-Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).</assert>
+      <assert test="true()">
+	[BR-CO-06]-Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-22]-Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-05]-The allowed maximum number of decimals for the Document level charge amount (BT-99) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-06]-The allowed maximum number of decimals for the Document level charge base amount (BT-100) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableProductCharacteristic">
+      <assert test="(ram:Description) and (ram:Value)">
+	[BR-54]-Each Item attribute (BG-32) shall contain an Item attribute name (BT-160) and an Item attribute value (BT-161).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:ApplicableTradeSettlementFinancialCard">
+      <assert test="string-length(ram:ID)&lt;=10">
+	[BR-51]-In accordance with card payments security standards an invoice should never include a full card primary account number (BT-87). At the moment PCI Security Standards Council has defined that the first 6 digits and last 4 digits are the maximum number of digits to be shown.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:AssociatedDocumentLineDocument/ram:IncludedNote[ram:SubjectCode]">
+      <assert test="(ram:ContentCode) or (ram:Content)">
+	[BR-FXEXT-02]-If the invoice line item free text subject code (BT-X-10) is specified, either the coded invoice line item free text (BT-X-9) or the invoice line item free text (BT-127) must be specified, or both. If both BT-X-9 and BT-127 are specified, both must have the same meaning.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:IncludedSupplyChainTradeLineItem">
+      <assert test="(ram:AssociatedDocumentLineDocument/ram:LineID!=&apos;&apos;)">
+	[BR-21]-Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).</assert>
+      <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)">
+	[BR-22]-Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).</assert>
+      <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)">
+	[BR-23]-An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).</assert>
+      <assert test="(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)">
+	[BR-24]-Each Invoice line (BG-25) shall have an Invoice line net amount (BT-131).</assert>
+      <assert test="(ram:SpecifiedTradeProduct/ram:Name!=&apos;&apos;)">
+	[BR-25]-Each Invoice line (BG-25) shall contain the Item name (BT-153).</assert>
+      <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)">
+	[BR-26]-Each Invoice line (BG-25) shall contain the Item net price (BT-146).</assert>
+      <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount) &gt;= 0">
+	[BR-27]-The Item net price (BT-146) shall NOT be negative.</assert>
+      <assert test="(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount &gt;= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)">
+	[BR-28]-The Item gross price (BT-148) shall NOT be negative.</assert>
+      <assert test="ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID!=&apos;&apos; or not (ram:SpecifiedTradeProduct/ram:GlobalID)">
+	[BR-64]-The Item standard identifier (BT-157) shall have a Scheme identifier.</assert>
+      <assert test="(ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode/@listID!=&apos;&apos;) or not (ram:SpecifiedTradeProduct/ram:DesignatedProductClassification)">
+	[BR-65]-The Item classification identifier (BT-158) shall have a Scheme identifier.</assert>
+      <assert test="(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[upper-case(ram:TypeCode) = &apos;VAT&apos;]/ram:CategoryCode)">
+	[BR-CO-04]-Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).</assert>
+      <assert test="string-length(substring-after(ram:SpecifiedTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-23]-The allowed maximum number of decimals for the Invoice line net amount (BT-131) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:PayeeTradeParty">
+      <assert test="(ram:Name) and (not(ram:Name = ../ram:SellerTradeParty/ram:Name) and not(ram:ID = ../ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))">
+	[BR-17]-The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SellerTaxRepresentativeTradeParty">
+      <assert test="(ram:Name)">
+	[BR-18]-The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:PostalTradeAddress)">
+	[BR-19]-The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:PostalTradeAddress/ram:CountryID)">
+	[BR-20]-The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
+      <assert test="(ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]!=&apos;&apos;)">
+	[BR-56]-Each Seller tax representative party (BG-11) shall have a Seller tax representative VAT identifier (BT-63).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SellerTradeParty">
+      <assert test="(ram:ID) or (ram:GlobalID) or (ram:SpecifiedLegalOrganization/ram:ID) or (ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;])">
+	[BR-CO-26]-In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod">
+      <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
+	[BR-30]-If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).</assert>
+      <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
+	[BR-CO-20]-If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = &apos;false&apos;]">
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-42]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = &apos;false&apos;]&#13;&#10;">
+      <assert test="(../ram:ActualAmount)">
+	[BR-41]-Each Invoice line allowance (BG-27) shall have an Invoice line allowance amount (BT-136).</assert>
+      <assert test="true()">
+	[BR-CO-07]-Invoice line allowance reason code (BT-140) and Invoice line allowance reason (BT-139) shall indicate the same type of allowance reason.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-23]-Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-24]-The allowed maximum number of decimals for the Invoice line allowance amount (BT-136) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-25]-The allowed maximum number of decimals for the Invoice line allowance base amount (BT-137) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ChargeIndicator[udt:Indicator = &apos;true&apos;]">
+      <assert test="(../ram:ActualAmount)">
+	[BR-43]-Each Invoice line charge (BG-28) shall have an Invoice line charge amount (BT-141).</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-44]-Each Invoice line charge (BG-28) shall have an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145).</assert>
+      <assert test="true()">
+	[BR-CO-08]-Invoice line charge reason code (BT-145) and Invoice line charge reason (BT-144) shall indicate the same type of charge reason.</assert>
+      <assert test="(../ram:Reason) or (../ram:ReasonCode)">
+	[BR-CO-24]-Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.</assert>
+      <assert test="string-length(substring-after(../ram:ActualAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-27]-The allowed maximum number of decimals for the Invoice line charge amount (BT-141) is 2.</assert>
+      <assert test="string-length(substring-after(../ram:BasisAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-28]-The allowed maximum number of decimals for the Invoice line charge base amount (BT-142) is 2.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]">
+      <assert test="contains(&apos; 1A AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH EL ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS XI YE YT ZA ZM ZW &apos;, concat(&apos; &apos;, substring(.,1,2), &apos; &apos;))">
+	[BR-CO-09]-The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix âELâ.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTaxRegistration/ram:ID[not(ancestor::ram:SellerTradeParty)]">
+      <assert test="@schemeID=&apos;VA&apos;">
+	[BR-FXEXT-03]-Only a VAT registration ID may be provided for the following business partners: the line level Ship-To (BT-X-66), the line level Ultimate-Ship-To (BT-X-84), the Sales-Agent (BT-X-340), the Buyer-Tax-Representative (BT-X-367), the Product-Enduser (BT-X-144), the Buyer-Agent (BT-X-411), the document level Ship-To (BT-X-161), the document level Ultimate-Ship-To (BT-X-180), the Ship-From (BT-X-199), the Invoicer (BT-X-223), the Invoicee (BT-X-242), the document level Payee (BT-X-257), the Payer (BT-X-481), or the payment-term-specific Payee (BT-X-509).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge">
+      <assert test="(ram:ChargeIndicator)">
+	[BR-66]-Each Specified Trade Allowance Charge (BG-20)(BG-21) shall contain a Charge Indicator.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT", the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Intra-community supply" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-06]-A Document level allowance (BG-20) where VAT category code (BT-95) is "Not subject to VAT" shall not contain a Document level allowance VAT rate (BT-96).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-03]-An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-06]-In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT", the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-07]-A Document level charge (BG-21) where the VAT category code (BT-102) is "Not subject to VAT" shall not contain a Document level charge VAT rate (BT-103).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-04]-An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-04]-An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-07]-In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Zero rated" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation">
+      <assert test="for $calculatedAmount in xs:decimal(round(sum(../../ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount) * xs:decimal(100)) div xs:decimal(100)),&#13;&#10;            $totalAmount in xs:decimal(ram:LineTotalAmount),&#13;&#10;            $nbLineItems in xs:decimal(count(../../ram:IncludedSupplyChainTradeLineItem)),&#13;&#10;            $tolerance in xs:decimal(0.01),&#13;&#10;            $maxTolerance in $nbLineItems * $tolerance,&#13;&#10;            $diff in xs:decimal($totalAmount - $calculatedAmount),&#13;&#10;            $abs in xs:decimal(abs($diff))&#13;&#10;        return&#13;&#10;        $abs le $maxTolerance">
+	[BR-FXEXT-CO-10]-Absolute Value of (Sum of Invoice line net amount (BT-106) - Î£ Invoice line net amounts (BT-131))&lt;= 0,01 * Number of line net amounts (BT-131).</assert>
+      <assert test="(ram:LineTotalAmount)">
+	[BR-12]-An Invoice shall have the Sum of Invoice line net amount (BT-106).</assert>
+      <assert test="(ram:TaxBasisTotalAmount)">
+	[BR-13]-An Invoice shall have the Invoice total amount without VAT (BT-109).</assert>
+      <assert test="(ram:GrandTotalAmount)">
+	[BR-14]-An Invoice shall have the Invoice total amount with VAT (BT-112).</assert>
+      <assert test="(ram:DuePayableAmount)">
+	[BR-15]-An Invoice shall have the Amount due for payment (BT-115).</assert>
+      <assert test="for $calculatedAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:ActualAmount)* 10 * 10 ) div 100),&#13;&#10;            $totalAmount in xs:decimal(ram:AllowanceTotalAmount),&#13;&#10;            $nbAllowanceItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])),&#13;&#10;            $tolerance in xs:decimal(0.01),&#13;&#10;            $maxTolerance in $nbAllowanceItems * $tolerance,&#13;&#10;            $diff in xs:decimal($totalAmount - $calculatedAmount),&#13;&#10;            $abs in xs:decimal(abs($diff))&#13;&#10;        return&#13;&#10;        $abs le $maxTolerance or (not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]) and not (ram:AllowanceTotalAmount))">
+	[BR-FXEXT-CO-11]-Absolute Value of (Sum of allowances on document level (BT-107) - Î£ Document level allowance amounts (BT-92))&lt;= 0,01 * Number of Document level allowance amounts (BT-92).</assert>
+      <assert test="for $calculatedAmount in xs:decimal(xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:ActualAmount)* 100 ) div 100)+ xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100)),&#13;&#10;            $totalAmount in xs:decimal(ram:ChargeTotalAmount),&#13;&#10;                        $nbChargeItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]) + count(../ram:SpecifiedLogisticsServiceCharge)),&#13;&#10;            $tolerance in xs:decimal(0.01),&#13;&#10;            $maxTolerance in $nbChargeItems * $tolerance,&#13;&#10;            $diff in xs:decimal($totalAmount - $calculatedAmount),&#13;&#10;            $abs in xs:decimal(abs($diff))&#13;&#10;        return&#13;&#10;        $abs le $maxTolerance or (not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;])and not (ram:ChargeTotalAmount))">
+	[BR-FXEXT-CO-12]-Absolute Value of (Sum of charges on document level (BT-108) - Î£ Document level charge amounts (BT-99) - Î£ Logistics Service fee amounts (BT-x-272))&lt;= 0,01 * (Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)).</assert>
+      <assert test="for $BT109 in xs:decimal(ram:TaxBasisTotalAmount),&#13;&#10;			$BT131Sum in xs:decimal(round(sum(../../ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount) * xs:decimal(100)) div xs:decimal(100)),&#13;&#10;			$BT92Sum in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:ActualAmount)* 10 * 10 ) div 100),&#13;&#10;			$BT99Sum in xs:decimal(xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:ActualAmount)* 100 ) div 100)+ xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100)),&#13;&#10;			$nbLineItems in xs:decimal(count(../../ram:IncludedSupplyChainTradeLineItem)),&#13;&#10;			$nbAllowanceItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])),&#13;&#10;			$nbChargeItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]) + count(../ram:SpecifiedLogisticsServiceCharge)),&#13;&#10;            $tolerance in xs:decimal(0.01),&#13;&#10;            $maxTolerance in $tolerance * ($nbLineItems + $nbAllowanceItems + $nbChargeItems),&#13;&#10;            $diff in xs:decimal($BT109 - $BT131Sum + $BT92Sum - $BT99Sum),&#13;&#10;            $abs in xs:decimal(abs($diff))&#13;&#10;        return&#13;&#10;        $abs le $maxTolerance">
+	[BR-FXEXT-CO-13]-Absolute Value of (Invoice total amount without VAT (BT-109) - â Invoice line net amounts (BT-131) + Î£ Document level allowance amounts (BT-92) - Î£ Document level charge amounts (BT-99)) &lt;= 0,01 * (Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99)).</assert>
+      <assert test="for $Currency in ../ram:InvoiceCurrencyCode,&#13;&#10;			$BT109 in xs:decimal(ram:TaxBasisTotalAmount),&#13;&#10;			$BT110 in xs:decimal(ram:TaxTotalAmount[@currencyID=$Currency]),			&#13;&#10;			$BT112 in xs:decimal(ram:GrandTotalAmount),&#13;&#10;			$nbTaxTotalAmountInvoiceCurrency in count (ram:TaxTotalAmount[@currencyID=$Currency] ),&#13;&#10;			$nbLineItems in xs:decimal(count(../../ram:IncludedSupplyChainTradeLineItem)),&#13;&#10;			$nbAllowanceItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])),&#13;&#10;			$nbChargeItems in xs:decimal(count(../ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]) + count(../ram:SpecifiedLogisticsServiceCharge)),&#13;&#10;			$tolerance in xs:decimal(0.01),&#13;&#10;			$maxTolerance in $tolerance * ($nbLineItems + $nbAllowanceItems + $nbChargeItems),&#13;&#10;			$diff in xs:decimal($BT112 - $BT110 - $BT109),&#13;&#10;			$abs in xs:decimal(abs($diff))&#13;&#10;return&#13;&#10;		($abs le $maxTolerance and $nbTaxTotalAmountInvoiceCurrency eq 1) or&#13;&#10;		($BT109 eq $BT112 and $nbTaxTotalAmountInvoiceCurrency ne 1)">
+	[BR-FXEXT-CO-15]-If Invoice Total VAT amount (BT-110) ,where currency (BT-110-0) is equal to BT-5, is present, then the Absolute Value of (Invoice total amount with VAT (BT-112) - Invoice total amount without VAT (BT-109) - Invoice total VAT amount (BT-110)) &lt;= 0,01 * (Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charges amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272). Else, Invoice total amount with VAT (BT-112) is equal to Invoice total amount without VAT (BT-109).</assert>
+      <assert test="(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or &#13;&#10;    ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))">
+	[BR-CO-16]-Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).</assert>
+      <assert test="string-length(substring-after(ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-09]-The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2.</assert>
+      <assert test="string-length(substring-after(ram:AllowanceTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-10]-The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.</assert>
+      <assert test="string-length(substring-after(ram:ChargeTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-11]-The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2.</assert>
+      <assert test="string-length(substring-after(ram:TaxBasisTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-12]-The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.</assert>
+      <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]">
+	[BR-DEC-13]-The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.</assert>
+      <assert test="string-length(substring-after(ram:GrandTotalAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-14]-The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.</assert>
+      <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]">
+	[BR-DEC-15]-The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.</assert>
+      <assert test="string-length(substring-after(ram:TotalPrepaidAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-16]-The allowed maximum number of decimals for the Paid amount (BT-113) is 2.</assert>
+      <assert test="string-length(substring-after(ram:RoundingAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-17]-The allowed maximum number of decimals for the Rounding amount (BT-114) is 2.</assert>
+      <assert test="string-length(substring-after(ram:DuePayableAmount,&apos;.&apos;))&lt;=2">
+	[BR-DEC-18]-The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.</assert>
+      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))">
+	[BR-53]-If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]">
+      <assert test=". = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount)*10*10)div 100)">
+	[BR-CO-14]-Invoice total VAT amount (BT-110) = Î£ VAT category tax amount (BT-117).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementPaymentMeans">
+      <assert test="(ram:TypeCode)">
+	[BR-49]-A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).</assert>
+      <assert test="(ram:PayeePartyCreditorFinancialAccount/ram:IBANID) or (ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID) or (not(ram:PayeePartyCreditorFinancialAccount/ram:IBANID) and not(ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID))">
+	[BR-CO-27]-Either the IBAN or a Proprietary ID (BT-84) shall be used.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode=&apos;30&apos; or ram:TypeCode=&apos;58&apos;]/ram:PayerPartyDebtorFinancialAccount">
+      <assert test="(ram:IBANID) or (ram:ProprietaryID)">
+	[BR-50]-A Payment account identifier (BT-84) shall be present if Credit transfer (BG-16) information is provided in the Invoice.</assert>
+      <assert test="(ram:IBANID) or (ram:ProprietaryID)">
+	[BR-61]-If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
+      <assert test="ram:ApplicableTradeTax">
+	[BR-CO-18]-An Invoice shall at least have one VAT breakdown group (BG-23).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;AE&apos;]">
+      <assert test="for &#13;&#10;				$basisAmount in xs:decimal(../ram:BasisAmount),&#13;&#10;				$lineAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), &#13;&#10;			    $chargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$logisticChargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;AE&apos;]/xs:decimal(ram:AppliedAmount)) * 100) div 100),&#13;&#10;				$allowanceAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$calculatedAmount in xs:decimal($lineAmount + $chargeAmount + $logisticChargeAmount - $allowanceAmount),&#13;&#10;				$nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;])),&#13;&#10;				$nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;])),&#13;&#10;				$nbLogisticCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;AE&apos;])),&#13;&#10;				$tolerance in xs:decimal(0.01),&#13;&#10;				$maxTolerance in $tolerance * ($nbLineItems + $nbAllowancesOrCharges + $nbLogisticCharges),&#13;&#10;				$diff in xs:decimal($basisAmount - $calculatedAmount),&#13;&#10;				$abs in xs:decimal(abs($diff))&#13;&#10;            return&#13;&#10;                $abs le $maxTolerance">
+	[BR-FXEXT-AE-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to âAEâ ("Reverse Charge"), Absolute Value of (VAT category taxable amount (BT-116) - â Invoice line net amounts (BT-131) + Î£ Document level allowance amounts (BT-92) - Î£ Document level charge amounts (BT-99) - Î£ Logistics Service fee amounts (BT-x-272)) &lt;= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is "Reversed Charge" (AE).</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-AE-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-AE-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;E&apos;]">
+      <assert test="for &#13;&#10;				$basisAmount in xs:decimal(../ram:BasisAmount),&#13;&#10;				$lineAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;E&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), &#13;&#10;			    $chargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$logisticChargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;E&apos;]/xs:decimal(ram:AppliedAmount)) * 100) div 100),&#13;&#10;				$allowanceAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$calculatedAmount in xs:decimal($lineAmount + $chargeAmount + $logisticChargeAmount - $allowanceAmount),&#13;&#10;				$nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = &apos;E&apos;])),&#13;&#10;				$nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:CategoryTradeTax/ram:CategoryCode=&apos;E&apos;])),&#13;&#10;				$nbLogisticCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;E&apos;])),&#13;&#10;				$tolerance in xs:decimal(0.01),&#13;&#10;				$maxTolerance in $tolerance * ($nbLineItems + $nbAllowancesOrCharges + $nbLogisticCharges),&#13;&#10;				$diff in xs:decimal($basisAmount - $calculatedAmount),&#13;&#10;				$abs in xs:decimal(abs($diff))&#13;&#10;            return&#13;&#10;                $abs le $maxTolerance">
+	[BR-FXEXT-E-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to âEâ ("Exempt from VAT"), Absolute Value of (VAT category taxable amount (BT-116) - â Invoice line net amounts (BT-131) + Î£ Document level allowance amounts (BT-92) - Î£ Document level charges amounts (BT-99) - Î£ Logistics Service fee amounts (BT-x-272)) &lt;= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is " Exempt from VAT" (E).</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-E-09]-The VAT category tax amount (BT-117) In a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-E-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;G&apos;]">
+      <assert test="for &#13;&#10;				$basisAmount in xs:decimal(../ram:BasisAmount),&#13;&#10;				$lineAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), &#13;&#10;			    $chargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$logisticChargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;G&apos;]/xs:decimal(ram:AppliedAmount)) * 100) div 100),&#13;&#10;				$allowanceAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$calculatedAmount in xs:decimal($lineAmount + $chargeAmount + $logisticChargeAmount - $allowanceAmount),&#13;&#10;				$nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;])),&#13;&#10;				$nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;])),&#13;&#10;				$nbLogisticCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;G&apos;])),&#13;&#10;				$tolerance in xs:decimal(0.01),&#13;&#10;				$maxTolerance in $tolerance * ($nbLineItems + $nbAllowancesOrCharges + $nbLogisticCharges),&#13;&#10;				$diff in xs:decimal($basisAmount - $calculatedAmount),&#13;&#10;				$abs in xs:decimal(abs($diff))&#13;&#10;            return&#13;&#10;                $abs le $maxTolerance">
+	[BR-FXEXT-G-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to âGâ ("Export outside the EU"), Absolute Value of (VAT category taxable amount (BT-116) - â Invoice line net amounts (BT-131) + Î£ Document level allowance amounts (BT-92) - Î£ Document level charges amounts (BT-99) - Î£ Logistics Service fee amounts (BT-x-272)) &lt;= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is " Export outside the EU " (G).</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-G-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-G-10]-A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.= &apos;K&apos;]">
+      <assert test="for &#13;&#10;				$basisAmount in xs:decimal(../ram:BasisAmount),&#13;&#10;				$lineAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), &#13;&#10;			    $chargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$logisticChargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;K&apos;]/xs:decimal(ram:AppliedAmount)) * 100) div 100),&#13;&#10;				$allowanceAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$calculatedAmount in xs:decimal($lineAmount + $chargeAmount + $logisticChargeAmount - $allowanceAmount),&#13;&#10;				$nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;])),&#13;&#10;				$nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;])),&#13;&#10;				$nbLogisticCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;K&apos;])),&#13;&#10;				$tolerance in xs:decimal(0.01),&#13;&#10;				$maxTolerance in $tolerance * ($nbLineItems + $nbAllowancesOrCharges + $nbLogisticCharges),&#13;&#10;				$diff in xs:decimal($basisAmount - $calculatedAmount),&#13;&#10;				$abs in xs:decimal(abs($diff))&#13;&#10;            return&#13;&#10;                $abs le $maxTolerance">
+	[BR-FXEXT-IC-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to âKâ ("Intra-community supply"), Absolute Value of (VAT category taxable amount (BT-116) - â Invoice line net amounts (BT-131) + Î£ Document level allowance amounts (BT-92) - Î£ Document level charges amounts (BT-99) - Î£ Logistics Service fee amounts (BT-x-272)) &lt;= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is " Intra-community supply " (K)</assert>
+      <assert test="../ram:CalculatedAmount = 0">
+	[BR-IC-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" shall be 0 (zero).</assert>
+      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
+	[BR-IC-10]-A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).</assert>
+      <assert test="(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString) or (../../ram:BillingSpecifiedPeriod/ram:StartDateTime) or (../../ram:BillingSpecifiedPeriod/ram:EndDateTime)">
+	[BR-IC-11]-In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.</assert>
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+	[BR-IC-12]-In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Deliver to country code (BT-80) shall not be blank.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="for &#13;&#10;				$basisAmount in xs:decimal(../ram:BasisAmount),&#13;&#10;				$lineAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;L&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), &#13;&#10;			    $chargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$logisticChargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;L&apos;]/xs:decimal(ram:AppliedAmount)) * 100) div 100),&#13;&#10;				$allowanceAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$calculatedAmount in xs:decimal($lineAmount + $chargeAmount + $logisticChargeAmount - $allowanceAmount),&#13;&#10;				$nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = &apos;L&apos;])),&#13;&#10;				$nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos;])),&#13;&#10;				$nbLogisticCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;L&apos;])),&#13;&#10;				$tolerance in xs:decimal(0.01),&#13;&#10;				$maxTolerance in $tolerance * ($nbLineItems + $nbAllowancesOrCharges + $nbLogisticCharges),&#13;&#10;				$diff in xs:decimal($basisAmount - $calculatedAmount),&#13;&#10;				$abs in xs:decimal(abs($diff))&#13;&#10;            return&#13;&#10;                $abs le $maxTolerance">
+	[BR-FXEXT-AF-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to âLâ ("Canary Islands tax"), Absolute Value of (VAT category taxable amount (BT-116) - â Invoice line net amounts (BT-131) + Î£ Document level allowance amounts (BT-92) - Î£ Document level charges amounts (BT-99) - Î£ Logistics Service fee amounts (BT-x-272)) &lt;= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is " Canary Islands tax " (L).</assert>
+      <assert test="true()">
+	[BR-AF-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
+	[BR-AF-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IGIC" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="for &#13;&#10;				$basisAmount in xs:decimal(../ram:BasisAmount),&#13;&#10;				$lineAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;M&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), &#13;&#10;			    $chargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$logisticChargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;M&apos;]/xs:decimal(ram:AppliedAmount)) * 100) div 100),&#13;&#10;				$allowanceAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$calculatedAmount in xs:decimal($lineAmount + $chargeAmount + $logisticChargeAmount - $allowanceAmount),&#13;&#10;				$nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = &apos;M&apos;])),&#13;&#10;				$nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos;])),&#13;&#10;				$nbLogisticCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;M&apos;])),&#13;&#10;				$tolerance in xs:decimal(0.01),&#13;&#10;				$maxTolerance in $tolerance * ($nbLineItems + $nbAllowancesOrCharges + $nbLogisticCharges),&#13;&#10;				$diff in xs:decimal($basisAmount - $calculatedAmount),&#13;&#10;				$abs in xs:decimal(abs($diff))&#13;&#10;            return&#13;&#10;                $abs le $maxTolerance">
+	[BR-FXEXT-AG-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to âMâ ("Ceuta and Mellita tax"), Absolute Value of (VAT category taxable amount (BT-116) - â Invoice line net amounts (BT-131) + Î£ Document level allowance amounts (BT-92) - Î£ Document level charges amounts (BT-99) - Î£ Logistics Service fee amounts (BT-x-272)) &lt;= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is " Ceuta and Mellita tax " (M).</assert>
+      <assert test="true()">
+	[BR-AG-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
+      <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
+	[BR-AG-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IPSI" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="for &#13;&#10;				$basisAmount in xs:decimal(ram:BasisAmount),&#13;&#10;				$lineAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;O&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/xs:decimal(ram:LineTotalAmount)) * 100) div 100), &#13;&#10;			    $chargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true() and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$logisticChargeAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;O&apos;]/xs:decimal(ram:AppliedAmount)) * 100) div 100),&#13;&#10;				$allowanceAmount in xs:decimal(round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false() and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/xs:decimal(ram:ActualAmount)) * 100) div 100),&#13;&#10;				$calculatedAmount in xs:decimal($lineAmount + $chargeAmount + $logisticChargeAmount - $allowanceAmount),&#13;&#10;				$nbLineItems in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem[ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = &apos;O&apos;])),&#13;&#10;				$nbAllowancesOrCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;])),&#13;&#10;				$nbLogisticCharges in xs:decimal(count(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge[ram:AppliedTradeTax/ram:CategoryCode=&apos;O&apos;])),&#13;&#10;				$tolerance in xs:decimal(0.01),&#13;&#10;				$maxTolerance in $tolerance * ($nbLineItems + $nbAllowancesOrCharges + $nbLogisticCharges),&#13;&#10;				$diff in xs:decimal($basisAmount - $calculatedAmount),&#13;&#10;				$abs in xs:decimal(abs($diff))&#13;&#10;            return&#13;&#10;                $abs le $maxTolerance">
+	[BR-FXEXT-O-08]-In a VAT breakdown (BG-23) where VAT category code (BT-118) is equal to âOâ ("Not subject to VAT"), Absolute Value of (VAT category taxable amount (BT-116) - â Invoice line net amounts (BT-131) + Î£ Document level allowance amounts (BT-92) - Î£ Document level charges amounts (BT-99) - Î£ Logistics Service fee amounts (BT-x-272)) &lt;= 0,01 * ((Number of line net amounts (BT-131) + Number of Document level allowance amounts (BT-92) + Number of Document level charge amounts (BT-99) + Number of Logistics Service fee amounts (BT-X-272)), where the VAT category code (BT-151, BT-95, BT-102, BT-X-273) is " Not subject to VAT " (O).</assert>
+      <assert test="ram:CalculatedAmount = 0">
+	[BR-O-09]-The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Not subject to VAT" shall be 0 (zero).</assert>
+      <assert test="(ram:ExemptionReason) or (ram:ExemptionReasonCode)">
+	[BR-O-10]-A VAT Breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;AE&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
+	[BR-AE-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-AE-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;E&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-E-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-E-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT", the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;G&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
+	[BR-G-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-G-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;K&apos;]">
+      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-IC-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-IC-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intracommunity supply" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AF-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AF-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" the invoiced item VAT rate (BT-152) shall be greater than 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-AG-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-AG-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" the Invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
+      <assert test="not(ram:RateApplicablePercent)">
+	[BR-O-05]-An Invoice line (BG-25) where the VAT category code (BT-151) is "Not subject to VAT" shall not contain an Invoiced item VAT rate (BT-152).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;S&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-S-02]-An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent &gt; 0">
+	[BR-S-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" the Invoiced item VAT rate (BT-152) shall be greater than zero.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;Z&apos;]">
+      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = (&apos;VA&apos;, &apos;FC&apos;)] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
+	[BR-Z-02]-An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is "Zero rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
+      <assert test="ram:RateApplicablePercent = 0">
+	[BR-Z-05]-In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Zero rated" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice">
+      <assert test="//ram:IncludedSupplyChainTradeLineItem">
+	[BR-16]-An Invoice shall have at least one Invoice line (BG-25).</assert>
+      <assert test="(number(//ram:DuePayableAmount) &gt; 0 and ((//ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime) or (//ram:SpecifiedTradePaymentTerms/ram:Description))) or not(number(//ram:DuePayableAmount) &gt; 0)">
+	[BR-CO-25]-In case the Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.</assert>
+      <assert test="(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID != &apos;&apos;)">
+	[BR-01]-An Invoice shall have a Specification identifier (BT-24).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:ID !=&apos;&apos;)">
+	[BR-02]-An Invoice shall have an Invoice number (BT-1).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format=&apos;102&apos;]!=&apos;&apos;)">
+	[BR-03]-An Invoice shall have an Invoice issue date (BT-2).</assert>
+      <assert test="(rsm:ExchangedDocument/ram:TypeCode!=&apos;&apos;)">
+	[BR-04]-An Invoice shall have an Invoice type code (BT-3).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode!=&apos;&apos;)">
+	[BR-05]-An Invoice shall have an Invoice currency code (BT-5).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name!=&apos;&apos;)">
+	[BR-06]-An Invoice shall contain the Seller name (BT-27).</assert>
+      <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name!=&apos;&apos;)">
+	[BR-07]-An Invoice shall contain the Buyer name (BT-44).</assert>
+      <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress">
+	[BR-08]-An Invoice shall contain the Seller postal address (BG-5).</assert>
+      <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
+	[BR-09]-The Seller postal address (BG-5) shall contain a Seller country code (BT-40).</assert>
+      <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress">
+	[BR-10]-An Invoice shall contain the Buyer postal address (BG-8).</assert>
+      <assert test="//ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
+	[BR-11]-The Buyer postal address shall contain a Buyer country code (BT-55).</assert>
+      <assert test="normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != &apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)">
+	[BR-62]-The Seller electronic address (BT-34) shall have a Scheme identifier.</assert>
+      <assert test="normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != &apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)">
+	[BR-63]-The Buyer electronic address (BT-49) shall have a Scheme identifier.</assert>
+      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) and     ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]))">
+	[BR-S-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Standard rated" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])))">
+	[BR-Z-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Zero rated" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])))">
+	[BR-E-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExempt from VATâ shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])))">
+	[BR-AE-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Reverse charge" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])))">
+	[BR-IC-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Intra-community supply" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Intra-community supply".</assert>
+      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;]) or exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])))">
+	[BR-G-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Export outside the EU" shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU".</assert>
+      <assert test="not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or ( &#13;&#10;    count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;])=1 and &#13;&#10;    (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or&#13;&#10;    exists(//ram:CategoryTradeTax[ram:CategoryCode=&apos;O&apos;])))">
+	[BR-O-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "Not subject to VAT" shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".</assert>
+      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) and &#13;&#10;    ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]))">
+	[BR-AF-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "IGIC" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC".</assert>
+      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) and &#13;&#10;    ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]))">
+	[BR-AG-01]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is "IPSI" shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IPSI".</assert>
+      <assert test="(not(//ram:CountryID != &apos;IT&apos;) and //ram:CategoryCode =&apos;B&apos;) or (not(//ram:CategoryCode =&apos;B&apos;))">
+	[BR-B-01]-An Invoice where the VAT category code (BT-151, BT-95 or BT-102) is âSplit paymentâ shall be a domestic Italian invoice.</assert>
+      <assert test="(//ram:CategoryCode =&apos;B&apos; and (not(//ram:CategoryCode =&apos;S&apos;))) or (not(//ram:CategoryCode =&apos;B&apos;))">
+	[BR-B-02]-An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âSplit payment" shall not contain an invoice line (BG-25), a Document level allowance (BG-20) or  a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âStandard ratedâ.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Name)&lt;=1">
+	Element 'ram:Name' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:LanguageID)&lt;=1">
+	Element 'ram:LanguageID' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod">
+      <assert test="count(ram:CompleteDateTime)=1">
+	Element 'ram:CompleteDateTime' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:CompleteDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:CompleteDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:EndDateTime">
+      <report test="true()">
+	Element 'ram:EndDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod/ram:StartDateTime">
+      <report test="true()">
+	Element 'ram:StartDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote">
+      <assert test="count(ram:Content)&lt;=1">
+	Element 'ram:Content' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SubjectCode)&lt;=1">
+	Element 'ram:SubjectCode' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:ContentCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode">
+      <let name="codeValue4" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
+	Value of 'ram:SubjectCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote/ram:SubjectCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote[ram:SubjectCode]">
+      <assert test="(ram:ContentCode) or (ram:Content)">
+	[BR-FXEXT-01]-If the Invoice Free Text subject Code (BT-21) is specified, either the coded message free text (BT-X-5) or the message free text (BT-22) must be specified, or both. If both BT-X-5 and BT-22 are specified, both must have the same meaning.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString">
+      <assert test="@format">
+	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"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
+      <let name="codeValue2" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext">
+      <assert test="count(ram:BusinessProcessSpecifiedDocumentContextParameter)&lt;=1">
+	Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GuidelineSpecifiedDocumentContextParameter)=1">
+	Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID">
+      <let name="codeValue1" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=1]/enumeration[@value=$codeValue1]">
+	Value of 'ram:ID' is not allowed.</assert>
+    </rule>
+  </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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction">
+      <assert test="count(ram:IncludedSupplyChainTradeLineItem)&gt;=1">
+	Element 'ram:IncludedSupplyChainTradeLineItem' must occur at least 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement">
+      <assert test="count(ram:SellerTradeParty)=1">
+	Element 'ram:SellerTradeParty' must occur exactly 1 times.</assert>
+      <assert test="count(ram:BuyerTradeParty)=1">
+	Element 'ram:BuyerTradeParty' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ not(ram:TypeCode=&quot;916&quot;) and  not(ram:TypeCode=&quot;50&quot;) and  not(ram:TypeCode=&quot;130&quot;)]">
+      <report test="true()">
+	Element variant 'ram:AdditionalReferencedDocument[ not(ram:TypeCode="916") and  not(ram:TypeCode="50") and  not(ram:TypeCode="130")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:ReferenceTypeCode">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:ReferenceTypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:TypeCode">
+      <let name="codeValue30" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=30]/enumeration[@value=$codeValue30]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;130&quot;]/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:TypeCode">
+      <let name="codeValue29" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=29]/enumeration[@value=$codeValue29]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;50&quot;]/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Name)&lt;=1">
+	Element 'ram:Name' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:AttachmentBinaryObject)&lt;=1">
+	Element 'ram:AttachmentBinaryObject' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:AttachmentBinaryObject">
+      <assert test="@mimeCode">
+	Attribute '@mimeCode' is required in this context.</assert>
+      <assert test="@filename">
+	Attribute '@filename' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:AttachmentBinaryObject[@mimeCode]">
+      <let name="codeValue12" value="@mimeCode"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
+	Value of '@mimeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:TypeCode">
+      <let name="codeValue28" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=28]/enumeration[@value=$codeValue28]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument[ram:TypeCode=&quot;916&quot;]/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ApplicableTradeDeliveryTerms">
+      <assert test="count(ram:DeliveryTypeCode)=1">
+	Element 'ram:DeliveryTypeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)=1">
+	Element 'ram:SpecifiedTaxRegistration' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
+      <let name="codeValue26" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=26]/enumeration[@value=$codeValue26]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:ReferenceTypeCode">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:ReferenceTypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)=1">
+	Element 'ram:SpecifiedTaxRegistration' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
+      <let name="codeValue27" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=27]/enumeration[@value=$codeValue27]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty">
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:PostalTradeAddress)=1">
+	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;])&lt;=1">
+	Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="VA"]' may occur at maximum 1 times.</assert>
+      <assert 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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </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;)]">
+      <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery">
+      <assert test="(ram:ShipToTradeParty/ram:PostalTradeAddress and ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;) or not (ram:ShipToTradeParty/ram:PostalTradeAddress)">
+	[BR-57]-Each Deliver to address (BG-15) shall contain a Deliver to country code (BT-80).</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent">
+      <assert test="count(ram:OccurrenceDateTime)=1">
+	Element 'ram:OccurrenceDateTime' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment/ram:SpecifiedLogisticsTransportMovement">
+      <assert test="count(ram:ModeCode)=1">
+	Element 'ram:ModeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement">
+      <assert test="count(ram:PaymentReference)&lt;=1">
+	Element 'ram:PaymentReference' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:InvoiceCurrencyCode)=1">
+	Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ApplicableTradeTax)&gt;=1">
+	Element 'ram:ApplicableTradeTax' must occur at least 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradeSettlementHeaderMonetarySummation)=1">
+	Element 'ram:SpecifiedTradeSettlementHeaderMonetarySummation' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="count(ram:CalculatedAmount)=1">
+	Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:BasisAmount)=1">
+	Element 'ram:BasisAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:LineTotalBasisAmount)&lt;=1">
+	Element 'ram:LineTotalBasisAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:AllowanceChargeBasisAmount)&lt;=1">
+	Element 'ram:AllowanceChargeBasisAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:AllowanceChargeBasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
+      <let name="codeValue17" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode">
+      <let name="codeValue34" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=34]/enumeration[@value=$codeValue34]">
+	Value of 'ram:DueDateTypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
+      <let name="codeValue18" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
+	Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:LineTotalBasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate/udt:DateString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate/udt:DateString[@format]">
+      <let name="codeValue33" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=33]/enumeration[@value=$codeValue33]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode">
+      <let name="codeValue22" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:CompleteDateTime">
+      <report test="true()">
+	Element 'ram:CompleteDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode">
+      <let name="codeValue31" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=31]/enumeration[@value=$codeValue31]">
+	Value of 'ram:InvoiceCurrencyCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument">
+      <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
+	[BR-55]-Each Preceding Invoice reference (BG-3) shall contain a Preceding Invoice reference (BT-25).</assert>
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode">
+      <let name="codeValue39" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=39]/enumeration[@value=$codeValue39]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode">
+      <let name="codeValue40" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=40]/enumeration[@value=$codeValue40]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment">
+      <assert test="count(ram:IncludedTradeTax)&gt;=1">
+	Element 'ram:IncludedTradeTax' must occur at least 1 times.</assert>
+      <assert test="count(ram:InvoiceSpecifiedReferencedDocument)&lt;=1">
+	Element 'ram:InvoiceSpecifiedReferencedDocument' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:FormattedReceivedDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:FormattedReceivedDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax">
+      <assert test="count(ram:CalculatedAmount)=1">
+	Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:AllowanceChargeBasisAmount">
+      <report test="true()">
+	Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CalculatedAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:CategoryCode">
+      <let name="codeValue17" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:ExemptionReasonCode">
+      <let name="codeValue18" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
+	Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:ExemptionReasonCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:ExemptionReasonCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:LineTotalBasisAmount">
+      <report test="true()">
+	Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:TaxPointDate">
+      <report test="true()">
+	Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:IncludedTradeTax/ram:TypeCode">
+      <let name="codeValue22" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:InvoiceSpecifiedReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:InvoiceSpecifiedReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:InvoiceSpecifiedReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:InvoiceSpecifiedReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:InvoiceSpecifiedReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:InvoiceSpecifiedReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:InvoiceSpecifiedReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:InvoiceSpecifiedReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:InvoiceSpecifiedReferencedDocument/ram:TypeCode">
+      <let name="codeValue41" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=41]/enumeration[@value=$codeValue41]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:InvoiceSpecifiedReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment/ram:PaidAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge">
+      <assert test="count(ram:Description)=1">
+	Element 'ram:Description' must occur exactly 1 times.</assert>
+      <assert test="count(ram:AppliedAmount)=1">
+	Element 'ram:AppliedAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:AppliedTradeTax)&gt;=1">
+	Element 'ram:AppliedTradeTax' must occur at least 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RateApplicablePercent)=1">
+	Element 'ram:RateApplicablePercent' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:AllowanceChargeBasisAmount">
+      <report test="true()">
+	Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CategoryCode">
+      <let name="codeValue17" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:LineTotalBasisAmount">
+      <report test="true()">
+	Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TaxPointDate">
+      <report test="true()">
+	Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TypeCode">
+      <let name="codeValue22" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator=&quot;false&quot;) and  not(ram:ChargeIndicator/udt:Indicator=&quot;true&quot;)]">
+      <report test="true()">
+	Element variant 'ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator="false") and  not(ram:ChargeIndicator/udt:Indicator="true")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryTradeTax)=1">
+	Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisQuantity[@unitCode]">
+      <let name="codeValue9" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:AllowanceChargeBasisAmount">
+      <report test="true()">
+	Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:CategoryCode">
+      <let name="codeValue17" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:LineTotalBasisAmount">
+      <report test="true()">
+	Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:TaxPointDate">
+      <report test="true()">
+	Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax/ram:TypeCode">
+      <let name="codeValue22" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ReasonCode">
+      <let name="codeValue35" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=35]/enumeration[@value=$codeValue35]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryTradeTax)=1">
+	Element 'ram:CategoryTradeTax' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisQuantity[@unitCode]">
+      <let name="codeValue9" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:AllowanceChargeBasisAmount">
+      <report test="true()">
+	Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:CalculatedAmount">
+      <report test="true()">
+	Element 'ram:CalculatedAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:CategoryCode">
+      <let name="codeValue17" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:ExemptionReason">
+      <report test="true()">
+	Element 'ram:ExemptionReason' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:ExemptionReasonCode">
+      <report test="true()">
+	Element 'ram:ExemptionReasonCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:LineTotalBasisAmount">
+      <report test="true()">
+	Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:TaxPointDate">
+      <report test="true()">
+	Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax/ram:TypeCode">
+      <let name="codeValue22" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ReasonCode">
+      <let name="codeValue36" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=36]/enumeration[@value=$codeValue36]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms">
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:DirectDebitMandateID)&lt;=1">
+	Element 'ram:DirectDebitMandateID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:PartialPaymentAmount)&lt;=1">
+	Element 'ram:PartialPaymentAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:PayeeTradeParty)&lt;=1">
+	Element 'ram:PayeeTradeParty' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:ActualDiscountAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:BasisDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:BasisDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:ActualPenaltyAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisPeriodMeasure">
+      <assert test="@unitCode">
+	Attribute '@unitCode' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PayeeTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation">
+      <assert test="count(ram:LineTotalAmount)=1">
+	Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ChargeTotalAmount)&lt;=1">
+	Element 'ram:ChargeTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:AllowanceTotalAmount)&lt;=1">
+	Element 'ram:AllowanceTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TaxBasisTotalAmount)=1">
+	Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode])&lt;=1">
+	Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode]' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode])&lt;=1">
+	Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode]' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:RoundingAmount)&lt;=1">
+	Element 'ram:RoundingAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GrandTotalAmount)=1">
+	Element 'ram:GrandTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TotalPrepaidAmount)&lt;=1">
+	Element 'ram:TotalPrepaidAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:DuePayableAmount)=1">
+	Element 'ram:DuePayableAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RoundingAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and  not(@currencyID=../../ram:TaxCurrencyCode)]">
+      <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>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode and @currencyID]">
+      <let name="codeValue37" value="@currencyID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=37]/enumeration[@value=$codeValue37]">
+	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]">
+      <assert test="@currencyID">
+	Attribute '@currencyID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode and @currencyID]">
+      <let name="codeValue38" value="@currencyID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=38]/enumeration[@value=$codeValue38]">
+	Value of '@currencyID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:TaxCurrencyCode]">
+      <assert test="@currencyID">
+	Attribute '@currencyID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Information)&lt;=1">
+	Element 'ram:Information' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:PayeePartyCreditorFinancialAccount)&lt;=1">
+	Element 'ram:PayeePartyCreditorFinancialAccount' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution">
+      <assert test="count(ram:BICID)=1">
+	Element 'ram:BICID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount">
+      <assert test="count(ram:IBANID)=1">
+	Element 'ram:IBANID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode">
+      <let name="codeValue32" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=32]/enumeration[@value=$codeValue32]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:ConversionRateDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:ConversionRateDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:SourceCurrencyCode">
+      <let name="codeValue31" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=31]/enumeration[@value=$codeValue31]">
+	Value of 'ram:SourceCurrencyCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:TargetCurrencyCode">
+      <let name="codeValue31" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=31]/enumeration[@value=$codeValue31]">
+	Value of 'ram:TargetCurrencyCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode">
+      <let name="codeValue31" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=31]/enumeration[@value=$codeValue31]">
+	Value of 'ram:TaxCurrencyCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem">
+      <assert test="count(ram:AssociatedDocumentLineDocument)=1">
+	Element 'ram:AssociatedDocumentLineDocument' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradeProduct)=1">
+	Element 'ram:SpecifiedTradeProduct' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedLineTradeAgreement)=1">
+	Element 'ram:SpecifiedLineTradeAgreement' must occur exactly 1 times.</assert>
+      <assert test="count(ram:SpecifiedLineTradeDelivery)=1">
+	Element 'ram:SpecifiedLineTradeDelivery' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument">
+      <assert test="count(ram:LineID)=1">
+	Element 'ram:LineID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote">
+      <assert test="count(ram:Content)&lt;=1">
+	Element 'ram:Content' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SubjectCode)&lt;=1">
+	Element 'ram:SubjectCode' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:ContentCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode">
+      <let name="codeValue4" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
+	Value of 'ram:SubjectCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:IncludedNote/ram:SubjectCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:LineStatusReasonCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:AssociatedDocumentLineDocument/ram:ParentLineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement">
+      <assert test="count(ram:NetPriceProductTradePrice)=1">
+	Element 'ram:NetPriceProductTradePrice' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Name)&lt;=1">
+	Element 'ram:Name' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:AttachmentBinaryObject)&lt;=1">
+	Element 'ram:AttachmentBinaryObject' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject">
+      <assert test="@mimeCode">
+	Attribute '@mimeCode' is required in this context.</assert>
+      <assert test="@filename">
+	Attribute '@filename' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject[@mimeCode]">
+      <let name="codeValue12" value="@mimeCode"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=12]/enumeration[@value=$codeValue12]">
+	Value of '@mimeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:ReferenceTypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:TypeCode">
+      <let name="codeValue11" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:AdditionalReferencedDocument/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice">
+      <assert test="count(ram:ChargeAmount)=1">
+	Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator=&quot;false&quot;) and  not(ram:ChargeIndicator/udt:Indicator=&quot;true&quot;)]">
+      <report test="true()">
+	Element variant 'ram:AppliedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator="false") and  not(ram:ChargeIndicator/udt:Indicator="true")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisQuantity">
+      <report test="true()">
+	Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax">
+      <report test="true()">
+	Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ReasonCode">
+      <let name="codeValue14" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=14]/enumeration[@value=$codeValue14]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:SequenceNumeric">
+      <report test="true()">
+	Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisQuantity">
+      <report test="true()">
+	Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax">
+      <report test="true()">
+	Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ReasonCode">
+      <let name="codeValue15" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=15]/enumeration[@value=$codeValue15]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:AppliedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:SequenceNumeric">
+      <report test="true()">
+	Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
+      <let name="codeValue9" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:IncludedTradeTax">
+      <report test="true()">
+	Element 'ram:IncludedTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice">
+      <assert test="count(ram:ChargeAmount)=1">
+	Element 'ram:ChargeAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:IncludedTradeTax)&lt;=1">
+	Element 'ram:IncludedTradeTax' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:AppliedTradeAllowanceCharge">
+      <report test="true()">
+	Element 'ram:AppliedTradeAllowanceCharge' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:BasisQuantity[@unitCode]">
+      <let name="codeValue9" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax">
+      <assert test="count(ram:CalculatedAmount)=1">
+	Element 'ram:CalculatedAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:RateApplicablePercent)=1">
+	Element 'ram:RateApplicablePercent' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:AllowanceChargeBasisAmount">
+      <report test="true()">
+	Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CalculatedAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:CategoryCode">
+      <let name="codeValue17" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:ExemptionReasonCode">
+      <let name="codeValue18" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
+	Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:ExemptionReasonCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:ExemptionReasonCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:LineTotalBasisAmount">
+      <report test="true()">
+	Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:TaxPointDate">
+      <report test="true()">
+	Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:IncludedTradeTax/ram:TypeCode">
+      <let name="codeValue16" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=16]/enumeration[@value=$codeValue16]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery">
+      <assert test="count(ram:BilledQuantity)=1">
+	Element 'ram:BilledQuantity' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent">
+      <assert test="count(ram:OccurrenceDateTime)=1">
+	Element 'ram:OccurrenceDateTime' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity">
+      <assert test="@unitCode">
+	Attribute '@unitCode' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:BilledQuantity[@unitCode]">
+      <let name="codeValue9" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ChargeFreeQuantity">
+      <assert test="@unitCode">
+	Attribute '@unitCode' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ChargeFreeQuantity[@unitCode]">
+      <let name="codeValue9" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackageQuantity">
+      <assert test="@unitCode">
+	Attribute '@unitCode' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:PackageQuantity[@unitCode]">
+      <let name="codeValue9" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:TypeCode">
+      <report test="true()">
+	Element 'ram:TypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <report test="true()">
+	Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:RoleCode)&lt;=1">
+	Element 'ram:RoleCode' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:URIUniversalCommunication)&lt;=1">
+	Element 'ram:URIUniversalCommunication' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:SpecifiedTaxRegistration)&lt;=1">
+	Element 'ram:SpecifiedTaxRegistration' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:EmailURIUniversalCommunication/ram:URIID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:FaxUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication">
+      <assert test="count(ram:CompleteNumber)=1">
+	Element 'ram:CompleteNumber' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:DefinedTradeContact/ram:TelephoneUniversalCommunication/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:GlobalID[@schemeID]">
+      <let name="codeValue19" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=19]/enumeration[@value=$codeValue19]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress">
+      <assert test="count(ram:CountryID)=1">
+	Element 'ram:CountryID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
+	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:CountryID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
+      <let name="codeValue20" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=20]/enumeration[@value=$codeValue20]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
+      <report test="true()">
+	Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication">
+      <assert test="count(ram:URIID)=1">
+	Element 'ram:URIID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:CompleteNumber">
+      <report test="true()">
+	Element 'ram:CompleteNumber' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:UltimateShipToTradeParty/ram:URIUniversalCommunication/ram:URIID[@schemeID]">
+      <let name="codeValue21" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=21]/enumeration[@value=$codeValue21]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement">
+      <assert test="count(ram:ApplicableTradeTax)&gt;=1">
+	Element 'ram:ApplicableTradeTax' must occur at least 1 times.</assert>
+      <assert test="count(ram:SpecifiedTradeSettlementLineMonetarySummation)=1">
+	Element 'ram:SpecifiedTradeSettlementLineMonetarySummation' must occur exactly 1 times.</assert>
+      <assert test="count(ram:InvoiceReferencedDocument)&lt;=1">
+	Element 'ram:InvoiceReferencedDocument' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:ReceivableSpecifiedTradeAccountingAccount)&lt;=1">
+	Element 'ram:ReceivableSpecifiedTradeAccountingAccount' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument">
+      <assert test="count(ram:IssuerAssignedID)=1">
+	Element 'ram:IssuerAssignedID' must occur exactly 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime">
+      <report test="true()">
+	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:LineID">
+      <report test="true()">
+	Element 'ram:LineID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode">
+      <let name="codeValue13" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=13]/enumeration[@value=$codeValue13]">
+	Value of 'ram:ReferenceTypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode">
+      <let name="codeValue11" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=11]/enumeration[@value=$codeValue11]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax">
+      <assert test="count(ram:CalculatedAmount)&lt;=1">
+	Element 'ram:CalculatedAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TypeCode)=1">
+	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
+      <assert test="count(ram:CategoryCode)=1">
+	Element 'ram:CategoryCode' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:AllowanceChargeBasisAmount">
+      <report test="true()">
+	Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:BasisAmount">
+      <report test="true()">
+	Element 'ram:BasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode">
+      <let name="codeValue17" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=17]/enumeration[@value=$codeValue17]">
+	Value of 'ram:CategoryCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:DueDateTypeCode">
+      <report test="true()">
+	Element 'ram:DueDateTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode">
+      <let name="codeValue18" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=18]/enumeration[@value=$codeValue18]">
+	Value of 'ram:ExemptionReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:ExemptionReasonCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:LineTotalBasisAmount">
+      <report test="true()">
+	Element 'ram:LineTotalBasisAmount' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TaxPointDate">
+      <report test="true()">
+	Element 'ram:TaxPointDate' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode">
+      <let name="codeValue22" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=22]/enumeration[@value=$codeValue22]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:CompleteDateTime">
+      <report test="true()">
+	Element 'ram:CompleteDateTime' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:Description">
+      <report test="true()">
+	Element 'ram:Description' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:EndDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod/ram:StartDateTime/udt:DateTimeString[@format]">
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:AttachmentBinaryObject">
+      <report test="true()">
+	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString[@format]">
+      <let name="codeValue10" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=10]/enumeration[@value=$codeValue10]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:LineID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:Name">
+      <report test="true()">
+	Element 'ram:Name' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:ReferenceTypeCode">
+      <report test="true()">
+	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode">
+      <let name="codeValue25" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=25]/enumeration[@value=$codeValue25]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:URIID">
+      <report test="true()">
+	Element 'ram:URIID' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator=&quot;false&quot;) and  not(ram:ChargeIndicator/udt:Indicator=&quot;true&quot;)]">
+      <report test="true()">
+	Element variant 'ram:SpecifiedTradeAllowanceCharge[ not(ram:ChargeIndicator/udt:Indicator="false") and  not(ram:ChargeIndicator/udt:Indicator="true")]' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:BasisQuantity">
+      <report test="true()">
+	Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:CategoryTradeTax">
+      <report test="true()">
+	Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:ReasonCode">
+      <let name="codeValue23" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=23]/enumeration[@value=$codeValue23]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;false&quot;]/ram:SequenceNumeric">
+      <report test="true()">
+	Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]">
+      <assert test="count(ram:ChargeIndicator)=1">
+	Element 'ram:ChargeIndicator' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ActualAmount)=1">
+	Element 'ram:ActualAmount' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ActualAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:BasisQuantity">
+      <report test="true()">
+	Element 'ram:BasisQuantity' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:CategoryTradeTax">
+      <report test="true()">
+	Element 'ram:CategoryTradeTax' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:ReasonCode">
+      <let name="codeValue24" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=24]/enumeration[@value=$codeValue24]">
+	Value of 'ram:ReasonCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&quot;true&quot;]/ram:SequenceNumeric">
+      <report test="true()">
+	Element 'ram:SequenceNumeric' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation">
+      <assert test="count(ram:LineTotalAmount)=1">
+	Element 'ram:LineTotalAmount' must occur exactly 1 times.</assert>
+      <assert test="count(ram:ChargeTotalAmount)&lt;=1">
+	Element 'ram:ChargeTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:AllowanceTotalAmount)&lt;=1">
+	Element 'ram:AllowanceTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TaxTotalAmount)&lt;=1">
+	Element 'ram:TaxTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:GrandTotalAmount)&lt;=1">
+	Element 'ram:GrandTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TotalAllowanceChargeAmount)&lt;=1">
+	Element 'ram:TotalAllowanceChargeAmount' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:AllowanceTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:ChargeTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:GrandTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TaxTotalAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TotalAllowanceChargeAmount[@currencyID]">
+      <report test="true()">
+	Attribute @currencyID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct">
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic">
+      <assert test="count(ram:Description)=1">
+	Element 'ram:Description' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Value)=1">
+	Element 'ram:Value' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode">
+      <let name="codeValue6" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
+	Value of 'ram:TypeCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@listID]">
+      <report test="true()">
+	Attribute @listID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode[@listVersionID]">
+      <report test="true()">
+	Attribute @listVersionID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BatchID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification">
+      <assert test="count(ram:ClassName)&lt;=1">
+	Element 'ram:ClassName' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode">
+      <assert test="@listID">
+	Attribute '@listID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode[@listID]">
+      <let name="codeValue7" value="@listID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=7]/enumeration[@value=$codeValue7]">
+	Value of '@listID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:GlobalID[@schemeID]">
+      <let name="codeValue5" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
+	Value of '@schemeID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct">
+      <assert test="count(ram:ID)&lt;=1">
+	Element 'ram:ID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:IndustryAssignedID)&lt;=1">
+	Element 'ram:IndustryAssignedID' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:Name)=1">
+	Element 'ram:Name' must occur exactly 1 times.</assert>
+      <assert test="count(ram:Description)&lt;=1">
+	Element 'ram:Description' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:UnitQuantity)&lt;=1">
+	Element 'ram:UnitQuantity' may occur at maximum 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:BuyerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:GlobalID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:ID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:IndustryAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:SellerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:UnitQuantity">
+      <assert test="@unitCode">
+	Attribute '@unitCode' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:UnitQuantity[@unitCode]">
+      <let name="codeValue9" value="@unitCode"/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=9]/enumeration[@value=$codeValue9]">
+	Value of '@unitCode' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IndividualTradeProductInstance/ram:BatchID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IndividualTradeProductInstance/ram:SupplierAssignedSerialID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IndustryAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ModelID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:OriginTradeCountry/ram:ID">
+      <let name="codeValue8" value="."/>
+      <assert test="document(&apos;FACTUR-X_EXTENDED_codedb.xml&apos;)//cl[@id=8]/enumeration[@value=$codeValue8]">
+	Value of 'ram:ID' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID[@schemeID]">
+      <report test="true()">
+	Attribute @schemeID' marked as not used in the given context.</report>
+    </rule>
+  </pattern>
 </schema>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EXTENDED_codedb.xml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EXTENDED_codedb.xml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_EXTENDED_codedb.xml	(revision 8504)
@@ -1,7604 +1,6292 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <codedb>
-    <cl id="1">
-        <enumeration value="80"/>
-        <enumeration value="81"/>
-        <enumeration value="82"/>
-        <enumeration value="83"/>
-        <enumeration value="84"/>
-        <enumeration value="130"/>
-        <enumeration value="202"/>
-        <enumeration value="203"/>
-        <enumeration value="204"/>
-        <enumeration value="211"/>
-        <enumeration value="261"/>
-        <enumeration value="262"/>
-        <enumeration value="295"/>
-        <enumeration value="296"/>
-        <enumeration value="308"/>
-        <enumeration value="325"/>
-        <enumeration value="326"/>
-        <enumeration value="380"/>
-        <enumeration value="381"/>
-        <enumeration value="383"/>
-        <enumeration value="384"/>
-        <enumeration value="385"/>
-        <enumeration value="386"/>
-        <enumeration value="387"/>
-        <enumeration value="388"/>
-        <enumeration value="389"/>
-        <enumeration value="390"/>
-        <enumeration value="393"/>
-        <enumeration value="394"/>
-        <enumeration value="395"/>
-        <enumeration value="396"/>
-        <enumeration value="420"/>
-        <enumeration value="456"/>
-        <enumeration value="457"/>
-        <enumeration value="458"/>
-        <enumeration value="527"/>
-        <enumeration value="575"/>
-        <enumeration value="623"/>
-        <enumeration value="633"/>
-        <enumeration value="751"/>
-        <enumeration value="780"/>
-        <enumeration value="935"/>
-    </cl>
-    <cl id="2">
-        <enumeration value="102"/>
-    </cl>
-    <cl id="3">
-        <enumeration value="AAA"/>
-        <enumeration value="AAB"/>
-        <enumeration value="AAC"/>
-        <enumeration value="AAD"/>
-        <enumeration value="AAE"/>
-        <enumeration value="AAF"/>
-        <enumeration value="AAG"/>
-        <enumeration value="AAI"/>
-        <enumeration value="AAJ"/>
-        <enumeration value="AAK"/>
-        <enumeration value="AAL"/>
-        <enumeration value="AAM"/>
-        <enumeration value="AAN"/>
-        <enumeration value="AAO"/>
-        <enumeration value="AAP"/>
-        <enumeration value="AAQ"/>
-        <enumeration value="AAR"/>
-        <enumeration value="AAS"/>
-        <enumeration value="AAT"/>
-        <enumeration value="AAU"/>
-        <enumeration value="AAV"/>
-        <enumeration value="AAW"/>
-        <enumeration value="AAX"/>
-        <enumeration value="AAY"/>
-        <enumeration value="AAZ"/>
-        <enumeration value="ABA"/>
-        <enumeration value="ABB"/>
-        <enumeration value="ABC"/>
-        <enumeration value="ABD"/>
-        <enumeration value="ABE"/>
-        <enumeration value="ABF"/>
-        <enumeration value="ABG"/>
-        <enumeration value="ABH"/>
-        <enumeration value="ABI"/>
-        <enumeration value="ABJ"/>
-        <enumeration value="ABK"/>
-        <enumeration value="ABL"/>
-        <enumeration value="ABM"/>
-        <enumeration value="ABN"/>
-        <enumeration value="ABO"/>
-        <enumeration value="ABP"/>
-        <enumeration value="ABQ"/>
-        <enumeration value="ABR"/>
-        <enumeration value="ABS"/>
-        <enumeration value="ABT"/>
-        <enumeration value="ABU"/>
-        <enumeration value="ABV"/>
-        <enumeration value="ABW"/>
-        <enumeration value="ABX"/>
-        <enumeration value="ABZ"/>
-        <enumeration value="ACA"/>
-        <enumeration value="ACB"/>
-        <enumeration value="ACC"/>
-        <enumeration value="ACD"/>
-        <enumeration value="ACE"/>
-        <enumeration value="ACF"/>
-        <enumeration value="ACG"/>
-        <enumeration value="ACH"/>
-        <enumeration value="ACI"/>
-        <enumeration value="ACJ"/>
-        <enumeration value="ACK"/>
-        <enumeration value="ACL"/>
-        <enumeration value="ACM"/>
-        <enumeration value="ACN"/>
-        <enumeration value="ACO"/>
-        <enumeration value="ACP"/>
-        <enumeration value="ACQ"/>
-        <enumeration value="ACR"/>
-        <enumeration value="ACS"/>
-        <enumeration value="ACT"/>
-        <enumeration value="ACU"/>
-        <enumeration value="ACV"/>
-        <enumeration value="ACW"/>
-        <enumeration value="ACX"/>
-        <enumeration value="ACY"/>
-        <enumeration value="ACZ"/>
-        <enumeration value="ADA"/>
-        <enumeration value="ADB"/>
-        <enumeration value="ADC"/>
-        <enumeration value="ADD"/>
-        <enumeration value="ADE"/>
-        <enumeration value="ADF"/>
-        <enumeration value="ADG"/>
-        <enumeration value="ADH"/>
-        <enumeration value="ADI"/>
-        <enumeration value="ADJ"/>
-        <enumeration value="ADK"/>
-        <enumeration value="ADL"/>
-        <enumeration value="ADM"/>
-        <enumeration value="ADN"/>
-        <enumeration value="ADO"/>
-        <enumeration value="ADP"/>
-        <enumeration value="ADQ"/>
-        <enumeration value="ADR"/>
-        <enumeration value="ADS"/>
-        <enumeration value="ADT"/>
-        <enumeration value="ADU"/>
-        <enumeration value="ADV"/>
-        <enumeration value="ADW"/>
-        <enumeration value="ADX"/>
-        <enumeration value="ADY"/>
-        <enumeration value="ADZ"/>
-        <enumeration value="AEA"/>
-        <enumeration value="AEB"/>
-        <enumeration value="AEC"/>
-        <enumeration value="AED"/>
-        <enumeration value="AEE"/>
-        <enumeration value="AEF"/>
-        <enumeration value="AEG"/>
-        <enumeration value="AEH"/>
-        <enumeration value="AEI"/>
-        <enumeration value="AEJ"/>
-        <enumeration value="AEK"/>
-        <enumeration value="AEL"/>
-        <enumeration value="AEM"/>
-        <enumeration value="AEN"/>
-        <enumeration value="AEO"/>
-        <enumeration value="AEP"/>
-        <enumeration value="AEQ"/>
-        <enumeration value="AER"/>
-        <enumeration value="AES"/>
-        <enumeration value="AET"/>
-        <enumeration value="AEU"/>
-        <enumeration value="AEV"/>
-        <enumeration value="AEW"/>
-        <enumeration value="AEX"/>
-        <enumeration value="AEY"/>
-        <enumeration value="AEZ"/>
-        <enumeration value="AFA"/>
-        <enumeration value="AFB"/>
-        <enumeration value="AFC"/>
-        <enumeration value="AFD"/>
-        <enumeration value="AFE"/>
-        <enumeration value="AFF"/>
-        <enumeration value="AFG"/>
-        <enumeration value="AFH"/>
-        <enumeration value="AFI"/>
-        <enumeration value="AFJ"/>
-        <enumeration value="AFK"/>
-        <enumeration value="AFL"/>
-        <enumeration value="AFM"/>
-        <enumeration value="AFN"/>
-        <enumeration value="AFO"/>
-        <enumeration value="AFP"/>
-        <enumeration value="AFQ"/>
-        <enumeration value="AFR"/>
-        <enumeration value="AFS"/>
-        <enumeration value="AFT"/>
-        <enumeration value="AFU"/>
-        <enumeration value="AFV"/>
-        <enumeration value="AFW"/>
-        <enumeration value="AFX"/>
-        <enumeration value="AFY"/>
-        <enumeration value="AFZ"/>
-        <enumeration value="AGA"/>
-        <enumeration value="AGB"/>
-        <enumeration value="AGC"/>
-        <enumeration value="AGD"/>
-        <enumeration value="AGE"/>
-        <enumeration value="AGF"/>
-        <enumeration value="AGG"/>
-        <enumeration value="AGH"/>
-        <enumeration value="AGI"/>
-        <enumeration value="AGJ"/>
-        <enumeration value="AGK"/>
-        <enumeration value="AGL"/>
-        <enumeration value="AGM"/>
-        <enumeration value="AGN"/>
-        <enumeration value="AGO"/>
-        <enumeration value="AGP"/>
-        <enumeration value="AGQ"/>
-        <enumeration value="AGR"/>
-        <enumeration value="AGS"/>
-        <enumeration value="AGT"/>
-        <enumeration value="AGU"/>
-        <enumeration value="AGV"/>
-        <enumeration value="AGW"/>
-        <enumeration value="AGX"/>
-        <enumeration value="AGY"/>
-        <enumeration value="AGZ"/>
-        <enumeration value="AHA"/>
-        <enumeration value="AHB"/>
-        <enumeration value="AHC"/>
-        <enumeration value="AHD"/>
-        <enumeration value="AHE"/>
-        <enumeration value="AHF"/>
-        <enumeration value="AHG"/>
-        <enumeration value="AHH"/>
-        <enumeration value="AHI"/>
-        <enumeration value="AHJ"/>
-        <enumeration value="AHK"/>
-        <enumeration value="AHL"/>
-        <enumeration value="AHM"/>
-        <enumeration value="AHN"/>
-        <enumeration value="AHO"/>
-        <enumeration value="AHP"/>
-        <enumeration value="AHQ"/>
-        <enumeration value="AHR"/>
-        <enumeration value="AHS"/>
-        <enumeration value="AHT"/>
-        <enumeration value="AHU"/>
-        <enumeration value="AHV"/>
-        <enumeration value="AHW"/>
-        <enumeration value="AHX"/>
-        <enumeration value="AHY"/>
-        <enumeration value="AHZ"/>
-        <enumeration value="AIA"/>
-        <enumeration value="AIB"/>
-        <enumeration value="AIC"/>
-        <enumeration value="AID"/>
-        <enumeration value="AIE"/>
-        <enumeration value="AIF"/>
-        <enumeration value="AIG"/>
-        <enumeration value="AIH"/>
-        <enumeration value="AII"/>
-        <enumeration value="AIJ"/>
-        <enumeration value="AIK"/>
-        <enumeration value="AIL"/>
-        <enumeration value="AIM"/>
-        <enumeration value="AIN"/>
-        <enumeration value="AIO"/>
-        <enumeration value="AIP"/>
-        <enumeration value="AIQ"/>
-        <enumeration value="AIR"/>
-        <enumeration value="AIS"/>
-        <enumeration value="AIT"/>
-        <enumeration value="AIU"/>
-        <enumeration value="AIV"/>
-        <enumeration value="AIW"/>
-        <enumeration value="AIX"/>
-        <enumeration value="AIY"/>
-        <enumeration value="AIZ"/>
-        <enumeration value="AJA"/>
-        <enumeration value="AJB"/>
-        <enumeration value="ALC"/>
-        <enumeration value="ALD"/>
-        <enumeration value="ALE"/>
-        <enumeration value="ALF"/>
-        <enumeration value="ALG"/>
-        <enumeration value="ALH"/>
-        <enumeration value="ALI"/>
-        <enumeration value="ALJ"/>
-        <enumeration value="ALK"/>
-        <enumeration value="ALL"/>
-        <enumeration value="ALM"/>
-        <enumeration value="ALN"/>
-        <enumeration value="ALO"/>
-        <enumeration value="ALP"/>
-        <enumeration value="ALQ"/>
-        <enumeration value="ARR"/>
-        <enumeration value="ARS"/>
-        <enumeration value="AUT"/>
-        <enumeration value="AUU"/>
-        <enumeration value="AUV"/>
-        <enumeration value="AUW"/>
-        <enumeration value="AUX"/>
-        <enumeration value="AUY"/>
-        <enumeration value="AUZ"/>
-        <enumeration value="AVA"/>
-        <enumeration value="AVB"/>
-        <enumeration value="AVC"/>
-        <enumeration value="AVD"/>
-        <enumeration value="AVE"/>
-        <enumeration value="AVF"/>
-        <enumeration value="BAG"/>
-        <enumeration value="BAH"/>
-        <enumeration value="BAI"/>
-        <enumeration value="BAJ"/>
-        <enumeration value="BAK"/>
-        <enumeration value="BAL"/>
-        <enumeration value="BAM"/>
-        <enumeration value="BAN"/>
-        <enumeration value="BAO"/>
-        <enumeration value="BAP"/>
-        <enumeration value="BAQ"/>
-        <enumeration value="BAR"/>
-        <enumeration value="BAS"/>
-        <enumeration value="BLC"/>
-        <enumeration value="BLD"/>
-        <enumeration value="BLE"/>
-        <enumeration value="BLF"/>
-        <enumeration value="BLG"/>
-        <enumeration value="BLH"/>
-        <enumeration value="BLI"/>
-        <enumeration value="BLJ"/>
-        <enumeration value="BLK"/>
-        <enumeration value="BLL"/>
-        <enumeration value="BLM"/>
-        <enumeration value="BLN"/>
-        <enumeration value="BLO"/>
-        <enumeration value="BLP"/>
-        <enumeration value="BLQ"/>
-        <enumeration value="BLR"/>
-        <enumeration value="BLS"/>
-        <enumeration value="BLT"/>
-        <enumeration value="BLU"/>
-        <enumeration value="BLV"/>
-        <enumeration value="BLW"/>
-        <enumeration value="BLX"/>
-        <enumeration value="BLY"/>
-        <enumeration value="BLZ"/>
-        <enumeration value="BMA"/>
-        <enumeration value="BMB"/>
-        <enumeration value="BMC"/>
-        <enumeration value="BMD"/>
-        <enumeration value="BME"/>
-        <enumeration value="CCI"/>
-        <enumeration value="CEX"/>
-        <enumeration value="CHG"/>
-        <enumeration value="CIP"/>
-        <enumeration value="CLP"/>
-        <enumeration value="CLR"/>
-        <enumeration value="COI"/>
-        <enumeration value="CUR"/>
-        <enumeration value="CUS"/>
-        <enumeration value="DAR"/>
-        <enumeration value="DCL"/>
-        <enumeration value="DEL"/>
-        <enumeration value="DIN"/>
-        <enumeration value="DOC"/>
-        <enumeration value="DUT"/>
-        <enumeration value="EUR"/>
-        <enumeration value="FBC"/>
-        <enumeration value="GBL"/>
-        <enumeration value="GEN"/>
-        <enumeration value="GS7"/>
-        <enumeration value="HAN"/>
-        <enumeration value="HAZ"/>
-        <enumeration value="ICN"/>
-        <enumeration value="IIN"/>
-        <enumeration value="IMI"/>
-        <enumeration value="IND"/>
-        <enumeration value="INS"/>
-        <enumeration value="INV"/>
-        <enumeration value="IRP"/>
-        <enumeration value="ITR"/>
-        <enumeration value="ITS"/>
-        <enumeration value="LAN"/>
-        <enumeration value="LIN"/>
-        <enumeration value="LOI"/>
-        <enumeration value="MCO"/>
-        <enumeration value="MDH"/>
-        <enumeration value="MKS"/>
-        <enumeration value="ORI"/>
-        <enumeration value="OSI"/>
-        <enumeration value="PAC"/>
-        <enumeration value="PAI"/>
-        <enumeration value="PAY"/>
-        <enumeration value="PKG"/>
-        <enumeration value="PKT"/>
-        <enumeration value="PMD"/>
-        <enumeration value="PMT"/>
-        <enumeration value="PRD"/>
-        <enumeration value="PRF"/>
-        <enumeration value="PRI"/>
-        <enumeration value="PUR"/>
-        <enumeration value="QIN"/>
-        <enumeration value="QQD"/>
-        <enumeration value="QUT"/>
-        <enumeration value="RAH"/>
-        <enumeration value="REG"/>
-        <enumeration value="RET"/>
-        <enumeration value="REV"/>
-        <enumeration value="RQR"/>
-        <enumeration value="SAF"/>
-        <enumeration value="SIC"/>
-        <enumeration value="SIN"/>
-        <enumeration value="SLR"/>
-        <enumeration value="SPA"/>
-        <enumeration value="SPG"/>
-        <enumeration value="SPH"/>
-        <enumeration value="SPP"/>
-        <enumeration value="SPT"/>
-        <enumeration value="SRN"/>
-        <enumeration value="SSR"/>
-        <enumeration value="SUR"/>
-        <enumeration value="TCA"/>
-        <enumeration value="TDT"/>
-        <enumeration value="TRA"/>
-        <enumeration value="TRR"/>
-        <enumeration value="TXD"/>
-        <enumeration value="WHI"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="4">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="5">
-        <enumeration value="A"/>
-        <enumeration value="AAA"/>
-        <enumeration value="AAB"/>
-        <enumeration value="AAC"/>
-        <enumeration value="AAD"/>
-        <enumeration value="AAF"/>
-        <enumeration value="AAG"/>
-        <enumeration value="AAH"/>
-        <enumeration value="AAI"/>
-        <enumeration value="AAJ"/>
-        <enumeration value="AAK"/>
-        <enumeration value="AAM"/>
-        <enumeration value="AAN"/>
-        <enumeration value="AAO"/>
-        <enumeration value="AAP"/>
-        <enumeration value="AAQ"/>
-        <enumeration value="AAR"/>
-        <enumeration value="AAS"/>
-        <enumeration value="AAT"/>
-        <enumeration value="AAU"/>
-        <enumeration value="AAV"/>
-        <enumeration value="AAW"/>
-        <enumeration value="AAX"/>
-        <enumeration value="AAY"/>
-        <enumeration value="AAZ"/>
-        <enumeration value="ABA"/>
-        <enumeration value="ABB"/>
-        <enumeration value="ABC"/>
-        <enumeration value="ABD"/>
-        <enumeration value="ABE"/>
-        <enumeration value="ABF"/>
-        <enumeration value="ABG"/>
-        <enumeration value="ABH"/>
-        <enumeration value="ABI"/>
-        <enumeration value="ABJ"/>
-        <enumeration value="ABK"/>
-        <enumeration value="ABL"/>
-        <enumeration value="ABM"/>
-        <enumeration value="ABN"/>
-        <enumeration value="ABO"/>
-        <enumeration value="ABP"/>
-        <enumeration value="ABS"/>
-        <enumeration value="ABT"/>
-        <enumeration value="ABX"/>
-        <enumeration value="ABY"/>
-        <enumeration value="ABZ"/>
-        <enumeration value="ACA"/>
-        <enumeration value="ACE"/>
-        <enumeration value="ACG"/>
-        <enumeration value="ACN"/>
-        <enumeration value="ACP"/>
-        <enumeration value="ACS"/>
-        <enumeration value="ACV"/>
-        <enumeration value="ACW"/>
-        <enumeration value="ACX"/>
-        <enumeration value="ADR"/>
-        <enumeration value="ADS"/>
-        <enumeration value="ADT"/>
-        <enumeration value="ADU"/>
-        <enumeration value="ADV"/>
-        <enumeration value="ADW"/>
-        <enumeration value="ADX"/>
-        <enumeration value="ADY"/>
-        <enumeration value="ADZ"/>
-        <enumeration value="AEA"/>
-        <enumeration value="AEB"/>
-        <enumeration value="AEC"/>
-        <enumeration value="AED"/>
-        <enumeration value="AEE"/>
-        <enumeration value="AEF"/>
-        <enumeration value="AEG"/>
-        <enumeration value="AEH"/>
-        <enumeration value="AEI"/>
-        <enumeration value="AEJ"/>
-        <enumeration value="AEK"/>
-        <enumeration value="AEL"/>
-        <enumeration value="AEM"/>
-        <enumeration value="AEN"/>
-        <enumeration value="AEO"/>
-        <enumeration value="AEP"/>
-        <enumeration value="AEQ"/>
-        <enumeration value="AER"/>
-        <enumeration value="AES"/>
-        <enumeration value="AET"/>
-        <enumeration value="AEU"/>
-        <enumeration value="AEV"/>
-        <enumeration value="AEW"/>
-        <enumeration value="AEX"/>
-        <enumeration value="AEY"/>
-        <enumeration value="AEZ"/>
-        <enumeration value="AF"/>
-        <enumeration value="AFA"/>
-        <enumeration value="AFB"/>
-        <enumeration value="AFC"/>
-        <enumeration value="AFD"/>
-        <enumeration value="AFE"/>
-        <enumeration value="AFF"/>
-        <enumeration value="AFG"/>
-        <enumeration value="AFH"/>
-        <enumeration value="AFI"/>
-        <enumeration value="AFJ"/>
-        <enumeration value="AFK"/>
-        <enumeration value="AFL"/>
-        <enumeration value="AFM"/>
-        <enumeration value="AFN"/>
-        <enumeration value="AFO"/>
-        <enumeration value="AFP"/>
-        <enumeration value="AFQ"/>
-        <enumeration value="AFR"/>
-        <enumeration value="AFS"/>
-        <enumeration value="AFT"/>
-        <enumeration value="AFU"/>
-        <enumeration value="AFV"/>
-        <enumeration value="AFW"/>
-        <enumeration value="AFX"/>
-        <enumeration value="B"/>
-        <enumeration value="BL"/>
-        <enumeration value="BMY"/>
-        <enumeration value="BMZ"/>
-        <enumeration value="BNA"/>
-        <enumeration value="BNB"/>
-        <enumeration value="BNC"/>
-        <enumeration value="BND"/>
-        <enumeration value="BNE"/>
-        <enumeration value="BNF"/>
-        <enumeration value="BNG"/>
-        <enumeration value="BNH"/>
-        <enumeration value="BNI"/>
-        <enumeration value="BNJ"/>
-        <enumeration value="BNK"/>
-        <enumeration value="BNL"/>
-        <enumeration value="BNM"/>
-        <enumeration value="BNN"/>
-        <enumeration value="BNO"/>
-        <enumeration value="BNP"/>
-        <enumeration value="BNQ"/>
-        <enumeration value="BNR"/>
-        <enumeration value="BNS"/>
-        <enumeration value="BNT"/>
-        <enumeration value="BNU"/>
-        <enumeration value="BNV"/>
-        <enumeration value="BNW"/>
-        <enumeration value="BNX"/>
-        <enumeration value="BNY"/>
-        <enumeration value="BNZ"/>
-        <enumeration value="BR"/>
-        <enumeration value="BRA"/>
-        <enumeration value="BRB"/>
-        <enumeration value="BRC"/>
-        <enumeration value="BRD"/>
-        <enumeration value="BRE"/>
-        <enumeration value="BRF"/>
-        <enumeration value="BRG"/>
-        <enumeration value="BRH"/>
-        <enumeration value="BRI"/>
-        <enumeration value="BRJ"/>
-        <enumeration value="BRK"/>
-        <enumeration value="BRL"/>
-        <enumeration value="BS"/>
-        <enumeration value="BSW"/>
-        <enumeration value="BW"/>
-        <enumeration value="CHN"/>
-        <enumeration value="CM"/>
-        <enumeration value="CT"/>
-        <enumeration value="CV"/>
-        <enumeration value="CZ"/>
-        <enumeration value="D"/>
-        <enumeration value="DI"/>
-        <enumeration value="DL"/>
-        <enumeration value="DN"/>
-        <enumeration value="DP"/>
-        <enumeration value="DR"/>
-        <enumeration value="DS"/>
-        <enumeration value="DW"/>
-        <enumeration value="E"/>
-        <enumeration value="EA"/>
-        <enumeration value="F"/>
-        <enumeration value="FI"/>
-        <enumeration value="FL"/>
-        <enumeration value="FN"/>
-        <enumeration value="FV"/>
-        <enumeration value="GG"/>
-        <enumeration value="GW"/>
-        <enumeration value="HF"/>
-        <enumeration value="HM"/>
-        <enumeration value="HT"/>
-        <enumeration value="IB"/>
-        <enumeration value="ID"/>
-        <enumeration value="L"/>
-        <enumeration value="LM"/>
-        <enumeration value="LN"/>
-        <enumeration value="LND"/>
-        <enumeration value="M"/>
-        <enumeration value="MO"/>
-        <enumeration value="MW"/>
-        <enumeration value="N"/>
-        <enumeration value="OD"/>
-        <enumeration value="PRS"/>
-        <enumeration value="PTN"/>
-        <enumeration value="RA"/>
-        <enumeration value="RF"/>
-        <enumeration value="RJ"/>
-        <enumeration value="RMW"/>
-        <enumeration value="RP"/>
-        <enumeration value="RUN"/>
-        <enumeration value="RY"/>
-        <enumeration value="SQ"/>
-        <enumeration value="T"/>
-        <enumeration value="TC"/>
-        <enumeration value="TH"/>
-        <enumeration value="TN"/>
-        <enumeration value="TT"/>
-        <enumeration value="VGM"/>
-        <enumeration value="VH"/>
-        <enumeration value="VW"/>
-        <enumeration value="WA"/>
-        <enumeration value="WD"/>
-        <enumeration value="WM"/>
-        <enumeration value="WU"/>
-        <enumeration value="XH"/>
-        <enumeration value="XQ"/>
-        <enumeration value="XZ"/>
-        <enumeration value="YS"/>
-        <enumeration value="ZAL"/>
-        <enumeration value="ZAS"/>
-        <enumeration value="ZB"/>
-        <enumeration value="ZBI"/>
-        <enumeration value="ZC"/>
-        <enumeration value="ZCA"/>
-        <enumeration value="ZCB"/>
-        <enumeration value="ZCE"/>
-        <enumeration value="ZCL"/>
-        <enumeration value="ZCO"/>
-        <enumeration value="ZCR"/>
-        <enumeration value="ZCU"/>
-        <enumeration value="ZFE"/>
-        <enumeration value="ZFS"/>
-        <enumeration value="ZGE"/>
-        <enumeration value="ZH"/>
-        <enumeration value="ZK"/>
-        <enumeration value="ZMG"/>
-        <enumeration value="ZMN"/>
-        <enumeration value="ZMO"/>
-        <enumeration value="ZN"/>
-        <enumeration value="ZNA"/>
-        <enumeration value="ZNB"/>
-        <enumeration value="ZNI"/>
-        <enumeration value="ZO"/>
-        <enumeration value="ZP"/>
-        <enumeration value="ZPB"/>
-        <enumeration value="ZS"/>
-        <enumeration value="ZSB"/>
-        <enumeration value="ZSE"/>
-        <enumeration value="ZSI"/>
-        <enumeration value="ZSL"/>
-        <enumeration value="ZSN"/>
-        <enumeration value="ZTA"/>
-        <enumeration value="ZTE"/>
-        <enumeration value="ZTI"/>
-        <enumeration value="ZV"/>
-        <enumeration value="ZW"/>
-        <enumeration value="ZWA"/>
-        <enumeration value="ZZN"/>
-        <enumeration value="ZZR"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="6">
-        <enumeration value="10"/>
-        <enumeration value="11"/>
-        <enumeration value="13"/>
-        <enumeration value="14"/>
-        <enumeration value="15"/>
-        <enumeration value="20"/>
-        <enumeration value="21"/>
-        <enumeration value="22"/>
-        <enumeration value="23"/>
-        <enumeration value="24"/>
-        <enumeration value="25"/>
-        <enumeration value="27"/>
-        <enumeration value="28"/>
-        <enumeration value="33"/>
-        <enumeration value="34"/>
-        <enumeration value="35"/>
-        <enumeration value="37"/>
-        <enumeration value="38"/>
-        <enumeration value="40"/>
-        <enumeration value="41"/>
-        <enumeration value="56"/>
-        <enumeration value="57"/>
-        <enumeration value="58"/>
-        <enumeration value="59"/>
-        <enumeration value="60"/>
-        <enumeration value="61"/>
-        <enumeration value="64"/>
-        <enumeration value="66"/>
-        <enumeration value="74"/>
-        <enumeration value="76"/>
-        <enumeration value="77"/>
-        <enumeration value="78"/>
-        <enumeration value="80"/>
-        <enumeration value="81"/>
-        <enumeration value="84"/>
-        <enumeration value="85"/>
-        <enumeration value="87"/>
-        <enumeration value="89"/>
-        <enumeration value="91"/>
-        <enumeration value="1I"/>
-        <enumeration value="2A"/>
-        <enumeration value="2B"/>
-        <enumeration value="2C"/>
-        <enumeration value="2G"/>
-        <enumeration value="2H"/>
-        <enumeration value="2I"/>
-        <enumeration value="2J"/>
-        <enumeration value="2K"/>
-        <enumeration value="2L"/>
-        <enumeration value="2M"/>
-        <enumeration value="2N"/>
-        <enumeration value="2P"/>
-        <enumeration value="2Q"/>
-        <enumeration value="2R"/>
-        <enumeration value="2U"/>
-        <enumeration value="2X"/>
-        <enumeration value="2Y"/>
-        <enumeration value="2Z"/>
-        <enumeration value="3B"/>
-        <enumeration value="3C"/>
-        <enumeration value="4C"/>
-        <enumeration value="4G"/>
-        <enumeration value="4H"/>
-        <enumeration value="4K"/>
-        <enumeration value="4L"/>
-        <enumeration value="4M"/>
-        <enumeration value="4N"/>
-        <enumeration value="4O"/>
-        <enumeration value="4P"/>
-        <enumeration value="4Q"/>
-        <enumeration value="4R"/>
-        <enumeration value="4T"/>
-        <enumeration value="4U"/>
-        <enumeration value="4W"/>
-        <enumeration value="4X"/>
-        <enumeration value="5A"/>
-        <enumeration value="5B"/>
-        <enumeration value="5E"/>
-        <enumeration value="5J"/>
-        <enumeration value="A1"/>
-        <enumeration value="A10"/>
-        <enumeration value="A11"/>
-        <enumeration value="A12"/>
-        <enumeration value="A13"/>
-        <enumeration value="A14"/>
-        <enumeration value="A15"/>
-        <enumeration value="A16"/>
-        <enumeration value="A17"/>
-        <enumeration value="A18"/>
-        <enumeration value="A19"/>
-        <enumeration value="A2"/>
-        <enumeration value="A20"/>
-        <enumeration value="A21"/>
-        <enumeration value="A22"/>
-        <enumeration value="A23"/>
-        <enumeration value="A24"/>
-        <enumeration value="A25"/>
-        <enumeration value="A26"/>
-        <enumeration value="A27"/>
-        <enumeration value="A28"/>
-        <enumeration value="A29"/>
-        <enumeration value="A3"/>
-        <enumeration value="A30"/>
-        <enumeration value="A31"/>
-        <enumeration value="A32"/>
-        <enumeration value="A33"/>
-        <enumeration value="A34"/>
-        <enumeration value="A35"/>
-        <enumeration value="A36"/>
-        <enumeration value="A37"/>
-        <enumeration value="A38"/>
-        <enumeration value="A39"/>
-        <enumeration value="A4"/>
-        <enumeration value="A40"/>
-        <enumeration value="A41"/>
-        <enumeration value="A42"/>
-        <enumeration value="A43"/>
-        <enumeration value="A44"/>
-        <enumeration value="A45"/>
-        <enumeration value="A47"/>
-        <enumeration value="A48"/>
-        <enumeration value="A49"/>
-        <enumeration value="A5"/>
-        <enumeration value="A50"/>
-        <enumeration value="A51"/>
-        <enumeration value="A52"/>
-        <enumeration value="A53"/>
-        <enumeration value="A54"/>
-        <enumeration value="A55"/>
-        <enumeration value="A56"/>
-        <enumeration value="A57"/>
-        <enumeration value="A58"/>
-        <enumeration value="A59"/>
-        <enumeration value="A6"/>
-        <enumeration value="A60"/>
-        <enumeration value="A61"/>
-        <enumeration value="A62"/>
-        <enumeration value="A63"/>
-        <enumeration value="A64"/>
-        <enumeration value="A65"/>
-        <enumeration value="A66"/>
-        <enumeration value="A67"/>
-        <enumeration value="A68"/>
-        <enumeration value="A69"/>
-        <enumeration value="A7"/>
-        <enumeration value="A70"/>
-        <enumeration value="A71"/>
-        <enumeration value="A73"/>
-        <enumeration value="A74"/>
-        <enumeration value="A75"/>
-        <enumeration value="A76"/>
-        <enumeration value="A77"/>
-        <enumeration value="A78"/>
-        <enumeration value="A79"/>
-        <enumeration value="A8"/>
-        <enumeration value="A80"/>
-        <enumeration value="A81"/>
-        <enumeration value="A82"/>
-        <enumeration value="A83"/>
-        <enumeration value="A84"/>
-        <enumeration value="A85"/>
-        <enumeration value="A86"/>
-        <enumeration value="A87"/>
-        <enumeration value="A88"/>
-        <enumeration value="A89"/>
-        <enumeration value="A9"/>
-        <enumeration value="A90"/>
-        <enumeration value="A91"/>
-        <enumeration value="A93"/>
-        <enumeration value="A94"/>
-        <enumeration value="A95"/>
-        <enumeration value="A96"/>
-        <enumeration value="A97"/>
-        <enumeration value="A98"/>
-        <enumeration value="A99"/>
-        <enumeration value="AA"/>
-        <enumeration value="AB"/>
-        <enumeration value="ACR"/>
-        <enumeration value="ACT"/>
-        <enumeration value="AD"/>
-        <enumeration value="AE"/>
-        <enumeration value="AH"/>
-        <enumeration value="AI"/>
-        <enumeration value="AK"/>
-        <enumeration value="AL"/>
-        <enumeration value="AMH"/>
-        <enumeration value="AMP"/>
-        <enumeration value="ANN"/>
-        <enumeration value="APZ"/>
-        <enumeration value="AQ"/>
-        <enumeration value="ARE"/>
-        <enumeration value="AS"/>
-        <enumeration value="ASM"/>
-        <enumeration value="ASU"/>
-        <enumeration value="ATM"/>
-        <enumeration value="ATT"/>
-        <enumeration value="AWG"/>
-        <enumeration value="AY"/>
-        <enumeration value="AZ"/>
-        <enumeration value="B1"/>
-        <enumeration value="B10"/>
-        <enumeration value="B11"/>
-        <enumeration value="B12"/>
-        <enumeration value="B13"/>
-        <enumeration value="B14"/>
-        <enumeration value="B15"/>
-        <enumeration value="B16"/>
-        <enumeration value="B17"/>
-        <enumeration value="B18"/>
-        <enumeration value="B19"/>
-        <enumeration value="B20"/>
-        <enumeration value="B21"/>
-        <enumeration value="B22"/>
-        <enumeration value="B23"/>
-        <enumeration value="B24"/>
-        <enumeration value="B25"/>
-        <enumeration value="B26"/>
-        <enumeration value="B27"/>
-        <enumeration value="B28"/>
-        <enumeration value="B29"/>
-        <enumeration value="B3"/>
-        <enumeration value="B30"/>
-        <enumeration value="B31"/>
-        <enumeration value="B32"/>
-        <enumeration value="B33"/>
-        <enumeration value="B34"/>
-        <enumeration value="B35"/>
-        <enumeration value="B36"/>
-        <enumeration value="B37"/>
-        <enumeration value="B38"/>
-        <enumeration value="B39"/>
-        <enumeration value="B4"/>
-        <enumeration value="B40"/>
-        <enumeration value="B41"/>
-        <enumeration value="B42"/>
-        <enumeration value="B43"/>
-        <enumeration value="B44"/>
-        <enumeration value="B45"/>
-        <enumeration value="B46"/>
-        <enumeration value="B47"/>
-        <enumeration value="B48"/>
-        <enumeration value="B49"/>
-        <enumeration value="B50"/>
-        <enumeration value="B51"/>
-        <enumeration value="B52"/>
-        <enumeration value="B53"/>
-        <enumeration value="B54"/>
-        <enumeration value="B55"/>
-        <enumeration value="B56"/>
-        <enumeration value="B57"/>
-        <enumeration value="B58"/>
-        <enumeration value="B59"/>
-        <enumeration value="B60"/>
-        <enumeration value="B61"/>
-        <enumeration value="B62"/>
-        <enumeration value="B63"/>
-        <enumeration value="B64"/>
-        <enumeration value="B65"/>
-        <enumeration value="B66"/>
-        <enumeration value="B67"/>
-        <enumeration value="B68"/>
-        <enumeration value="B69"/>
-        <enumeration value="B7"/>
-        <enumeration value="B70"/>
-        <enumeration value="B71"/>
-        <enumeration value="B72"/>
-        <enumeration value="B73"/>
-        <enumeration value="B74"/>
-        <enumeration value="B75"/>
-        <enumeration value="B76"/>
-        <enumeration value="B77"/>
-        <enumeration value="B78"/>
-        <enumeration value="B79"/>
-        <enumeration value="B8"/>
-        <enumeration value="B80"/>
-        <enumeration value="B81"/>
-        <enumeration value="B82"/>
-        <enumeration value="B83"/>
-        <enumeration value="B84"/>
-        <enumeration value="B85"/>
-        <enumeration value="B86"/>
-        <enumeration value="B87"/>
-        <enumeration value="B88"/>
-        <enumeration value="B89"/>
-        <enumeration value="B90"/>
-        <enumeration value="B91"/>
-        <enumeration value="B92"/>
-        <enumeration value="B93"/>
-        <enumeration value="B94"/>
-        <enumeration value="B95"/>
-        <enumeration value="B96"/>
-        <enumeration value="B97"/>
-        <enumeration value="B98"/>
-        <enumeration value="B99"/>
-        <enumeration value="BAR"/>
-        <enumeration value="BB"/>
-        <enumeration value="BFT"/>
-        <enumeration value="BHP"/>
-        <enumeration value="BIL"/>
-        <enumeration value="BLD"/>
-        <enumeration value="BLL"/>
-        <enumeration value="BP"/>
-        <enumeration value="BPM"/>
-        <enumeration value="BQL"/>
-        <enumeration value="BTU"/>
-        <enumeration value="BUA"/>
-        <enumeration value="BUI"/>
-        <enumeration value="C0"/>
-        <enumeration value="C10"/>
-        <enumeration value="C11"/>
-        <enumeration value="C12"/>
-        <enumeration value="C13"/>
-        <enumeration value="C14"/>
-        <enumeration value="C15"/>
-        <enumeration value="C16"/>
-        <enumeration value="C17"/>
-        <enumeration value="C18"/>
-        <enumeration value="C19"/>
-        <enumeration value="C20"/>
-        <enumeration value="C21"/>
-        <enumeration value="C22"/>
-        <enumeration value="C23"/>
-        <enumeration value="C24"/>
-        <enumeration value="C25"/>
-        <enumeration value="C26"/>
-        <enumeration value="C27"/>
-        <enumeration value="C28"/>
-        <enumeration value="C29"/>
-        <enumeration value="C3"/>
-        <enumeration value="C30"/>
-        <enumeration value="C31"/>
-        <enumeration value="C32"/>
-        <enumeration value="C33"/>
-        <enumeration value="C34"/>
-        <enumeration value="C35"/>
-        <enumeration value="C36"/>
-        <enumeration value="C37"/>
-        <enumeration value="C38"/>
-        <enumeration value="C39"/>
-        <enumeration value="C40"/>
-        <enumeration value="C41"/>
-        <enumeration value="C42"/>
-        <enumeration value="C43"/>
-        <enumeration value="C44"/>
-        <enumeration value="C45"/>
-        <enumeration value="C46"/>
-        <enumeration value="C47"/>
-        <enumeration value="C48"/>
-        <enumeration value="C49"/>
-        <enumeration value="C50"/>
-        <enumeration value="C51"/>
-        <enumeration value="C52"/>
-        <enumeration value="C53"/>
-        <enumeration value="C54"/>
-        <enumeration value="C55"/>
-        <enumeration value="C56"/>
-        <enumeration value="C57"/>
-        <enumeration value="C58"/>
-        <enumeration value="C59"/>
-        <enumeration value="C60"/>
-        <enumeration value="C61"/>
-        <enumeration value="C62"/>
-        <enumeration value="C63"/>
-        <enumeration value="C64"/>
-        <enumeration value="C65"/>
-        <enumeration value="C66"/>
-        <enumeration value="C67"/>
-        <enumeration value="C68"/>
-        <enumeration value="C69"/>
-        <enumeration value="C7"/>
-        <enumeration value="C70"/>
-        <enumeration value="C71"/>
-        <enumeration value="C72"/>
-        <enumeration value="C73"/>
-        <enumeration value="C74"/>
-        <enumeration value="C75"/>
-        <enumeration value="C76"/>
-        <enumeration value="C78"/>
-        <enumeration value="C79"/>
-        <enumeration value="C8"/>
-        <enumeration value="C80"/>
-        <enumeration value="C81"/>
-        <enumeration value="C82"/>
-        <enumeration value="C83"/>
-        <enumeration value="C84"/>
-        <enumeration value="C85"/>
-        <enumeration value="C86"/>
-        <enumeration value="C87"/>
-        <enumeration value="C88"/>
-        <enumeration value="C89"/>
-        <enumeration value="C9"/>
-        <enumeration value="C90"/>
-        <enumeration value="C91"/>
-        <enumeration value="C92"/>
-        <enumeration value="C93"/>
-        <enumeration value="C94"/>
-        <enumeration value="C95"/>
-        <enumeration value="C96"/>
-        <enumeration value="C97"/>
-        <enumeration value="C99"/>
-        <enumeration value="CCT"/>
-        <enumeration value="CDL"/>
-        <enumeration value="CEL"/>
-        <enumeration value="CEN"/>
-        <enumeration value="CG"/>
-        <enumeration value="CGM"/>
-        <enumeration value="CKG"/>
-        <enumeration value="CLF"/>
-        <enumeration value="CLT"/>
-        <enumeration value="CMK"/>
-        <enumeration value="CMQ"/>
-        <enumeration value="CMT"/>
-        <enumeration value="CNP"/>
-        <enumeration value="CNT"/>
-        <enumeration value="COU"/>
-        <enumeration value="CTG"/>
-        <enumeration value="CTM"/>
-        <enumeration value="CTN"/>
-        <enumeration value="CUR"/>
-        <enumeration value="CWA"/>
-        <enumeration value="CWI"/>
-        <enumeration value="D03"/>
-        <enumeration value="D04"/>
-        <enumeration value="D1"/>
-        <enumeration value="D10"/>
-        <enumeration value="D11"/>
-        <enumeration value="D12"/>
-        <enumeration value="D13"/>
-        <enumeration value="D15"/>
-        <enumeration value="D16"/>
-        <enumeration value="D17"/>
-        <enumeration value="D18"/>
-        <enumeration value="D19"/>
-        <enumeration value="D2"/>
-        <enumeration value="D20"/>
-        <enumeration value="D21"/>
-        <enumeration value="D22"/>
-        <enumeration value="D23"/>
-        <enumeration value="D24"/>
-        <enumeration value="D25"/>
-        <enumeration value="D26"/>
-        <enumeration value="D27"/>
-        <enumeration value="D29"/>
-        <enumeration value="D30"/>
-        <enumeration value="D31"/>
-        <enumeration value="D32"/>
-        <enumeration value="D33"/>
-        <enumeration value="D34"/>
-        <enumeration value="D35"/>
-        <enumeration value="D36"/>
-        <enumeration value="D37"/>
-        <enumeration value="D38"/>
-        <enumeration value="D39"/>
-        <enumeration value="D41"/>
-        <enumeration value="D42"/>
-        <enumeration value="D43"/>
-        <enumeration value="D44"/>
-        <enumeration value="D45"/>
-        <enumeration value="D46"/>
-        <enumeration value="D47"/>
-        <enumeration value="D48"/>
-        <enumeration value="D49"/>
-        <enumeration value="D5"/>
-        <enumeration value="D50"/>
-        <enumeration value="D51"/>
-        <enumeration value="D52"/>
-        <enumeration value="D53"/>
-        <enumeration value="D54"/>
-        <enumeration value="D55"/>
-        <enumeration value="D56"/>
-        <enumeration value="D57"/>
-        <enumeration value="D58"/>
-        <enumeration value="D59"/>
-        <enumeration value="D6"/>
-        <enumeration value="D60"/>
-        <enumeration value="D61"/>
-        <enumeration value="D62"/>
-        <enumeration value="D63"/>
-        <enumeration value="D65"/>
-        <enumeration value="D68"/>
-        <enumeration value="D69"/>
-        <enumeration value="D70"/>
-        <enumeration value="D71"/>
-        <enumeration value="D72"/>
-        <enumeration value="D73"/>
-        <enumeration value="D74"/>
-        <enumeration value="D75"/>
-        <enumeration value="D76"/>
-        <enumeration value="D77"/>
-        <enumeration value="D78"/>
-        <enumeration value="D80"/>
-        <enumeration value="D81"/>
-        <enumeration value="D82"/>
-        <enumeration value="D83"/>
-        <enumeration value="D85"/>
-        <enumeration value="D86"/>
-        <enumeration value="D87"/>
-        <enumeration value="D88"/>
-        <enumeration value="D89"/>
-        <enumeration value="D9"/>
-        <enumeration value="D91"/>
-        <enumeration value="D93"/>
-        <enumeration value="D94"/>
-        <enumeration value="D95"/>
-        <enumeration value="DAA"/>
-        <enumeration value="DAD"/>
-        <enumeration value="DAY"/>
-        <enumeration value="DB"/>
-        <enumeration value="DD"/>
-        <enumeration value="DEC"/>
-        <enumeration value="DG"/>
-        <enumeration value="DJ"/>
-        <enumeration value="DLT"/>
-        <enumeration value="DMA"/>
-        <enumeration value="DMK"/>
-        <enumeration value="DMO"/>
-        <enumeration value="DMQ"/>
-        <enumeration value="DMT"/>
-        <enumeration value="DN"/>
-        <enumeration value="DPC"/>
-        <enumeration value="DPR"/>
-        <enumeration value="DPT"/>
-        <enumeration value="DRA"/>
-        <enumeration value="DRI"/>
-        <enumeration value="DRL"/>
-        <enumeration value="DT"/>
-        <enumeration value="DTN"/>
-        <enumeration value="DU"/>
-        <enumeration value="DWT"/>
-        <enumeration value="DX"/>
-        <enumeration value="DZN"/>
-        <enumeration value="DZP"/>
-        <enumeration value="E01"/>
-        <enumeration value="E07"/>
-        <enumeration value="E08"/>
-        <enumeration value="E09"/>
-        <enumeration value="E10"/>
-        <enumeration value="E11"/>
-        <enumeration value="E12"/>
-        <enumeration value="E14"/>
-        <enumeration value="E15"/>
-        <enumeration value="E16"/>
-        <enumeration value="E17"/>
-        <enumeration value="E18"/>
-        <enumeration value="E19"/>
-        <enumeration value="E20"/>
-        <enumeration value="E21"/>
-        <enumeration value="E22"/>
-        <enumeration value="E23"/>
-        <enumeration value="E25"/>
-        <enumeration value="E27"/>
-        <enumeration value="E28"/>
-        <enumeration value="E30"/>
-        <enumeration value="E31"/>
-        <enumeration value="E32"/>
-        <enumeration value="E33"/>
-        <enumeration value="E34"/>
-        <enumeration value="E35"/>
-        <enumeration value="E36"/>
-        <enumeration value="E37"/>
-        <enumeration value="E38"/>
-        <enumeration value="E39"/>
-        <enumeration value="E4"/>
-        <enumeration value="E40"/>
-        <enumeration value="E41"/>
-        <enumeration value="E42"/>
-        <enumeration value="E43"/>
-        <enumeration value="E44"/>
-        <enumeration value="E45"/>
-        <enumeration value="E46"/>
-        <enumeration value="E47"/>
-        <enumeration value="E48"/>
-        <enumeration value="E49"/>
-        <enumeration value="E50"/>
-        <enumeration value="E51"/>
-        <enumeration value="E52"/>
-        <enumeration value="E53"/>
-        <enumeration value="E54"/>
-        <enumeration value="E55"/>
-        <enumeration value="E56"/>
-        <enumeration value="E57"/>
-        <enumeration value="E58"/>
-        <enumeration value="E59"/>
-        <enumeration value="E60"/>
-        <enumeration value="E61"/>
-        <enumeration value="E62"/>
-        <enumeration value="E63"/>
-        <enumeration value="E64"/>
-        <enumeration value="E65"/>
-        <enumeration value="E66"/>
-        <enumeration value="E67"/>
-        <enumeration value="E68"/>
-        <enumeration value="E69"/>
-        <enumeration value="E70"/>
-        <enumeration value="E71"/>
-        <enumeration value="E72"/>
-        <enumeration value="E73"/>
-        <enumeration value="E74"/>
-        <enumeration value="E75"/>
-        <enumeration value="E76"/>
-        <enumeration value="E77"/>
-        <enumeration value="E78"/>
-        <enumeration value="E79"/>
-        <enumeration value="E80"/>
-        <enumeration value="E81"/>
-        <enumeration value="E82"/>
-        <enumeration value="E83"/>
-        <enumeration value="E84"/>
-        <enumeration value="E85"/>
-        <enumeration value="E86"/>
-        <enumeration value="E87"/>
-        <enumeration value="E88"/>
-        <enumeration value="E89"/>
-        <enumeration value="E90"/>
-        <enumeration value="E91"/>
-        <enumeration value="E92"/>
-        <enumeration value="E93"/>
-        <enumeration value="E94"/>
-        <enumeration value="E95"/>
-        <enumeration value="E96"/>
-        <enumeration value="E97"/>
-        <enumeration value="E98"/>
-        <enumeration value="E99"/>
-        <enumeration value="EA"/>
-        <enumeration value="EB"/>
-        <enumeration value="EQ"/>
-        <enumeration value="F01"/>
-        <enumeration value="F02"/>
-        <enumeration value="F03"/>
-        <enumeration value="F04"/>
-        <enumeration value="F05"/>
-        <enumeration value="F06"/>
-        <enumeration value="F07"/>
-        <enumeration value="F08"/>
-        <enumeration value="F10"/>
-        <enumeration value="F11"/>
-        <enumeration value="F12"/>
-        <enumeration value="F13"/>
-        <enumeration value="F14"/>
-        <enumeration value="F15"/>
-        <enumeration value="F16"/>
-        <enumeration value="F17"/>
-        <enumeration value="F18"/>
-        <enumeration value="F19"/>
-        <enumeration value="F20"/>
-        <enumeration value="F21"/>
-        <enumeration value="F22"/>
-        <enumeration value="F23"/>
-        <enumeration value="F24"/>
-        <enumeration value="F25"/>
-        <enumeration value="F26"/>
-        <enumeration value="F27"/>
-        <enumeration value="F28"/>
-        <enumeration value="F29"/>
-        <enumeration value="F30"/>
-        <enumeration value="F31"/>
-        <enumeration value="F32"/>
-        <enumeration value="F33"/>
-        <enumeration value="F34"/>
-        <enumeration value="F35"/>
-        <enumeration value="F36"/>
-        <enumeration value="F37"/>
-        <enumeration value="F38"/>
-        <enumeration value="F39"/>
-        <enumeration value="F40"/>
-        <enumeration value="F41"/>
-        <enumeration value="F42"/>
-        <enumeration value="F43"/>
-        <enumeration value="F44"/>
-        <enumeration value="F45"/>
-        <enumeration value="F46"/>
-        <enumeration value="F47"/>
-        <enumeration value="F48"/>
-        <enumeration value="F49"/>
-        <enumeration value="F50"/>
-        <enumeration value="F51"/>
-        <enumeration value="F52"/>
-        <enumeration value="F53"/>
-        <enumeration value="F54"/>
-        <enumeration value="F55"/>
-        <enumeration value="F56"/>
-        <enumeration value="F57"/>
-        <enumeration value="F58"/>
-        <enumeration value="F59"/>
-        <enumeration value="F60"/>
-        <enumeration value="F61"/>
-        <enumeration value="F62"/>
-        <enumeration value="F63"/>
-        <enumeration value="F64"/>
-        <enumeration value="F65"/>
-        <enumeration value="F66"/>
-        <enumeration value="F67"/>
-        <enumeration value="F68"/>
-        <enumeration value="F69"/>
-        <enumeration value="F70"/>
-        <enumeration value="F71"/>
-        <enumeration value="F72"/>
-        <enumeration value="F73"/>
-        <enumeration value="F74"/>
-        <enumeration value="F75"/>
-        <enumeration value="F76"/>
-        <enumeration value="F77"/>
-        <enumeration value="F78"/>
-        <enumeration value="F79"/>
-        <enumeration value="F80"/>
-        <enumeration value="F81"/>
-        <enumeration value="F82"/>
-        <enumeration value="F83"/>
-        <enumeration value="F84"/>
-        <enumeration value="F85"/>
-        <enumeration value="F86"/>
-        <enumeration value="F87"/>
-        <enumeration value="F88"/>
-        <enumeration value="F89"/>
-        <enumeration value="F90"/>
-        <enumeration value="F91"/>
-        <enumeration value="F92"/>
-        <enumeration value="F93"/>
-        <enumeration value="F94"/>
-        <enumeration value="F95"/>
-        <enumeration value="F96"/>
-        <enumeration value="F97"/>
-        <enumeration value="F98"/>
-        <enumeration value="F99"/>
-        <enumeration value="FAH"/>
-        <enumeration value="FAR"/>
-        <enumeration value="FBM"/>
-        <enumeration value="FC"/>
-        <enumeration value="FF"/>
-        <enumeration value="FH"/>
-        <enumeration value="FIT"/>
-        <enumeration value="FL"/>
-        <enumeration value="FOT"/>
-        <enumeration value="FP"/>
-        <enumeration value="FR"/>
-        <enumeration value="FS"/>
-        <enumeration value="FTK"/>
-        <enumeration value="FTQ"/>
-        <enumeration value="G01"/>
-        <enumeration value="G04"/>
-        <enumeration value="G05"/>
-        <enumeration value="G06"/>
-        <enumeration value="G08"/>
-        <enumeration value="G09"/>
-        <enumeration value="G10"/>
-        <enumeration value="G11"/>
-        <enumeration value="G12"/>
-        <enumeration value="G13"/>
-        <enumeration value="G14"/>
-        <enumeration value="G15"/>
-        <enumeration value="G16"/>
-        <enumeration value="G17"/>
-        <enumeration value="G18"/>
-        <enumeration value="G19"/>
-        <enumeration value="G2"/>
-        <enumeration value="G20"/>
-        <enumeration value="G21"/>
-        <enumeration value="G23"/>
-        <enumeration value="G24"/>
-        <enumeration value="G25"/>
-        <enumeration value="G26"/>
-        <enumeration value="G27"/>
-        <enumeration value="G28"/>
-        <enumeration value="G29"/>
-        <enumeration value="G3"/>
-        <enumeration value="G30"/>
-        <enumeration value="G31"/>
-        <enumeration value="G32"/>
-        <enumeration value="G33"/>
-        <enumeration value="G34"/>
-        <enumeration value="G35"/>
-        <enumeration value="G36"/>
-        <enumeration value="G37"/>
-        <enumeration value="G38"/>
-        <enumeration value="G39"/>
-        <enumeration value="G40"/>
-        <enumeration value="G41"/>
-        <enumeration value="G42"/>
-        <enumeration value="G43"/>
-        <enumeration value="G44"/>
-        <enumeration value="G45"/>
-        <enumeration value="G46"/>
-        <enumeration value="G47"/>
-        <enumeration value="G48"/>
-        <enumeration value="G49"/>
-        <enumeration value="G50"/>
-        <enumeration value="G51"/>
-        <enumeration value="G52"/>
-        <enumeration value="G53"/>
-        <enumeration value="G54"/>
-        <enumeration value="G55"/>
-        <enumeration value="G56"/>
-        <enumeration value="G57"/>
-        <enumeration value="G58"/>
-        <enumeration value="G59"/>
-        <enumeration value="G60"/>
-        <enumeration value="G61"/>
-        <enumeration value="G62"/>
-        <enumeration value="G63"/>
-        <enumeration value="G64"/>
-        <enumeration value="G65"/>
-        <enumeration value="G66"/>
-        <enumeration value="G67"/>
-        <enumeration value="G68"/>
-        <enumeration value="G69"/>
-        <enumeration value="G70"/>
-        <enumeration value="G71"/>
-        <enumeration value="G72"/>
-        <enumeration value="G73"/>
-        <enumeration value="G74"/>
-        <enumeration value="G75"/>
-        <enumeration value="G76"/>
-        <enumeration value="G77"/>
-        <enumeration value="G78"/>
-        <enumeration value="G79"/>
-        <enumeration value="G80"/>
-        <enumeration value="G81"/>
-        <enumeration value="G82"/>
-        <enumeration value="G83"/>
-        <enumeration value="G84"/>
-        <enumeration value="G85"/>
-        <enumeration value="G86"/>
-        <enumeration value="G87"/>
-        <enumeration value="G88"/>
-        <enumeration value="G89"/>
-        <enumeration value="G90"/>
-        <enumeration value="G91"/>
-        <enumeration value="G92"/>
-        <enumeration value="G93"/>
-        <enumeration value="G94"/>
-        <enumeration value="G95"/>
-        <enumeration value="G96"/>
-        <enumeration value="G97"/>
-        <enumeration value="G98"/>
-        <enumeration value="G99"/>
-        <enumeration value="GB"/>
-        <enumeration value="GBQ"/>
-        <enumeration value="GDW"/>
-        <enumeration value="GE"/>
-        <enumeration value="GF"/>
-        <enumeration value="GFI"/>
-        <enumeration value="GGR"/>
-        <enumeration value="GIA"/>
-        <enumeration value="GIC"/>
-        <enumeration value="GII"/>
-        <enumeration value="GIP"/>
-        <enumeration value="GJ"/>
-        <enumeration value="GL"/>
-        <enumeration value="GLD"/>
-        <enumeration value="GLI"/>
-        <enumeration value="GLL"/>
-        <enumeration value="GM"/>
-        <enumeration value="GO"/>
-        <enumeration value="GP"/>
-        <enumeration value="GQ"/>
-        <enumeration value="GRM"/>
-        <enumeration value="GRN"/>
-        <enumeration value="GRO"/>
-        <enumeration value="GRT"/>
-        <enumeration value="GT"/>
-        <enumeration value="GV"/>
-        <enumeration value="GWH"/>
-        <enumeration value="H03"/>
-        <enumeration value="H04"/>
-        <enumeration value="H05"/>
-        <enumeration value="H06"/>
-        <enumeration value="H07"/>
-        <enumeration value="H08"/>
-        <enumeration value="H09"/>
-        <enumeration value="H10"/>
-        <enumeration value="H11"/>
-        <enumeration value="H12"/>
-        <enumeration value="H13"/>
-        <enumeration value="H14"/>
-        <enumeration value="H15"/>
-        <enumeration value="H16"/>
-        <enumeration value="H18"/>
-        <enumeration value="H19"/>
-        <enumeration value="H20"/>
-        <enumeration value="H21"/>
-        <enumeration value="H22"/>
-        <enumeration value="H23"/>
-        <enumeration value="H24"/>
-        <enumeration value="H25"/>
-        <enumeration value="H26"/>
-        <enumeration value="H27"/>
-        <enumeration value="H28"/>
-        <enumeration value="H29"/>
-        <enumeration value="H30"/>
-        <enumeration value="H31"/>
-        <enumeration value="H32"/>
-        <enumeration value="H33"/>
-        <enumeration value="H34"/>
-        <enumeration value="H35"/>
-        <enumeration value="H36"/>
-        <enumeration value="H37"/>
-        <enumeration value="H38"/>
-        <enumeration value="H39"/>
-        <enumeration value="H40"/>
-        <enumeration value="H41"/>
-        <enumeration value="H42"/>
-        <enumeration value="H43"/>
-        <enumeration value="H44"/>
-        <enumeration value="H45"/>
-        <enumeration value="H46"/>
-        <enumeration value="H47"/>
-        <enumeration value="H48"/>
-        <enumeration value="H49"/>
-        <enumeration value="H50"/>
-        <enumeration value="H51"/>
-        <enumeration value="H52"/>
-        <enumeration value="H53"/>
-        <enumeration value="H54"/>
-        <enumeration value="H55"/>
-        <enumeration value="H56"/>
-        <enumeration value="H57"/>
-        <enumeration value="H58"/>
-        <enumeration value="H59"/>
-        <enumeration value="H60"/>
-        <enumeration value="H61"/>
-        <enumeration value="H62"/>
-        <enumeration value="H63"/>
-        <enumeration value="H64"/>
-        <enumeration value="H65"/>
-        <enumeration value="H66"/>
-        <enumeration value="H67"/>
-        <enumeration value="H68"/>
-        <enumeration value="H69"/>
-        <enumeration value="H70"/>
-        <enumeration value="H71"/>
-        <enumeration value="H72"/>
-        <enumeration value="H73"/>
-        <enumeration value="H74"/>
-        <enumeration value="H75"/>
-        <enumeration value="H76"/>
-        <enumeration value="H77"/>
-        <enumeration value="H78"/>
-        <enumeration value="H79"/>
-        <enumeration value="H80"/>
-        <enumeration value="H81"/>
-        <enumeration value="H82"/>
-        <enumeration value="H83"/>
-        <enumeration value="H84"/>
-        <enumeration value="H85"/>
-        <enumeration value="H87"/>
-        <enumeration value="H88"/>
-        <enumeration value="H89"/>
-        <enumeration value="H90"/>
-        <enumeration value="H91"/>
-        <enumeration value="H92"/>
-        <enumeration value="H93"/>
-        <enumeration value="H94"/>
-        <enumeration value="H95"/>
-        <enumeration value="H96"/>
-        <enumeration value="H98"/>
-        <enumeration value="H99"/>
-        <enumeration value="HA"/>
-        <enumeration value="HAR"/>
-        <enumeration value="HBA"/>
-        <enumeration value="HBX"/>
-        <enumeration value="HC"/>
-        <enumeration value="HDW"/>
-        <enumeration value="HEA"/>
-        <enumeration value="HGM"/>
-        <enumeration value="HH"/>
-        <enumeration value="HIU"/>
-        <enumeration value="HJ"/>
-        <enumeration value="HKM"/>
-        <enumeration value="HLT"/>
-        <enumeration value="HM"/>
-        <enumeration value="HMQ"/>
-        <enumeration value="HMT"/>
-        <enumeration value="HN"/>
-        <enumeration value="HP"/>
-        <enumeration value="HPA"/>
-        <enumeration value="HTZ"/>
-        <enumeration value="HUR"/>
-        <enumeration value="IA"/>
-        <enumeration value="IE"/>
-        <enumeration value="INH"/>
-        <enumeration value="INK"/>
-        <enumeration value="INQ"/>
-        <enumeration value="ISD"/>
-        <enumeration value="IU"/>
-        <enumeration value="IV"/>
-        <enumeration value="J10"/>
-        <enumeration value="J12"/>
-        <enumeration value="J13"/>
-        <enumeration value="J14"/>
-        <enumeration value="J15"/>
-        <enumeration value="J16"/>
-        <enumeration value="J17"/>
-        <enumeration value="J18"/>
-        <enumeration value="J19"/>
-        <enumeration value="J2"/>
-        <enumeration value="J20"/>
-        <enumeration value="J21"/>
-        <enumeration value="J22"/>
-        <enumeration value="J23"/>
-        <enumeration value="J24"/>
-        <enumeration value="J25"/>
-        <enumeration value="J26"/>
-        <enumeration value="J27"/>
-        <enumeration value="J28"/>
-        <enumeration value="J29"/>
-        <enumeration value="J30"/>
-        <enumeration value="J31"/>
-        <enumeration value="J32"/>
-        <enumeration value="J33"/>
-        <enumeration value="J34"/>
-        <enumeration value="J35"/>
-        <enumeration value="J36"/>
-        <enumeration value="J38"/>
-        <enumeration value="J39"/>
-        <enumeration value="J40"/>
-        <enumeration value="J41"/>
-        <enumeration value="J42"/>
-        <enumeration value="J43"/>
-        <enumeration value="J44"/>
-        <enumeration value="J45"/>
-        <enumeration value="J46"/>
-        <enumeration value="J47"/>
-        <enumeration value="J48"/>
-        <enumeration value="J49"/>
-        <enumeration value="J50"/>
-        <enumeration value="J51"/>
-        <enumeration value="J52"/>
-        <enumeration value="J53"/>
-        <enumeration value="J54"/>
-        <enumeration value="J55"/>
-        <enumeration value="J56"/>
-        <enumeration value="J57"/>
-        <enumeration value="J58"/>
-        <enumeration value="J59"/>
-        <enumeration value="J60"/>
-        <enumeration value="J61"/>
-        <enumeration value="J62"/>
-        <enumeration value="J63"/>
-        <enumeration value="J64"/>
-        <enumeration value="J65"/>
-        <enumeration value="J66"/>
-        <enumeration value="J67"/>
-        <enumeration value="J68"/>
-        <enumeration value="J69"/>
-        <enumeration value="J70"/>
-        <enumeration value="J71"/>
-        <enumeration value="J72"/>
-        <enumeration value="J73"/>
-        <enumeration value="J74"/>
-        <enumeration value="J75"/>
-        <enumeration value="J76"/>
-        <enumeration value="J78"/>
-        <enumeration value="J79"/>
-        <enumeration value="J81"/>
-        <enumeration value="J82"/>
-        <enumeration value="J83"/>
-        <enumeration value="J84"/>
-        <enumeration value="J85"/>
-        <enumeration value="J87"/>
-        <enumeration value="J89"/>
-        <enumeration value="J90"/>
-        <enumeration value="J91"/>
-        <enumeration value="J92"/>
-        <enumeration value="J93"/>
-        <enumeration value="J94"/>
-        <enumeration value="J95"/>
-        <enumeration value="J96"/>
-        <enumeration value="J97"/>
-        <enumeration value="J98"/>
-        <enumeration value="J99"/>
-        <enumeration value="JE"/>
-        <enumeration value="JK"/>
-        <enumeration value="JM"/>
-        <enumeration value="JNT"/>
-        <enumeration value="JOU"/>
-        <enumeration value="JPS"/>
-        <enumeration value="JWL"/>
-        <enumeration value="K1"/>
-        <enumeration value="K10"/>
-        <enumeration value="K11"/>
-        <enumeration value="K12"/>
-        <enumeration value="K13"/>
-        <enumeration value="K14"/>
-        <enumeration value="K15"/>
-        <enumeration value="K16"/>
-        <enumeration value="K17"/>
-        <enumeration value="K18"/>
-        <enumeration value="K19"/>
-        <enumeration value="K2"/>
-        <enumeration value="K20"/>
-        <enumeration value="K21"/>
-        <enumeration value="K22"/>
-        <enumeration value="K23"/>
-        <enumeration value="K24"/>
-        <enumeration value="K25"/>
-        <enumeration value="K26"/>
-        <enumeration value="K27"/>
-        <enumeration value="K28"/>
-        <enumeration value="K3"/>
-        <enumeration value="K30"/>
-        <enumeration value="K31"/>
-        <enumeration value="K32"/>
-        <enumeration value="K33"/>
-        <enumeration value="K34"/>
-        <enumeration value="K35"/>
-        <enumeration value="K36"/>
-        <enumeration value="K37"/>
-        <enumeration value="K38"/>
-        <enumeration value="K39"/>
-        <enumeration value="K40"/>
-        <enumeration value="K41"/>
-        <enumeration value="K42"/>
-        <enumeration value="K43"/>
-        <enumeration value="K45"/>
-        <enumeration value="K46"/>
-        <enumeration value="K47"/>
-        <enumeration value="K48"/>
-        <enumeration value="K49"/>
-        <enumeration value="K5"/>
-        <enumeration value="K50"/>
-        <enumeration value="K51"/>
-        <enumeration value="K52"/>
-        <enumeration value="K53"/>
-        <enumeration value="K54"/>
-        <enumeration value="K55"/>
-        <enumeration value="K58"/>
-        <enumeration value="K59"/>
-        <enumeration value="K6"/>
-        <enumeration value="K60"/>
-        <enumeration value="K61"/>
-        <enumeration value="K62"/>
-        <enumeration value="K63"/>
-        <enumeration value="K64"/>
-        <enumeration value="K65"/>
-        <enumeration value="K66"/>
-        <enumeration value="K67"/>
-        <enumeration value="K68"/>
-        <enumeration value="K69"/>
-        <enumeration value="K70"/>
-        <enumeration value="K71"/>
-        <enumeration value="K73"/>
-        <enumeration value="K74"/>
-        <enumeration value="K75"/>
-        <enumeration value="K76"/>
-        <enumeration value="K77"/>
-        <enumeration value="K78"/>
-        <enumeration value="K79"/>
-        <enumeration value="K80"/>
-        <enumeration value="K81"/>
-        <enumeration value="K82"/>
-        <enumeration value="K83"/>
-        <enumeration value="K84"/>
-        <enumeration value="K85"/>
-        <enumeration value="K86"/>
-        <enumeration value="K87"/>
-        <enumeration value="K88"/>
-        <enumeration value="K89"/>
-        <enumeration value="K90"/>
-        <enumeration value="K91"/>
-        <enumeration value="K92"/>
-        <enumeration value="K93"/>
-        <enumeration value="K94"/>
-        <enumeration value="K95"/>
-        <enumeration value="K96"/>
-        <enumeration value="K97"/>
-        <enumeration value="K98"/>
-        <enumeration value="K99"/>
-        <enumeration value="KA"/>
-        <enumeration value="KAT"/>
-        <enumeration value="KB"/>
-        <enumeration value="KBA"/>
-        <enumeration value="KCC"/>
-        <enumeration value="KDW"/>
-        <enumeration value="KEL"/>
-        <enumeration value="KGM"/>
-        <enumeration value="KGS"/>
-        <enumeration value="KHY"/>
-        <enumeration value="KHZ"/>
-        <enumeration value="KI"/>
-        <enumeration value="KIC"/>
-        <enumeration value="KIP"/>
-        <enumeration value="KJ"/>
-        <enumeration value="KJO"/>
-        <enumeration value="KL"/>
-        <enumeration value="KLK"/>
-        <enumeration value="KLX"/>
-        <enumeration value="KMA"/>
-        <enumeration value="KMH"/>
-        <enumeration value="KMK"/>
-        <enumeration value="KMQ"/>
-        <enumeration value="KMT"/>
-        <enumeration value="KNI"/>
-        <enumeration value="KNM"/>
-        <enumeration value="KNS"/>
-        <enumeration value="KNT"/>
-        <enumeration value="KO"/>
-        <enumeration value="KPA"/>
-        <enumeration value="KPH"/>
-        <enumeration value="KPO"/>
-        <enumeration value="KPP"/>
-        <enumeration value="KR"/>
-        <enumeration value="KSD"/>
-        <enumeration value="KSH"/>
-        <enumeration value="KT"/>
-        <enumeration value="KTN"/>
-        <enumeration value="KUR"/>
-        <enumeration value="KVA"/>
-        <enumeration value="KVR"/>
-        <enumeration value="KVT"/>
-        <enumeration value="KW"/>
-        <enumeration value="KWH"/>
-        <enumeration value="KWN"/>
-        <enumeration value="KWO"/>
-        <enumeration value="KWS"/>
-        <enumeration value="KWT"/>
-        <enumeration value="KX"/>
-        <enumeration value="L10"/>
-        <enumeration value="L11"/>
-        <enumeration value="L12"/>
-        <enumeration value="L13"/>
-        <enumeration value="L14"/>
-        <enumeration value="L15"/>
-        <enumeration value="L16"/>
-        <enumeration value="L17"/>
-        <enumeration value="L18"/>
-        <enumeration value="L19"/>
-        <enumeration value="L2"/>
-        <enumeration value="L20"/>
-        <enumeration value="L21"/>
-        <enumeration value="L23"/>
-        <enumeration value="L24"/>
-        <enumeration value="L25"/>
-        <enumeration value="L26"/>
-        <enumeration value="L27"/>
-        <enumeration value="L28"/>
-        <enumeration value="L29"/>
-        <enumeration value="L30"/>
-        <enumeration value="L31"/>
-        <enumeration value="L32"/>
-        <enumeration value="L33"/>
-        <enumeration value="L34"/>
-        <enumeration value="L35"/>
-        <enumeration value="L36"/>
-        <enumeration value="L37"/>
-        <enumeration value="L38"/>
-        <enumeration value="L39"/>
-        <enumeration value="L40"/>
-        <enumeration value="L41"/>
-        <enumeration value="L42"/>
-        <enumeration value="L43"/>
-        <enumeration value="L44"/>
-        <enumeration value="L45"/>
-        <enumeration value="L46"/>
-        <enumeration value="L47"/>
-        <enumeration value="L48"/>
-        <enumeration value="L49"/>
-        <enumeration value="L50"/>
-        <enumeration value="L51"/>
-        <enumeration value="L52"/>
-        <enumeration value="L53"/>
-        <enumeration value="L54"/>
-        <enumeration value="L55"/>
-        <enumeration value="L56"/>
-        <enumeration value="L57"/>
-        <enumeration value="L58"/>
-        <enumeration value="L59"/>
-        <enumeration value="L60"/>
-        <enumeration value="L63"/>
-        <enumeration value="L64"/>
-        <enumeration value="L65"/>
-        <enumeration value="L66"/>
-        <enumeration value="L67"/>
-        <enumeration value="L68"/>
-        <enumeration value="L69"/>
-        <enumeration value="L70"/>
-        <enumeration value="L71"/>
-        <enumeration value="L72"/>
-        <enumeration value="L73"/>
-        <enumeration value="L74"/>
-        <enumeration value="L75"/>
-        <enumeration value="L76"/>
-        <enumeration value="L77"/>
-        <enumeration value="L78"/>
-        <enumeration value="L79"/>
-        <enumeration value="L80"/>
-        <enumeration value="L81"/>
-        <enumeration value="L82"/>
-        <enumeration value="L83"/>
-        <enumeration value="L84"/>
-        <enumeration value="L85"/>
-        <enumeration value="L86"/>
-        <enumeration value="L87"/>
-        <enumeration value="L88"/>
-        <enumeration value="L89"/>
-        <enumeration value="L90"/>
-        <enumeration value="L91"/>
-        <enumeration value="L92"/>
-        <enumeration value="L93"/>
-        <enumeration value="L94"/>
-        <enumeration value="L95"/>
-        <enumeration value="L96"/>
-        <enumeration value="L98"/>
-        <enumeration value="L99"/>
-        <enumeration value="LA"/>
-        <enumeration value="LAC"/>
-        <enumeration value="LBR"/>
-        <enumeration value="LBT"/>
-        <enumeration value="LD"/>
-        <enumeration value="LEF"/>
-        <enumeration value="LF"/>
-        <enumeration value="LH"/>
-        <enumeration value="LK"/>
-        <enumeration value="LM"/>
-        <enumeration value="LN"/>
-        <enumeration value="LO"/>
-        <enumeration value="LP"/>
-        <enumeration value="LPA"/>
-        <enumeration value="LR"/>
-        <enumeration value="LS"/>
-        <enumeration value="LTN"/>
-        <enumeration value="LTR"/>
-        <enumeration value="LUB"/>
-        <enumeration value="LUM"/>
-        <enumeration value="LUX"/>
-        <enumeration value="LY"/>
-        <enumeration value="M1"/>
-        <enumeration value="M10"/>
-        <enumeration value="M11"/>
-        <enumeration value="M12"/>
-        <enumeration value="M13"/>
-        <enumeration value="M14"/>
-        <enumeration value="M15"/>
-        <enumeration value="M16"/>
-        <enumeration value="M17"/>
-        <enumeration value="M18"/>
-        <enumeration value="M19"/>
-        <enumeration value="M20"/>
-        <enumeration value="M21"/>
-        <enumeration value="M22"/>
-        <enumeration value="M23"/>
-        <enumeration value="M24"/>
-        <enumeration value="M25"/>
-        <enumeration value="M26"/>
-        <enumeration value="M27"/>
-        <enumeration value="M29"/>
-        <enumeration value="M30"/>
-        <enumeration value="M31"/>
-        <enumeration value="M32"/>
-        <enumeration value="M33"/>
-        <enumeration value="M34"/>
-        <enumeration value="M35"/>
-        <enumeration value="M36"/>
-        <enumeration value="M37"/>
-        <enumeration value="M38"/>
-        <enumeration value="M39"/>
-        <enumeration value="M4"/>
-        <enumeration value="M40"/>
-        <enumeration value="M41"/>
-        <enumeration value="M42"/>
-        <enumeration value="M43"/>
-        <enumeration value="M44"/>
-        <enumeration value="M45"/>
-        <enumeration value="M46"/>
-        <enumeration value="M47"/>
-        <enumeration value="M48"/>
-        <enumeration value="M49"/>
-        <enumeration value="M5"/>
-        <enumeration value="M50"/>
-        <enumeration value="M51"/>
-        <enumeration value="M52"/>
-        <enumeration value="M53"/>
-        <enumeration value="M55"/>
-        <enumeration value="M56"/>
-        <enumeration value="M57"/>
-        <enumeration value="M58"/>
-        <enumeration value="M59"/>
-        <enumeration value="M60"/>
-        <enumeration value="M61"/>
-        <enumeration value="M62"/>
-        <enumeration value="M63"/>
-        <enumeration value="M64"/>
-        <enumeration value="M65"/>
-        <enumeration value="M66"/>
-        <enumeration value="M67"/>
-        <enumeration value="M68"/>
-        <enumeration value="M69"/>
-        <enumeration value="M7"/>
-        <enumeration value="M70"/>
-        <enumeration value="M71"/>
-        <enumeration value="M72"/>
-        <enumeration value="M73"/>
-        <enumeration value="M74"/>
-        <enumeration value="M75"/>
-        <enumeration value="M76"/>
-        <enumeration value="M77"/>
-        <enumeration value="M78"/>
-        <enumeration value="M79"/>
-        <enumeration value="M80"/>
-        <enumeration value="M81"/>
-        <enumeration value="M82"/>
-        <enumeration value="M83"/>
-        <enumeration value="M84"/>
-        <enumeration value="M85"/>
-        <enumeration value="M86"/>
-        <enumeration value="M87"/>
-        <enumeration value="M88"/>
-        <enumeration value="M89"/>
-        <enumeration value="M9"/>
-        <enumeration value="M90"/>
-        <enumeration value="M91"/>
-        <enumeration value="M92"/>
-        <enumeration value="M93"/>
-        <enumeration value="M94"/>
-        <enumeration value="M95"/>
-        <enumeration value="M96"/>
-        <enumeration value="M97"/>
-        <enumeration value="M98"/>
-        <enumeration value="M99"/>
-        <enumeration value="MAH"/>
-        <enumeration value="MAL"/>
-        <enumeration value="MAM"/>
-        <enumeration value="MAR"/>
-        <enumeration value="MAW"/>
-        <enumeration value="MBE"/>
-        <enumeration value="MBF"/>
-        <enumeration value="MBR"/>
-        <enumeration value="MC"/>
-        <enumeration value="MCU"/>
-        <enumeration value="MD"/>
-        <enumeration value="MGM"/>
-        <enumeration value="MHZ"/>
-        <enumeration value="MIK"/>
-        <enumeration value="MIL"/>
-        <enumeration value="MIN"/>
-        <enumeration value="MIO"/>
-        <enumeration value="MIU"/>
-        <enumeration value="MLD"/>
-        <enumeration value="MLT"/>
-        <enumeration value="MMK"/>
-        <enumeration value="MMQ"/>
-        <enumeration value="MMT"/>
-        <enumeration value="MND"/>
-        <enumeration value="MON"/>
-        <enumeration value="MPA"/>
-        <enumeration value="MQH"/>
-        <enumeration value="MQS"/>
-        <enumeration value="MSK"/>
-        <enumeration value="MTK"/>
-        <enumeration value="MTQ"/>
-        <enumeration value="MTR"/>
-        <enumeration value="MTS"/>
-        <enumeration value="MVA"/>
-        <enumeration value="MWH"/>
-        <enumeration value="N1"/>
-        <enumeration value="N10"/>
-        <enumeration value="N11"/>
-        <enumeration value="N12"/>
-        <enumeration value="N13"/>
-        <enumeration value="N14"/>
-        <enumeration value="N15"/>
-        <enumeration value="N16"/>
-        <enumeration value="N17"/>
-        <enumeration value="N18"/>
-        <enumeration value="N19"/>
-        <enumeration value="N20"/>
-        <enumeration value="N21"/>
-        <enumeration value="N22"/>
-        <enumeration value="N23"/>
-        <enumeration value="N24"/>
-        <enumeration value="N25"/>
-        <enumeration value="N26"/>
-        <enumeration value="N27"/>
-        <enumeration value="N28"/>
-        <enumeration value="N29"/>
-        <enumeration value="N3"/>
-        <enumeration value="N30"/>
-        <enumeration value="N31"/>
-        <enumeration value="N32"/>
-        <enumeration value="N33"/>
-        <enumeration value="N34"/>
-        <enumeration value="N35"/>
-        <enumeration value="N36"/>
-        <enumeration value="N37"/>
-        <enumeration value="N38"/>
-        <enumeration value="N39"/>
-        <enumeration value="N40"/>
-        <enumeration value="N41"/>
-        <enumeration value="N42"/>
-        <enumeration value="N43"/>
-        <enumeration value="N44"/>
-        <enumeration value="N45"/>
-        <enumeration value="N46"/>
-        <enumeration value="N47"/>
-        <enumeration value="N48"/>
-        <enumeration value="N49"/>
-        <enumeration value="N50"/>
-        <enumeration value="N51"/>
-        <enumeration value="N52"/>
-        <enumeration value="N53"/>
-        <enumeration value="N54"/>
-        <enumeration value="N55"/>
-        <enumeration value="N56"/>
-        <enumeration value="N57"/>
-        <enumeration value="N58"/>
-        <enumeration value="N59"/>
-        <enumeration value="N60"/>
-        <enumeration value="N61"/>
-        <enumeration value="N62"/>
-        <enumeration value="N63"/>
-        <enumeration value="N64"/>
-        <enumeration value="N65"/>
-        <enumeration value="N66"/>
-        <enumeration value="N67"/>
-        <enumeration value="N68"/>
-        <enumeration value="N69"/>
-        <enumeration value="N70"/>
-        <enumeration value="N71"/>
-        <enumeration value="N72"/>
-        <enumeration value="N73"/>
-        <enumeration value="N74"/>
-        <enumeration value="N75"/>
-        <enumeration value="N76"/>
-        <enumeration value="N77"/>
-        <enumeration value="N78"/>
-        <enumeration value="N79"/>
-        <enumeration value="N80"/>
-        <enumeration value="N81"/>
-        <enumeration value="N82"/>
-        <enumeration value="N83"/>
-        <enumeration value="N84"/>
-        <enumeration value="N85"/>
-        <enumeration value="N86"/>
-        <enumeration value="N87"/>
-        <enumeration value="N88"/>
-        <enumeration value="N89"/>
-        <enumeration value="N90"/>
-        <enumeration value="N91"/>
-        <enumeration value="N92"/>
-        <enumeration value="N93"/>
-        <enumeration value="N94"/>
-        <enumeration value="N95"/>
-        <enumeration value="N96"/>
-        <enumeration value="N97"/>
-        <enumeration value="N98"/>
-        <enumeration value="N99"/>
-        <enumeration value="NA"/>
-        <enumeration value="NAR"/>
-        <enumeration value="NCL"/>
-        <enumeration value="NEW"/>
-        <enumeration value="NF"/>
-        <enumeration value="NIL"/>
-        <enumeration value="NIU"/>
-        <enumeration value="NL"/>
-        <enumeration value="NM3"/>
-        <enumeration value="NMI"/>
-        <enumeration value="NMP"/>
-        <enumeration value="NPR"/>
-        <enumeration value="NPT"/>
-        <enumeration value="NQ"/>
-        <enumeration value="NR"/>
-        <enumeration value="NT"/>
-        <enumeration value="NTT"/>
-        <enumeration value="NU"/>
-        <enumeration value="NX"/>
-        <enumeration value="OA"/>
-        <enumeration value="ODE"/>
-        <enumeration value="OHM"/>
-        <enumeration value="ON"/>
-        <enumeration value="ONZ"/>
-        <enumeration value="OPM"/>
-        <enumeration value="OT"/>
-        <enumeration value="OZ"/>
-        <enumeration value="OZA"/>
-        <enumeration value="OZI"/>
-        <enumeration value="P1"/>
-        <enumeration value="P10"/>
-        <enumeration value="P11"/>
-        <enumeration value="P12"/>
-        <enumeration value="P13"/>
-        <enumeration value="P14"/>
-        <enumeration value="P15"/>
-        <enumeration value="P16"/>
-        <enumeration value="P17"/>
-        <enumeration value="P18"/>
-        <enumeration value="P19"/>
-        <enumeration value="P2"/>
-        <enumeration value="P20"/>
-        <enumeration value="P21"/>
-        <enumeration value="P22"/>
-        <enumeration value="P23"/>
-        <enumeration value="P24"/>
-        <enumeration value="P25"/>
-        <enumeration value="P26"/>
-        <enumeration value="P27"/>
-        <enumeration value="P28"/>
-        <enumeration value="P29"/>
-        <enumeration value="P30"/>
-        <enumeration value="P31"/>
-        <enumeration value="P32"/>
-        <enumeration value="P33"/>
-        <enumeration value="P34"/>
-        <enumeration value="P35"/>
-        <enumeration value="P36"/>
-        <enumeration value="P37"/>
-        <enumeration value="P38"/>
-        <enumeration value="P39"/>
-        <enumeration value="P40"/>
-        <enumeration value="P41"/>
-        <enumeration value="P42"/>
-        <enumeration value="P43"/>
-        <enumeration value="P44"/>
-        <enumeration value="P45"/>
-        <enumeration value="P46"/>
-        <enumeration value="P47"/>
-        <enumeration value="P48"/>
-        <enumeration value="P49"/>
-        <enumeration value="P5"/>
-        <enumeration value="P50"/>
-        <enumeration value="P51"/>
-        <enumeration value="P52"/>
-        <enumeration value="P53"/>
-        <enumeration value="P54"/>
-        <enumeration value="P55"/>
-        <enumeration value="P56"/>
-        <enumeration value="P57"/>
-        <enumeration value="P58"/>
-        <enumeration value="P59"/>
-        <enumeration value="P60"/>
-        <enumeration value="P61"/>
-        <enumeration value="P62"/>
-        <enumeration value="P63"/>
-        <enumeration value="P64"/>
-        <enumeration value="P65"/>
-        <enumeration value="P66"/>
-        <enumeration value="P67"/>
-        <enumeration value="P68"/>
-        <enumeration value="P69"/>
-        <enumeration value="P70"/>
-        <enumeration value="P71"/>
-        <enumeration value="P72"/>
-        <enumeration value="P73"/>
-        <enumeration value="P74"/>
-        <enumeration value="P75"/>
-        <enumeration value="P76"/>
-        <enumeration value="P77"/>
-        <enumeration value="P78"/>
-        <enumeration value="P79"/>
-        <enumeration value="P80"/>
-        <enumeration value="P81"/>
-        <enumeration value="P82"/>
-        <enumeration value="P83"/>
-        <enumeration value="P84"/>
-        <enumeration value="P85"/>
-        <enumeration value="P86"/>
-        <enumeration value="P87"/>
-        <enumeration value="P88"/>
-        <enumeration value="P89"/>
-        <enumeration value="P90"/>
-        <enumeration value="P91"/>
-        <enumeration value="P92"/>
-        <enumeration value="P93"/>
-        <enumeration value="P94"/>
-        <enumeration value="P95"/>
-        <enumeration value="P96"/>
-        <enumeration value="P97"/>
-        <enumeration value="P98"/>
-        <enumeration value="P99"/>
-        <enumeration value="PAL"/>
-        <enumeration value="PD"/>
-        <enumeration value="PFL"/>
-        <enumeration value="PGL"/>
-        <enumeration value="PI"/>
-        <enumeration value="PLA"/>
-        <enumeration value="PO"/>
-        <enumeration value="PQ"/>
-        <enumeration value="PR"/>
-        <enumeration value="PS"/>
-        <enumeration value="PT"/>
-        <enumeration value="PTD"/>
-        <enumeration value="PTI"/>
-        <enumeration value="PTL"/>
-        <enumeration value="PTN"/>
-        <enumeration value="Q10"/>
-        <enumeration value="Q11"/>
-        <enumeration value="Q12"/>
-        <enumeration value="Q13"/>
-        <enumeration value="Q14"/>
-        <enumeration value="Q15"/>
-        <enumeration value="Q16"/>
-        <enumeration value="Q17"/>
-        <enumeration value="Q18"/>
-        <enumeration value="Q19"/>
-        <enumeration value="Q20"/>
-        <enumeration value="Q21"/>
-        <enumeration value="Q22"/>
-        <enumeration value="Q23"/>
-        <enumeration value="Q24"/>
-        <enumeration value="Q25"/>
-        <enumeration value="Q26"/>
-        <enumeration value="Q27"/>
-        <enumeration value="Q28"/>
-        <enumeration value="Q29"/>
-        <enumeration value="Q3"/>
-        <enumeration value="Q30"/>
-        <enumeration value="Q31"/>
-        <enumeration value="Q32"/>
-        <enumeration value="Q33"/>
-        <enumeration value="Q34"/>
-        <enumeration value="Q35"/>
-        <enumeration value="Q36"/>
-        <enumeration value="Q37"/>
-        <enumeration value="Q38"/>
-        <enumeration value="Q39"/>
-        <enumeration value="Q40"/>
-        <enumeration value="Q41"/>
-        <enumeration value="Q42"/>
-        <enumeration value="QA"/>
-        <enumeration value="QAN"/>
-        <enumeration value="QB"/>
-        <enumeration value="QR"/>
-        <enumeration value="QT"/>
-        <enumeration value="QTD"/>
-        <enumeration value="QTI"/>
-        <enumeration value="QTL"/>
-        <enumeration value="QTR"/>
-        <enumeration value="R1"/>
-        <enumeration value="R9"/>
-        <enumeration value="RH"/>
-        <enumeration value="RM"/>
-        <enumeration value="ROM"/>
-        <enumeration value="RP"/>
-        <enumeration value="RPM"/>
-        <enumeration value="RPS"/>
-        <enumeration value="RT"/>
-        <enumeration value="S3"/>
-        <enumeration value="S4"/>
-        <enumeration value="SAN"/>
-        <enumeration value="SCO"/>
-        <enumeration value="SCR"/>
-        <enumeration value="SEC"/>
-        <enumeration value="SET"/>
-        <enumeration value="SG"/>
-        <enumeration value="SHT"/>
-        <enumeration value="SIE"/>
-        <enumeration value="SM3"/>
-        <enumeration value="SMI"/>
-        <enumeration value="SQ"/>
-        <enumeration value="SQR"/>
-        <enumeration value="SR"/>
-        <enumeration value="STC"/>
-        <enumeration value="STI"/>
-        <enumeration value="STK"/>
-        <enumeration value="STL"/>
-        <enumeration value="STN"/>
-        <enumeration value="STW"/>
-        <enumeration value="SW"/>
-        <enumeration value="SX"/>
-        <enumeration value="SYR"/>
-        <enumeration value="T0"/>
-        <enumeration value="T3"/>
-        <enumeration value="TAH"/>
-        <enumeration value="TAN"/>
-        <enumeration value="TI"/>
-        <enumeration value="TIC"/>
-        <enumeration value="TIP"/>
-        <enumeration value="TKM"/>
-        <enumeration value="TMS"/>
-        <enumeration value="TNE"/>
-        <enumeration value="TP"/>
-        <enumeration value="TPI"/>
-        <enumeration value="TPR"/>
-        <enumeration value="TQD"/>
-        <enumeration value="TRL"/>
-        <enumeration value="TST"/>
-        <enumeration value="TTS"/>
-        <enumeration value="U1"/>
-        <enumeration value="U2"/>
-        <enumeration value="UA"/>
-        <enumeration value="UB"/>
-        <enumeration value="UC"/>
-        <enumeration value="VA"/>
-        <enumeration value="VLT"/>
-        <enumeration value="VP"/>
-        <enumeration value="W2"/>
-        <enumeration value="WA"/>
-        <enumeration value="WB"/>
-        <enumeration value="WCD"/>
-        <enumeration value="WE"/>
-        <enumeration value="WEB"/>
-        <enumeration value="WEE"/>
-        <enumeration value="WG"/>
-        <enumeration value="WHR"/>
-        <enumeration value="WM"/>
-        <enumeration value="WSD"/>
-        <enumeration value="WTT"/>
-        <enumeration value="WW"/>
-        <enumeration value="X1"/>
-        <enumeration value="YDK"/>
-        <enumeration value="YDQ"/>
-        <enumeration value="YRD"/>
-        <enumeration value="Z11"/>
-        <enumeration value="ZP"/>
-        <enumeration value="ZZ"/>
-        <enumeration value="X1A"/>
-        <enumeration value="X1B"/>
-        <enumeration value="X1D"/>
-        <enumeration value="X1F"/>
-        <enumeration value="X1G"/>
-        <enumeration value="X1W"/>
-        <enumeration value="X2C"/>
-        <enumeration value="X3A"/>
-        <enumeration value="X3H"/>
-        <enumeration value="X43"/>
-        <enumeration value="X44"/>
-        <enumeration value="X4A"/>
-        <enumeration value="X4B"/>
-        <enumeration value="X4C"/>
-        <enumeration value="X4D"/>
-        <enumeration value="X4F"/>
-        <enumeration value="X4G"/>
-        <enumeration value="X4H"/>
-        <enumeration value="X5H"/>
-        <enumeration value="X5L"/>
-        <enumeration value="X5M"/>
-        <enumeration value="X6H"/>
-        <enumeration value="X6P"/>
-        <enumeration value="X7A"/>
-        <enumeration value="X7B"/>
-        <enumeration value="X8A"/>
-        <enumeration value="X8B"/>
-        <enumeration value="X8C"/>
-        <enumeration value="XAA"/>
-        <enumeration value="XAB"/>
-        <enumeration value="XAC"/>
-        <enumeration value="XAD"/>
-        <enumeration value="XAE"/>
-        <enumeration value="XAF"/>
-        <enumeration value="XAG"/>
-        <enumeration value="XAH"/>
-        <enumeration value="XAI"/>
-        <enumeration value="XAJ"/>
-        <enumeration value="XAL"/>
-        <enumeration value="XAM"/>
-        <enumeration value="XAP"/>
-        <enumeration value="XAT"/>
-        <enumeration value="XAV"/>
-        <enumeration value="XB4"/>
-        <enumeration value="XBA"/>
-        <enumeration value="XBB"/>
-        <enumeration value="XBC"/>
-        <enumeration value="XBD"/>
-        <enumeration value="XBE"/>
-        <enumeration value="XBF"/>
-        <enumeration value="XBG"/>
-        <enumeration value="XBH"/>
-        <enumeration value="XBI"/>
-        <enumeration value="XBJ"/>
-        <enumeration value="XBK"/>
-        <enumeration value="XBL"/>
-        <enumeration value="XBM"/>
-        <enumeration value="XBN"/>
-        <enumeration value="XBO"/>
-        <enumeration value="XBP"/>
-        <enumeration value="XBQ"/>
-        <enumeration value="XBR"/>
-        <enumeration value="XBS"/>
-        <enumeration value="XBT"/>
-        <enumeration value="XBU"/>
-        <enumeration value="XBV"/>
-        <enumeration value="XBW"/>
-        <enumeration value="XBX"/>
-        <enumeration value="XBY"/>
-        <enumeration value="XBZ"/>
-        <enumeration value="XCA"/>
-        <enumeration value="XCB"/>
-        <enumeration value="XCC"/>
-        <enumeration value="XCD"/>
-        <enumeration value="XCE"/>
-        <enumeration value="XCF"/>
-        <enumeration value="XCG"/>
-        <enumeration value="XCH"/>
-        <enumeration value="XCI"/>
-        <enumeration value="XCJ"/>
-        <enumeration value="XCK"/>
-        <enumeration value="XCL"/>
-        <enumeration value="XCM"/>
-        <enumeration value="XCN"/>
-        <enumeration value="XCO"/>
-        <enumeration value="XCP"/>
-        <enumeration value="XCQ"/>
-        <enumeration value="XCR"/>
-        <enumeration value="XCS"/>
-        <enumeration value="XCT"/>
-        <enumeration value="XCU"/>
-        <enumeration value="XCV"/>
-        <enumeration value="XCW"/>
-        <enumeration value="XCX"/>
-        <enumeration value="XCY"/>
-        <enumeration value="XCZ"/>
-        <enumeration value="XDA"/>
-        <enumeration value="XDB"/>
-        <enumeration value="XDC"/>
-        <enumeration value="XDG"/>
-        <enumeration value="XDH"/>
-        <enumeration value="XDI"/>
-        <enumeration value="XDJ"/>
-        <enumeration value="XDK"/>
-        <enumeration value="XDL"/>
-        <enumeration value="XDM"/>
-        <enumeration value="XDN"/>
-        <enumeration value="XDP"/>
-        <enumeration value="XDR"/>
-        <enumeration value="XDS"/>
-        <enumeration value="XDT"/>
-        <enumeration value="XDU"/>
-        <enumeration value="XDV"/>
-        <enumeration value="XDW"/>
-        <enumeration value="XDX"/>
-        <enumeration value="XDY"/>
-        <enumeration value="XEC"/>
-        <enumeration value="XED"/>
-        <enumeration value="XEE"/>
-        <enumeration value="XEF"/>
-        <enumeration value="XEG"/>
-        <enumeration value="XEH"/>
-        <enumeration value="XEI"/>
-        <enumeration value="XEN"/>
-        <enumeration value="XFB"/>
-        <enumeration value="XFC"/>
-        <enumeration value="XFD"/>
-        <enumeration value="XFE"/>
-        <enumeration value="XFI"/>
-        <enumeration value="XFL"/>
-        <enumeration value="XFO"/>
-        <enumeration value="XFP"/>
-        <enumeration value="XFR"/>
-        <enumeration value="XFT"/>
-        <enumeration value="XFW"/>
-        <enumeration value="XFX"/>
-        <enumeration value="XGB"/>
-        <enumeration value="XGI"/>
-        <enumeration value="XGL"/>
-        <enumeration value="XGR"/>
-        <enumeration value="XGU"/>
-        <enumeration value="XGY"/>
-        <enumeration value="XGZ"/>
-        <enumeration value="XHA"/>
-        <enumeration value="XHB"/>
-        <enumeration value="XHC"/>
-        <enumeration value="XHG"/>
-        <enumeration value="XHN"/>
-        <enumeration value="XHR"/>
-        <enumeration value="XIA"/>
-        <enumeration value="XIB"/>
-        <enumeration value="XIC"/>
-        <enumeration value="XID"/>
-        <enumeration value="XIE"/>
-        <enumeration value="XIF"/>
-        <enumeration value="XIG"/>
-        <enumeration value="XIH"/>
-        <enumeration value="XIK"/>
-        <enumeration value="XIL"/>
-        <enumeration value="XIN"/>
-        <enumeration value="XIZ"/>
-        <enumeration value="XJB"/>
-        <enumeration value="XJC"/>
-        <enumeration value="XJG"/>
-        <enumeration value="XJR"/>
-        <enumeration value="XJT"/>
-        <enumeration value="XJY"/>
-        <enumeration value="XKG"/>
-        <enumeration value="XKI"/>
-        <enumeration value="XLE"/>
-        <enumeration value="XLG"/>
-        <enumeration value="XLT"/>
-        <enumeration value="XLU"/>
-        <enumeration value="XLV"/>
-        <enumeration value="XLZ"/>
-        <enumeration value="XMA"/>
-        <enumeration value="XMB"/>
-        <enumeration value="XMC"/>
-        <enumeration value="XME"/>
-        <enumeration value="XMR"/>
-        <enumeration value="XMS"/>
-        <enumeration value="XMT"/>
-        <enumeration value="XMW"/>
-        <enumeration value="XMX"/>
-        <enumeration value="XNA"/>
-        <enumeration value="XNE"/>
-        <enumeration value="XNF"/>
-        <enumeration value="XNG"/>
-        <enumeration value="XNS"/>
-        <enumeration value="XNT"/>
-        <enumeration value="XNU"/>
-        <enumeration value="XNV"/>
-        <enumeration value="XOA"/>
-        <enumeration value="XOB"/>
-        <enumeration value="XOC"/>
-        <enumeration value="XOD"/>
-        <enumeration value="XOE"/>
-        <enumeration value="XOF"/>
-        <enumeration value="XOK"/>
-        <enumeration value="XOT"/>
-        <enumeration value="XOU"/>
-        <enumeration value="XP2"/>
-        <enumeration value="XPA"/>
-        <enumeration value="XPB"/>
-        <enumeration value="XPC"/>
-        <enumeration value="XPD"/>
-        <enumeration value="XPE"/>
-        <enumeration value="XPF"/>
-        <enumeration value="XPG"/>
-        <enumeration value="XPH"/>
-        <enumeration value="XPI"/>
-        <enumeration value="XPJ"/>
-        <enumeration value="XPK"/>
-        <enumeration value="XPL"/>
-        <enumeration value="XPN"/>
-        <enumeration value="XPO"/>
-        <enumeration value="XPP"/>
-        <enumeration value="XPR"/>
-        <enumeration value="XPT"/>
-        <enumeration value="XPU"/>
-        <enumeration value="XPV"/>
-        <enumeration value="XPX"/>
-        <enumeration value="XPY"/>
-        <enumeration value="XPZ"/>
-        <enumeration value="XQA"/>
-        <enumeration value="XQB"/>
-        <enumeration value="XQC"/>
-        <enumeration value="XQD"/>
-        <enumeration value="XQF"/>
-        <enumeration value="XQG"/>
-        <enumeration value="XQH"/>
-        <enumeration value="XQJ"/>
-        <enumeration value="XQK"/>
-        <enumeration value="XQL"/>
-        <enumeration value="XQM"/>
-        <enumeration value="XQN"/>
-        <enumeration value="XQP"/>
-        <enumeration value="XQQ"/>
-        <enumeration value="XQR"/>
-        <enumeration value="XQS"/>
-        <enumeration value="XRD"/>
-        <enumeration value="XRG"/>
-        <enumeration value="XRJ"/>
-        <enumeration value="XRK"/>
-        <enumeration value="XRL"/>
-        <enumeration value="XRO"/>
-        <enumeration value="XRT"/>
-        <enumeration value="XRZ"/>
-        <enumeration value="XSA"/>
-        <enumeration value="XSB"/>
-        <enumeration value="XSC"/>
-        <enumeration value="XSD"/>
-        <enumeration value="XSE"/>
-        <enumeration value="XSH"/>
-        <enumeration value="XSI"/>
-        <enumeration value="XSK"/>
-        <enumeration value="XSL"/>
-        <enumeration value="XSM"/>
-        <enumeration value="XSO"/>
-        <enumeration value="XSP"/>
-        <enumeration value="XSS"/>
-        <enumeration value="XST"/>
-        <enumeration value="XSU"/>
-        <enumeration value="XSV"/>
-        <enumeration value="XSW"/>
-        <enumeration value="XSY"/>
-        <enumeration value="XSZ"/>
-        <enumeration value="XT1"/>
-        <enumeration value="XTB"/>
-        <enumeration value="XTC"/>
-        <enumeration value="XTD"/>
-        <enumeration value="XTE"/>
-        <enumeration value="XTG"/>
-        <enumeration value="XTI"/>
-        <enumeration value="XTK"/>
-        <enumeration value="XTL"/>
-        <enumeration value="XTN"/>
-        <enumeration value="XTO"/>
-        <enumeration value="XTR"/>
-        <enumeration value="XTS"/>
-        <enumeration value="XTT"/>
-        <enumeration value="XTU"/>
-        <enumeration value="XTV"/>
-        <enumeration value="XTW"/>
-        <enumeration value="XTY"/>
-        <enumeration value="XTZ"/>
-        <enumeration value="XUC"/>
-        <enumeration value="XUN"/>
-        <enumeration value="XVA"/>
-        <enumeration value="XVG"/>
-        <enumeration value="XVI"/>
-        <enumeration value="XVK"/>
-        <enumeration value="XVL"/>
-        <enumeration value="XVN"/>
-        <enumeration value="XVO"/>
-        <enumeration value="XVP"/>
-        <enumeration value="XVQ"/>
-        <enumeration value="XVR"/>
-        <enumeration value="XVS"/>
-        <enumeration value="XVY"/>
-        <enumeration value="XWA"/>
-        <enumeration value="XWB"/>
-        <enumeration value="XWC"/>
-        <enumeration value="XWD"/>
-        <enumeration value="XWF"/>
-        <enumeration value="XWG"/>
-        <enumeration value="XWH"/>
-        <enumeration value="XWJ"/>
-        <enumeration value="XWK"/>
-        <enumeration value="XWL"/>
-        <enumeration value="XWM"/>
-        <enumeration value="XWN"/>
-        <enumeration value="XWP"/>
-        <enumeration value="XWQ"/>
-        <enumeration value="XWR"/>
-        <enumeration value="XWS"/>
-        <enumeration value="XWT"/>
-        <enumeration value="XWU"/>
-        <enumeration value="XWV"/>
-        <enumeration value="XWW"/>
-        <enumeration value="XWX"/>
-        <enumeration value="XWY"/>
-        <enumeration value="XWZ"/>
-        <enumeration value="XXA"/>
-        <enumeration value="XXB"/>
-        <enumeration value="XXC"/>
-        <enumeration value="XXD"/>
-        <enumeration value="XXF"/>
-        <enumeration value="XXG"/>
-        <enumeration value="XXH"/>
-        <enumeration value="XXJ"/>
-        <enumeration value="XXK"/>
-        <enumeration value="XYA"/>
-        <enumeration value="XYB"/>
-        <enumeration value="XYC"/>
-        <enumeration value="XYD"/>
-        <enumeration value="XYF"/>
-        <enumeration value="XYG"/>
-        <enumeration value="XYH"/>
-        <enumeration value="XYJ"/>
-        <enumeration value="XYK"/>
-        <enumeration value="XYL"/>
-        <enumeration value="XYM"/>
-        <enumeration value="XYN"/>
-        <enumeration value="XYP"/>
-        <enumeration value="XYQ"/>
-        <enumeration value="XYR"/>
-        <enumeration value="XYS"/>
-        <enumeration value="XYT"/>
-        <enumeration value="XYV"/>
-        <enumeration value="XYW"/>
-        <enumeration value="XYX"/>
-        <enumeration value="XYY"/>
-        <enumeration value="XYZ"/>
-        <enumeration value="XZA"/>
-        <enumeration value="XZB"/>
-        <enumeration value="XZC"/>
-        <enumeration value="XZD"/>
-        <enumeration value="XZF"/>
-        <enumeration value="XZG"/>
-        <enumeration value="XZH"/>
-        <enumeration value="XZJ"/>
-        <enumeration value="XZK"/>
-        <enumeration value="XZL"/>
-        <enumeration value="XZM"/>
-        <enumeration value="XZN"/>
-        <enumeration value="XZP"/>
-        <enumeration value="XZQ"/>
-        <enumeration value="XZR"/>
-        <enumeration value="XZS"/>
-        <enumeration value="XZT"/>
-        <enumeration value="XZU"/>
-        <enumeration value="XZV"/>
-        <enumeration value="XZW"/>
-        <enumeration value="XZX"/>
-        <enumeration value="XZY"/>
-        <enumeration value="XZZ"/>
-    </cl>
-    <cl id="7">
-        <enumeration value="AA"/>
-        <enumeration value="AB"/>
-        <enumeration value="AC"/>
-        <enumeration value="AD"/>
-        <enumeration value="AE"/>
-        <enumeration value="AF"/>
-        <enumeration value="AG"/>
-        <enumeration value="AH"/>
-        <enumeration value="AI"/>
-        <enumeration value="AJ"/>
-        <enumeration value="AK"/>
-        <enumeration value="AL"/>
-        <enumeration value="AM"/>
-        <enumeration value="AN"/>
-        <enumeration value="AO"/>
-        <enumeration value="AP"/>
-        <enumeration value="AQ"/>
-        <enumeration value="AR"/>
-        <enumeration value="AS"/>
-        <enumeration value="AT"/>
-        <enumeration value="AU"/>
-        <enumeration value="AV"/>
-        <enumeration value="AW"/>
-        <enumeration value="AX"/>
-        <enumeration value="AY"/>
-        <enumeration value="AZ"/>
-        <enumeration value="BA"/>
-        <enumeration value="BB"/>
-        <enumeration value="BC"/>
-        <enumeration value="BD"/>
-        <enumeration value="BE"/>
-        <enumeration value="BF"/>
-        <enumeration value="BG"/>
-        <enumeration value="BH"/>
-        <enumeration value="BI"/>
-        <enumeration value="BJ"/>
-        <enumeration value="BK"/>
-        <enumeration value="BL"/>
-        <enumeration value="BM"/>
-        <enumeration value="BN"/>
-        <enumeration value="BO"/>
-        <enumeration value="BP"/>
-        <enumeration value="BQ"/>
-        <enumeration value="BR"/>
-        <enumeration value="BS"/>
-        <enumeration value="BT"/>
-        <enumeration value="BU"/>
-        <enumeration value="BV"/>
-        <enumeration value="BW"/>
-        <enumeration value="BX"/>
-        <enumeration value="BY"/>
-        <enumeration value="BZ"/>
-        <enumeration value="CC"/>
-        <enumeration value="CG"/>
-        <enumeration value="CL"/>
-        <enumeration value="CR"/>
-        <enumeration value="CV"/>
-        <enumeration value="DR"/>
-        <enumeration value="DW"/>
-        <enumeration value="EC"/>
-        <enumeration value="EF"/>
-        <enumeration value="EN"/>
-        <enumeration value="FS"/>
-        <enumeration value="GB"/>
-        <enumeration value="GN"/>
-        <enumeration value="GS"/>
-        <enumeration value="HS"/>
-        <enumeration value="IB"/>
-        <enumeration value="IN"/>
-        <enumeration value="IS"/>
-        <enumeration value="IT"/>
-        <enumeration value="IZ"/>
-        <enumeration value="MA"/>
-        <enumeration value="MF"/>
-        <enumeration value="MN"/>
-        <enumeration value="MP"/>
-        <enumeration value="NB"/>
-        <enumeration value="ON"/>
-        <enumeration value="PD"/>
-        <enumeration value="PL"/>
-        <enumeration value="PO"/>
-        <enumeration value="PV"/>
-        <enumeration value="QS"/>
-        <enumeration value="RC"/>
-        <enumeration value="RN"/>
-        <enumeration value="RU"/>
-        <enumeration value="RY"/>
-        <enumeration value="SA"/>
-        <enumeration value="SG"/>
-        <enumeration value="SK"/>
-        <enumeration value="SN"/>
-        <enumeration value="SRS"/>
-        <enumeration value="SRT"/>
-        <enumeration value="SRU"/>
-        <enumeration value="SRV"/>
-        <enumeration value="SRW"/>
-        <enumeration value="SRX"/>
-        <enumeration value="SRY"/>
-        <enumeration value="SRZ"/>
-        <enumeration value="SS"/>
-        <enumeration value="SSA"/>
-        <enumeration value="SSB"/>
-        <enumeration value="SSC"/>
-        <enumeration value="SSD"/>
-        <enumeration value="SSE"/>
-        <enumeration value="SSF"/>
-        <enumeration value="SSG"/>
-        <enumeration value="SSH"/>
-        <enumeration value="SSI"/>
-        <enumeration value="SSJ"/>
-        <enumeration value="SSK"/>
-        <enumeration value="SSL"/>
-        <enumeration value="SSM"/>
-        <enumeration value="SSN"/>
-        <enumeration value="SSO"/>
-        <enumeration value="SSP"/>
-        <enumeration value="SSQ"/>
-        <enumeration value="SSR"/>
-        <enumeration value="SSS"/>
-        <enumeration value="SST"/>
-        <enumeration value="SSU"/>
-        <enumeration value="SSV"/>
-        <enumeration value="SSW"/>
-        <enumeration value="SSX"/>
-        <enumeration value="SSY"/>
-        <enumeration value="SSZ"/>
-        <enumeration value="ST"/>
-        <enumeration value="STA"/>
-        <enumeration value="STB"/>
-        <enumeration value="STC"/>
-        <enumeration value="STD"/>
-        <enumeration value="STE"/>
-        <enumeration value="STF"/>
-        <enumeration value="STG"/>
-        <enumeration value="STH"/>
-        <enumeration value="STI"/>
-        <enumeration value="STJ"/>
-        <enumeration value="STK"/>
-        <enumeration value="STL"/>
-        <enumeration value="STM"/>
-        <enumeration value="STN"/>
-        <enumeration value="STO"/>
-        <enumeration value="STP"/>
-        <enumeration value="STQ"/>
-        <enumeration value="STR"/>
-        <enumeration value="STS"/>
-        <enumeration value="STT"/>
-        <enumeration value="STU"/>
-        <enumeration value="STV"/>
-        <enumeration value="STW"/>
-        <enumeration value="STX"/>
-        <enumeration value="STY"/>
-        <enumeration value="STZ"/>
-        <enumeration value="SUA"/>
-        <enumeration value="SUB"/>
-        <enumeration value="SUC"/>
-        <enumeration value="SUD"/>
-        <enumeration value="SUE"/>
-        <enumeration value="SUF"/>
-        <enumeration value="SUG"/>
-        <enumeration value="SUH"/>
-        <enumeration value="SUI"/>
-        <enumeration value="SUJ"/>
-        <enumeration value="SUK"/>
-        <enumeration value="SUL"/>
-        <enumeration value="SUM"/>
-        <enumeration value="TG"/>
-        <enumeration value="TSN"/>
-        <enumeration value="TSO"/>
-        <enumeration value="TSP"/>
-        <enumeration value="TST"/>
-        <enumeration value="UA"/>
-        <enumeration value="UP"/>
-        <enumeration value="VN"/>
-        <enumeration value="VP"/>
-        <enumeration value="VS"/>
-        <enumeration value="VX"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="8">
-        <enumeration value="AA"/>
-        <enumeration value="AB"/>
-        <enumeration value="AC"/>
-        <enumeration value="AD"/>
-        <enumeration value="AE"/>
-        <enumeration value="AF"/>
-        <enumeration value="AG"/>
-        <enumeration value="AH"/>
-        <enumeration value="AI"/>
-        <enumeration value="AJ"/>
-        <enumeration value="AK"/>
-        <enumeration value="AL"/>
-        <enumeration value="AM"/>
-        <enumeration value="AN"/>
-        <enumeration value="AO"/>
-        <enumeration value="AP"/>
-        <enumeration value="AQ"/>
-        <enumeration value="AR"/>
-        <enumeration value="AS"/>
-        <enumeration value="AT"/>
-        <enumeration value="AU"/>
-        <enumeration value="AV"/>
-        <enumeration value="AW"/>
-        <enumeration value="AX"/>
-        <enumeration value="AY"/>
-        <enumeration value="AZ"/>
-        <enumeration value="BA"/>
-        <enumeration value="BB"/>
-        <enumeration value="BC"/>
-        <enumeration value="BD"/>
-        <enumeration value="BE"/>
-        <enumeration value="BF"/>
-        <enumeration value="BG"/>
-        <enumeration value="BH"/>
-        <enumeration value="BI"/>
-        <enumeration value="BJ"/>
-        <enumeration value="BK"/>
-        <enumeration value="BL"/>
-        <enumeration value="BM"/>
-        <enumeration value="BN"/>
-        <enumeration value="BO"/>
-        <enumeration value="BP"/>
-        <enumeration value="BQ"/>
-        <enumeration value="BR"/>
-        <enumeration value="BS"/>
-        <enumeration value="BT"/>
-        <enumeration value="BU"/>
-        <enumeration value="BV"/>
-        <enumeration value="BW"/>
-        <enumeration value="BX"/>
-        <enumeration value="BY"/>
-        <enumeration value="BZ"/>
-        <enumeration value="CC"/>
-        <enumeration value="CG"/>
-        <enumeration value="CL"/>
-        <enumeration value="CR"/>
-        <enumeration value="CV"/>
-        <enumeration value="DR"/>
-        <enumeration value="DW"/>
-        <enumeration value="EC"/>
-        <enumeration value="EF"/>
-        <enumeration value="EN"/>
-        <enumeration value="FS"/>
-        <enumeration value="GB"/>
-        <enumeration value="GN"/>
-        <enumeration value="GS"/>
-        <enumeration value="HS"/>
-        <enumeration value="IB"/>
-        <enumeration value="IN"/>
-        <enumeration value="IS"/>
-        <enumeration value="IT"/>
-        <enumeration value="IZ"/>
-        <enumeration value="MA"/>
-        <enumeration value="MF"/>
-        <enumeration value="MN"/>
-        <enumeration value="MP"/>
-        <enumeration value="NB"/>
-        <enumeration value="ON"/>
-        <enumeration value="PD"/>
-        <enumeration value="PL"/>
-        <enumeration value="PO"/>
-        <enumeration value="PV"/>
-        <enumeration value="QS"/>
-        <enumeration value="RC"/>
-        <enumeration value="RN"/>
-        <enumeration value="RU"/>
-        <enumeration value="RY"/>
-        <enumeration value="SA"/>
-        <enumeration value="SG"/>
-        <enumeration value="SK"/>
-        <enumeration value="SN"/>
-        <enumeration value="SRS"/>
-        <enumeration value="SRT"/>
-        <enumeration value="SRU"/>
-        <enumeration value="SRV"/>
-        <enumeration value="SRW"/>
-        <enumeration value="SRX"/>
-        <enumeration value="SRY"/>
-        <enumeration value="SRZ"/>
-        <enumeration value="SS"/>
-        <enumeration value="SSA"/>
-        <enumeration value="SSB"/>
-        <enumeration value="SSC"/>
-        <enumeration value="SSD"/>
-        <enumeration value="SSE"/>
-        <enumeration value="SSF"/>
-        <enumeration value="SSG"/>
-        <enumeration value="SSH"/>
-        <enumeration value="SSI"/>
-        <enumeration value="SSJ"/>
-        <enumeration value="SSK"/>
-        <enumeration value="SSL"/>
-        <enumeration value="SSM"/>
-        <enumeration value="SSN"/>
-        <enumeration value="SSO"/>
-        <enumeration value="SSP"/>
-        <enumeration value="SSQ"/>
-        <enumeration value="SSR"/>
-        <enumeration value="SSS"/>
-        <enumeration value="SST"/>
-        <enumeration value="SSU"/>
-        <enumeration value="SSV"/>
-        <enumeration value="SSW"/>
-        <enumeration value="SSX"/>
-        <enumeration value="SSY"/>
-        <enumeration value="SSZ"/>
-        <enumeration value="ST"/>
-        <enumeration value="STA"/>
-        <enumeration value="STB"/>
-        <enumeration value="STC"/>
-        <enumeration value="STD"/>
-        <enumeration value="STE"/>
-        <enumeration value="STF"/>
-        <enumeration value="STG"/>
-        <enumeration value="STH"/>
-        <enumeration value="STI"/>
-        <enumeration value="STJ"/>
-        <enumeration value="STK"/>
-        <enumeration value="STL"/>
-        <enumeration value="STM"/>
-        <enumeration value="STN"/>
-        <enumeration value="STO"/>
-        <enumeration value="STP"/>
-        <enumeration value="STQ"/>
-        <enumeration value="STR"/>
-        <enumeration value="STS"/>
-        <enumeration value="STT"/>
-        <enumeration value="STU"/>
-        <enumeration value="STV"/>
-        <enumeration value="STW"/>
-        <enumeration value="STX"/>
-        <enumeration value="STY"/>
-        <enumeration value="STZ"/>
-        <enumeration value="SUA"/>
-        <enumeration value="SUB"/>
-        <enumeration value="SUC"/>
-        <enumeration value="SUD"/>
-        <enumeration value="SUE"/>
-        <enumeration value="SUF"/>
-        <enumeration value="SUG"/>
-        <enumeration value="SUH"/>
-        <enumeration value="SUI"/>
-        <enumeration value="SUJ"/>
-        <enumeration value="SUK"/>
-        <enumeration value="SUL"/>
-        <enumeration value="SUM"/>
-        <enumeration value="TG"/>
-        <enumeration value="TSN"/>
-        <enumeration value="TSO"/>
-        <enumeration value="TSP"/>
-        <enumeration value="TST"/>
-        <enumeration value="UA"/>
-        <enumeration value="UP"/>
-        <enumeration value="VN"/>
-        <enumeration value="VP"/>
-        <enumeration value="VS"/>
-        <enumeration value="VX"/>
-        <enumeration value="ZZZ"/>
-    </cl>
-    <cl id="9">
-        <enumeration value="X1A"/>
-        <enumeration value="X1B"/>
-        <enumeration value="X1D"/>
-        <enumeration value="X1F"/>
-        <enumeration value="X1G"/>
-        <enumeration value="X1W"/>
-        <enumeration value="X2C"/>
-        <enumeration value="X3A"/>
-        <enumeration value="X3H"/>
-        <enumeration value="X43"/>
-        <enumeration value="X44"/>
-        <enumeration value="X4A"/>
-        <enumeration value="X4B"/>
-        <enumeration value="X4C"/>
-        <enumeration value="X4D"/>
-        <enumeration value="X4F"/>
-        <enumeration value="X4G"/>
-        <enumeration value="X4H"/>
-        <enumeration value="X5H"/>
-        <enumeration value="X5L"/>
-        <enumeration value="X5M"/>
-        <enumeration value="X6H"/>
-        <enumeration value="X6P"/>
-        <enumeration value="X7A"/>
-        <enumeration value="X7B"/>
-        <enumeration value="X8A"/>
-        <enumeration value="X8B"/>
-        <enumeration value="X8C"/>
-        <enumeration value="XAA"/>
-        <enumeration value="XAB"/>
-        <enumeration value="XAC"/>
-        <enumeration value="XAD"/>
-        <enumeration value="XAE"/>
-        <enumeration value="XAF"/>
-        <enumeration value="XAG"/>
-        <enumeration value="XAH"/>
-        <enumeration value="XAI"/>
-        <enumeration value="XAJ"/>
-        <enumeration value="XAL"/>
-        <enumeration value="XAM"/>
-        <enumeration value="XAP"/>
-        <enumeration value="XAT"/>
-        <enumeration value="XAV"/>
-        <enumeration value="XB4"/>
-        <enumeration value="XBA"/>
-        <enumeration value="XBB"/>
-        <enumeration value="XBC"/>
-        <enumeration value="XBD"/>
-        <enumeration value="XBE"/>
-        <enumeration value="XBF"/>
-        <enumeration value="XBG"/>
-        <enumeration value="XBH"/>
-        <enumeration value="XBI"/>
-        <enumeration value="XBJ"/>
-        <enumeration value="XBK"/>
-        <enumeration value="XBL"/>
-        <enumeration value="XBM"/>
-        <enumeration value="XBN"/>
-        <enumeration value="XBO"/>
-        <enumeration value="XBP"/>
-        <enumeration value="XBQ"/>
-        <enumeration value="XBR"/>
-        <enumeration value="XBS"/>
-        <enumeration value="XBT"/>
-        <enumeration value="XBU"/>
-        <enumeration value="XBV"/>
-        <enumeration value="XBW"/>
-        <enumeration value="XBX"/>
-        <enumeration value="XBY"/>
-        <enumeration value="XBZ"/>
-        <enumeration value="XCA"/>
-        <enumeration value="XCB"/>
-        <enumeration value="XCC"/>
-        <enumeration value="XCD"/>
-        <enumeration value="XCE"/>
-        <enumeration value="XCF"/>
-        <enumeration value="XCG"/>
-        <enumeration value="XCH"/>
-        <enumeration value="XCI"/>
-        <enumeration value="XCJ"/>
-        <enumeration value="XCK"/>
-        <enumeration value="XCL"/>
-        <enumeration value="XCM"/>
-        <enumeration value="XCN"/>
-        <enumeration value="XCO"/>
-        <enumeration value="XCP"/>
-        <enumeration value="XCQ"/>
-        <enumeration value="XCR"/>
-        <enumeration value="XCS"/>
-        <enumeration value="XCT"/>
-        <enumeration value="XCU"/>
-        <enumeration value="XCV"/>
-        <enumeration value="XCW"/>
-        <enumeration value="XCX"/>
-        <enumeration value="XCY"/>
-        <enumeration value="XCZ"/>
-        <enumeration value="XDA"/>
-        <enumeration value="XDB"/>
-        <enumeration value="XDC"/>
-        <enumeration value="XDG"/>
-        <enumeration value="XDH"/>
-        <enumeration value="XDI"/>
-        <enumeration value="XDJ"/>
-        <enumeration value="XDK"/>
-        <enumeration value="XDL"/>
-        <enumeration value="XDM"/>
-        <enumeration value="XDN"/>
-        <enumeration value="XDP"/>
-        <enumeration value="XDR"/>
-        <enumeration value="XDS"/>
-        <enumeration value="XDT"/>
-        <enumeration value="XDU"/>
-        <enumeration value="XDV"/>
-        <enumeration value="XDW"/>
-        <enumeration value="XDX"/>
-        <enumeration value="XDY"/>
-        <enumeration value="XEC"/>
-        <enumeration value="XED"/>
-        <enumeration value="XEE"/>
-        <enumeration value="XEF"/>
-        <enumeration value="XEG"/>
-        <enumeration value="XEH"/>
-        <enumeration value="XEI"/>
-        <enumeration value="XEN"/>
-        <enumeration value="XFB"/>
-        <enumeration value="XFC"/>
-        <enumeration value="XFD"/>
-        <enumeration value="XFE"/>
-        <enumeration value="XFI"/>
-        <enumeration value="XFL"/>
-        <enumeration value="XFO"/>
-        <enumeration value="XFP"/>
-        <enumeration value="XFR"/>
-        <enumeration value="XFT"/>
-        <enumeration value="XFW"/>
-        <enumeration value="XFX"/>
-        <enumeration value="XGB"/>
-        <enumeration value="XGI"/>
-        <enumeration value="XGL"/>
-        <enumeration value="XGR"/>
-        <enumeration value="XGU"/>
-        <enumeration value="XGY"/>
-        <enumeration value="XGZ"/>
-        <enumeration value="XHA"/>
-        <enumeration value="XHB"/>
-        <enumeration value="XHC"/>
-        <enumeration value="XHG"/>
-        <enumeration value="XHN"/>
-        <enumeration value="XHR"/>
-        <enumeration value="XIA"/>
-        <enumeration value="XIB"/>
-        <enumeration value="XIC"/>
-        <enumeration value="XID"/>
-        <enumeration value="XIE"/>
-        <enumeration value="XIF"/>
-        <enumeration value="XIG"/>
-        <enumeration value="XIH"/>
-        <enumeration value="XIK"/>
-        <enumeration value="XIL"/>
-        <enumeration value="XIN"/>
-        <enumeration value="XIZ"/>
-        <enumeration value="XJB"/>
-        <enumeration value="XJC"/>
-        <enumeration value="XJG"/>
-        <enumeration value="XJR"/>
-        <enumeration value="XJT"/>
-        <enumeration value="XJY"/>
-        <enumeration value="XKG"/>
-        <enumeration value="XKI"/>
-        <enumeration value="XLE"/>
-        <enumeration value="XLG"/>
-        <enumeration value="XLT"/>
-        <enumeration value="XLU"/>
-        <enumeration value="XLV"/>
-        <enumeration value="XLZ"/>
-        <enumeration value="XMA"/>
-        <enumeration value="XMB"/>
-        <enumeration value="XMC"/>
-        <enumeration value="XME"/>
-        <enumeration value="XMR"/>
-        <enumeration value="XMS"/>
-        <enumeration value="XMT"/>
-        <enumeration value="XMW"/>
-        <enumeration value="XMX"/>
-        <enumeration value="XNA"/>
-        <enumeration value="XNE"/>
-        <enumeration value="XNF"/>
-        <enumeration value="XNG"/>
-        <enumeration value="XNS"/>
-        <enumeration value="XNT"/>
-        <enumeration value="XNU"/>
-        <enumeration value="XNV"/>
-        <enumeration value="XOA"/>
-        <enumeration value="XOB"/>
-        <enumeration value="XOC"/>
-        <enumeration value="XOD"/>
-        <enumeration value="XOE"/>
-        <enumeration value="XOF"/>
-        <enumeration value="XOK"/>
-        <enumeration value="XOT"/>
-        <enumeration value="XOU"/>
-        <enumeration value="XP2"/>
-        <enumeration value="XPA"/>
-        <enumeration value="XPB"/>
-        <enumeration value="XPC"/>
-        <enumeration value="XPD"/>
-        <enumeration value="XPE"/>
-        <enumeration value="XPF"/>
-        <enumeration value="XPG"/>
-        <enumeration value="XPH"/>
-        <enumeration value="XPI"/>
-        <enumeration value="XPJ"/>
-        <enumeration value="XPK"/>
-        <enumeration value="XPL"/>
-        <enumeration value="XPN"/>
-        <enumeration value="XPO"/>
-        <enumeration value="XPP"/>
-        <enumeration value="XPR"/>
-        <enumeration value="XPT"/>
-        <enumeration value="XPU"/>
-        <enumeration value="XPV"/>
-        <enumeration value="XPX"/>
-        <enumeration value="XPY"/>
-        <enumeration value="XPZ"/>
-        <enumeration value="XQA"/>
-        <enumeration value="XQB"/>
-        <enumeration value="XQC"/>
-        <enumeration value="XQD"/>
-        <enumeration value="XQF"/>
-        <enumeration value="XQG"/>
-        <enumeration value="XQH"/>
-        <enumeration value="XQJ"/>
-        <enumeration value="XQK"/>
-        <enumeration value="XQL"/>
-        <enumeration value="XQM"/>
-        <enumeration value="XQN"/>
-        <enumeration value="XQP"/>
-        <enumeration value="XQQ"/>
-        <enumeration value="XQR"/>
-        <enumeration value="XQS"/>
-        <enumeration value="XRD"/>
-        <enumeration value="XRG"/>
-        <enumeration value="XRJ"/>
-        <enumeration value="XRK"/>
-        <enumeration value="XRL"/>
-        <enumeration value="XRO"/>
-        <enumeration value="XRT"/>
-        <enumeration value="XRZ"/>
-        <enumeration value="XSA"/>
-        <enumeration value="XSB"/>
-        <enumeration value="XSC"/>
-        <enumeration value="XSD"/>
-        <enumeration value="XSE"/>
-        <enumeration value="XSH"/>
-        <enumeration value="XSI"/>
-        <enumeration value="XSK"/>
-        <enumeration value="XSL"/>
-        <enumeration value="XSM"/>
-        <enumeration value="XSO"/>
-        <enumeration value="XSP"/>
-        <enumeration value="XSS"/>
-        <enumeration value="XST"/>
-        <enumeration value="XSU"/>
-        <enumeration value="XSV"/>
-        <enumeration value="XSW"/>
-        <enumeration value="XSY"/>
-        <enumeration value="XSZ"/>
-        <enumeration value="XT1"/>
-        <enumeration value="XTB"/>
-        <enumeration value="XTC"/>
-        <enumeration value="XTD"/>
-        <enumeration value="XTE"/>
-        <enumeration value="XTG"/>
-        <enumeration value="XTI"/>
-        <enumeration value="XTK"/>
-        <enumeration value="XTL"/>
-        <enumeration value="XTN"/>
-        <enumeration value="XTO"/>
-        <enumeration value="XTR"/>
-        <enumeration value="XTS"/>
-        <enumeration value="XTT"/>
-        <enumeration value="XTU"/>
-        <enumeration value="XTV"/>
-        <enumeration value="XTW"/>
-        <enumeration value="XTY"/>
-        <enumeration value="XTZ"/>
-        <enumeration value="XUC"/>
-        <enumeration value="XUN"/>
-        <enumeration value="XVA"/>
-        <enumeration value="XVG"/>
-        <enumeration value="XVI"/>
-        <enumeration value="XVK"/>
-        <enumeration value="XVL"/>
-        <enumeration value="XVN"/>
-        <enumeration value="XVO"/>
-        <enumeration value="XVP"/>
-        <enumeration value="XVQ"/>
-        <enumeration value="XVR"/>
-        <enumeration value="XVS"/>
-        <enumeration value="XVY"/>
-        <enumeration value="XWA"/>
-        <enumeration value="XWB"/>
-        <enumeration value="XWC"/>
-        <enumeration value="XWD"/>
-        <enumeration value="XWF"/>
-        <enumeration value="XWG"/>
-        <enumeration value="XWH"/>
-        <enumeration value="XWJ"/>
-        <enumeration value="XWK"/>
-        <enumeration value="XWL"/>
-        <enumeration value="XWM"/>
-        <enumeration value="XWN"/>
-        <enumeration value="XWP"/>
-        <enumeration value="XWQ"/>
-        <enumeration value="XWR"/>
-        <enumeration value="XWS"/>
-        <enumeration value="XWT"/>
-        <enumeration value="XWU"/>
-        <enumeration value="XWV"/>
-        <enumeration value="XWW"/>
-        <enumeration value="XWX"/>
-        <enumeration value="XWY"/>
-        <enumeration value="XWZ"/>
-        <enumeration value="XXA"/>
-        <enumeration value="XXB"/>
-        <enumeration value="XXC"/>
-        <enumeration value="XXD"/>
-        <enumeration value="XXF"/>
-        <enumeration value="XXG"/>
-        <enumeration value="XXH"/>
-        <enumeration value="XXJ"/>
-        <enumeration value="XXK"/>
-        <enumeration value="XYA"/>
-        <enumeration value="XYB"/>
-        <enumeration value="XYC"/>
-        <enumeration value="XYD"/>
-        <enumeration value="XYF"/>
-        <enumeration value="XYG"/>
-        <enumeration value="XYH"/>
-        <enumeration value="XYJ"/>
-        <enumeration value="XYK"/>
-        <enumeration value="XYL"/>
-        <enumeration value="XYM"/>
-        <enumeration value="XYN"/>
-        <enumeration value="XYP"/>
-        <enumeration value="XYQ"/>
-        <enumeration value="XYR"/>
-        <enumeration value="XYS"/>
-        <enumeration value="XYT"/>
-        <enumeration value="XYV"/>
-        <enumeration value="XYW"/>
-        <enumeration value="XYX"/>
-        <enumeration value="XYY"/>
-        <enumeration value="XYZ"/>
-        <enumeration value="XZA"/>
-        <enumeration value="XZB"/>
-        <enumeration value="XZC"/>
-        <enumeration value="XZD"/>
-        <enumeration value="XZF"/>
-        <enumeration value="XZG"/>
-        <enumeration value="XZH"/>
-        <enumeration value="XZJ"/>
-        <enumeration value="XZK"/>
-        <enumeration value="XZL"/>
-        <enumeration value="XZM"/>
-        <enumeration value="XZN"/>
-        <enumeration value="XZP"/>
-        <enumeration value="XZQ"/>
-        <enumeration value="XZR"/>
-        <enumeration value="XZS"/>
-        <enumeration value="XZT"/>
-        <enumeration value="XZU"/>
-        <enumeration value="XZV"/>
-        <enumeration value="XZW"/>
-        <enumeration value="XZX"/>
-        <enumeration value="XZY"/>
-        <enumeration value="XZZ"/>
-        <enumeration value="10"/>
-        <enumeration value="11"/>
-        <enumeration value="13"/>
-        <enumeration value="14"/>
-        <enumeration value="15"/>
-        <enumeration value="20"/>
-        <enumeration value="21"/>
-        <enumeration value="22"/>
-        <enumeration value="23"/>
-        <enumeration value="24"/>
-        <enumeration value="25"/>
-        <enumeration value="27"/>
-        <enumeration value="28"/>
-        <enumeration value="33"/>
-        <enumeration value="34"/>
-        <enumeration value="35"/>
-        <enumeration value="37"/>
-        <enumeration value="38"/>
-        <enumeration value="40"/>
-        <enumeration value="41"/>
-        <enumeration value="56"/>
-        <enumeration value="57"/>
-        <enumeration value="58"/>
-        <enumeration value="59"/>
-        <enumeration value="60"/>
-        <enumeration value="61"/>
-        <enumeration value="64"/>
-        <enumeration value="66"/>
-        <enumeration value="74"/>
-        <enumeration value="76"/>
-        <enumeration value="77"/>
-        <enumeration value="78"/>
-        <enumeration value="80"/>
-        <enumeration value="81"/>
-        <enumeration value="84"/>
-        <enumeration value="85"/>
-        <enumeration value="87"/>
-        <enumeration value="89"/>
-        <enumeration value="91"/>
-        <enumeration value="1I"/>
-        <enumeration value="2A"/>
-        <enumeration value="2B"/>
-        <enumeration value="2C"/>
-        <enumeration value="2G"/>
-        <enumeration value="2H"/>
-        <enumeration value="2I"/>
-        <enumeration value="2J"/>
-        <enumeration value="2K"/>
-        <enumeration value="2L"/>
-        <enumeration value="2M"/>
-        <enumeration value="2N"/>
-        <enumeration value="2P"/>
-        <enumeration value="2Q"/>
-        <enumeration value="2R"/>
-        <enumeration value="2U"/>
-        <enumeration value="2X"/>
-        <enumeration value="2Y"/>
-        <enumeration value="2Z"/>
-        <enumeration value="3B"/>
-        <enumeration value="3C"/>
-        <enumeration value="4C"/>
-        <enumeration value="4G"/>
-        <enumeration value="4H"/>
-        <enumeration value="4K"/>
-        <enumeration value="4L"/>
-        <enumeration value="4M"/>
-        <enumeration value="4N"/>
-        <enumeration value="4O"/>
-        <enumeration value="4P"/>
-        <enumeration value="4Q"/>
-        <enumeration value="4R"/>
-        <enumeration value="4T"/>
-        <enumeration value="4U"/>
-        <enumeration value="4W"/>
-        <enumeration value="4X"/>
-        <enumeration value="5A"/>
-        <enumeration value="5B"/>
-        <enumeration value="5E"/>
-        <enumeration value="5J"/>
-        <enumeration value="A1"/>
-        <enumeration value="A10"/>
-        <enumeration value="A11"/>
-        <enumeration value="A12"/>
-        <enumeration value="A13"/>
-        <enumeration value="A14"/>
-        <enumeration value="A15"/>
-        <enumeration value="A16"/>
-        <enumeration value="A17"/>
-        <enumeration value="A18"/>
-        <enumeration value="A19"/>
-        <enumeration value="A2"/>
-        <enumeration value="A20"/>
-        <enumeration value="A21"/>
-        <enumeration value="A22"/>
-        <enumeration value="A23"/>
-        <enumeration value="A24"/>
-        <enumeration value="A25"/>
-        <enumeration value="A26"/>
-        <enumeration value="A27"/>
-        <enumeration value="A28"/>
-        <enumeration value="A29"/>
-        <enumeration value="A3"/>
-        <enumeration value="A30"/>
-        <enumeration value="A31"/>
-        <enumeration value="A32"/>
-        <enumeration value="A33"/>
-        <enumeration value="A34"/>
-        <enumeration value="A35"/>
-        <enumeration value="A36"/>
-        <enumeration value="A37"/>
-        <enumeration value="A38"/>
-        <enumeration value="A39"/>
-        <enumeration value="A4"/>
-        <enumeration value="A40"/>
-        <enumeration value="A41"/>
-        <enumeration value="A42"/>
-        <enumeration value="A43"/>
-        <enumeration value="A44"/>
-        <enumeration value="A45"/>
-        <enumeration value="A47"/>
-        <enumeration value="A48"/>
-        <enumeration value="A49"/>
-        <enumeration value="A5"/>
-        <enumeration value="A50"/>
-        <enumeration value="A51"/>
-        <enumeration value="A52"/>
-        <enumeration value="A53"/>
-        <enumeration value="A54"/>
-        <enumeration value="A55"/>
-        <enumeration value="A56"/>
-        <enumeration value="A57"/>
-        <enumeration value="A58"/>
-        <enumeration value="A59"/>
-        <enumeration value="A6"/>
-        <enumeration value="A60"/>
-        <enumeration value="A61"/>
-        <enumeration value="A62"/>
-        <enumeration value="A63"/>
-        <enumeration value="A64"/>
-        <enumeration value="A65"/>
-        <enumeration value="A66"/>
-        <enumeration value="A67"/>
-        <enumeration value="A68"/>
-        <enumeration value="A69"/>
-        <enumeration value="A7"/>
-        <enumeration value="A70"/>
-        <enumeration value="A71"/>
-        <enumeration value="A73"/>
-        <enumeration value="A74"/>
-        <enumeration value="A75"/>
-        <enumeration value="A76"/>
-        <enumeration value="A77"/>
-        <enumeration value="A78"/>
-        <enumeration value="A79"/>
-        <enumeration value="A8"/>
-        <enumeration value="A80"/>
-        <enumeration value="A81"/>
-        <enumeration value="A82"/>
-        <enumeration value="A83"/>
-        <enumeration value="A84"/>
-        <enumeration value="A85"/>
-        <enumeration value="A86"/>
-        <enumeration value="A87"/>
-        <enumeration value="A88"/>
-        <enumeration value="A89"/>
-        <enumeration value="A9"/>
-        <enumeration value="A90"/>
-        <enumeration value="A91"/>
-        <enumeration value="A93"/>
-        <enumeration value="A94"/>
-        <enumeration value="A95"/>
-        <enumeration value="A96"/>
-        <enumeration value="A97"/>
-        <enumeration value="A98"/>
-        <enumeration value="A99"/>
-        <enumeration value="AA"/>
-        <enumeration value="AB"/>
-        <enumeration value="ACR"/>
-        <enumeration value="ACT"/>
-        <enumeration value="AD"/>
-        <enumeration value="AE"/>
-        <enumeration value="AH"/>
-        <enumeration value="AI"/>
-        <enumeration value="AK"/>
-        <enumeration value="AL"/>
-        <enumeration value="AMH"/>
-        <enumeration value="AMP"/>
-        <enumeration value="ANN"/>
-        <enumeration value="APZ"/>
-        <enumeration value="AQ"/>
-        <enumeration value="ARE"/>
-        <enumeration value="AS"/>
-        <enumeration value="ASM"/>
-        <enumeration value="ASU"/>
-        <enumeration value="ATM"/>
-        <enumeration value="ATT"/>
-        <enumeration value="AWG"/>
-        <enumeration value="AY"/>
-        <enumeration value="AZ"/>
-        <enumeration value="B1"/>
-        <enumeration value="B10"/>
-        <enumeration value="B11"/>
-        <enumeration value="B12"/>
-        <enumeration value="B13"/>
-        <enumeration value="B14"/>
-        <enumeration value="B15"/>
-        <enumeration value="B16"/>
-        <enumeration value="B17"/>
-        <enumeration value="B18"/>
-        <enumeration value="B19"/>
-        <enumeration value="B20"/>
-        <enumeration value="B21"/>
-        <enumeration value="B22"/>
-        <enumeration value="B23"/>
-        <enumeration value="B24"/>
-        <enumeration value="B25"/>
-        <enumeration value="B26"/>
-        <enumeration value="B27"/>
-        <enumeration value="B28"/>
-        <enumeration value="B29"/>
-        <enumeration value="B3"/>
-        <enumeration value="B30"/>
-        <enumeration value="B31"/>
-        <enumeration value="B32"/>
-        <enumeration value="B33"/>
-        <enumeration value="B34"/>
-        <enumeration value="B35"/>
-        <enumeration value="B36"/>
-        <enumeration value="B37"/>
-        <enumeration value="B38"/>
-        <enumeration value="B39"/>
-        <enumeration value="B4"/>
-        <enumeration value="B40"/>
-        <enumeration value="B41"/>
-        <enumeration value="B42"/>
-        <enumeration value="B43"/>
-        <enumeration value="B44"/>
-        <enumeration value="B45"/>
-        <enumeration value="B46"/>
-        <enumeration value="B47"/>
-        <enumeration value="B48"/>
-        <enumeration value="B49"/>
-        <enumeration value="B50"/>
-        <enumeration value="B51"/>
-        <enumeration value="B52"/>
-        <enumeration value="B53"/>
-        <enumeration value="B54"/>
-        <enumeration value="B55"/>
-        <enumeration value="B56"/>
-        <enumeration value="B57"/>
-        <enumeration value="B58"/>
-        <enumeration value="B59"/>
-        <enumeration value="B60"/>
-        <enumeration value="B61"/>
-        <enumeration value="B62"/>
-        <enumeration value="B63"/>
-        <enumeration value="B64"/>
-        <enumeration value="B65"/>
-        <enumeration value="B66"/>
-        <enumeration value="B67"/>
-        <enumeration value="B68"/>
-        <enumeration value="B69"/>
-        <enumeration value="B7"/>
-        <enumeration value="B70"/>
-        <enumeration value="B71"/>
-        <enumeration value="B72"/>
-        <enumeration value="B73"/>
-        <enumeration value="B74"/>
-        <enumeration value="B75"/>
-        <enumeration value="B76"/>
-        <enumeration value="B77"/>
-        <enumeration value="B78"/>
-        <enumeration value="B79"/>
-        <enumeration value="B8"/>
-        <enumeration value="B80"/>
-        <enumeration value="B81"/>
-        <enumeration value="B82"/>
-        <enumeration value="B83"/>
-        <enumeration value="B84"/>
-        <enumeration value="B85"/>
-        <enumeration value="B86"/>
-        <enumeration value="B87"/>
-        <enumeration value="B88"/>
-        <enumeration value="B89"/>
-        <enumeration value="B90"/>
-        <enumeration value="B91"/>
-        <enumeration value="B92"/>
-        <enumeration value="B93"/>
-        <enumeration value="B94"/>
-        <enumeration value="B95"/>
-        <enumeration value="B96"/>
-        <enumeration value="B97"/>
-        <enumeration value="B98"/>
-        <enumeration value="B99"/>
-        <enumeration value="BAR"/>
-        <enumeration value="BB"/>
-        <enumeration value="BFT"/>
-        <enumeration value="BHP"/>
-        <enumeration value="BIL"/>
-        <enumeration value="BLD"/>
-        <enumeration value="BLL"/>
-        <enumeration value="BP"/>
-        <enumeration value="BPM"/>
-        <enumeration value="BQL"/>
-        <enumeration value="BTU"/>
-        <enumeration value="BUA"/>
-        <enumeration value="BUI"/>
-        <enumeration value="C0"/>
-        <enumeration value="C10"/>
-        <enumeration value="C11"/>
-        <enumeration value="C12"/>
-        <enumeration value="C13"/>
-        <enumeration value="C14"/>
-        <enumeration value="C15"/>
-        <enumeration value="C16"/>
-        <enumeration value="C17"/>
-        <enumeration value="C18"/>
-        <enumeration value="C19"/>
-        <enumeration value="C20"/>
-        <enumeration value="C21"/>
-        <enumeration value="C22"/>
-        <enumeration value="C23"/>
-        <enumeration value="C24"/>
-        <enumeration value="C25"/>
-        <enumeration value="C26"/>
-        <enumeration value="C27"/>
-        <enumeration value="C28"/>
-        <enumeration value="C29"/>
-        <enumeration value="C3"/>
-        <enumeration value="C30"/>
-        <enumeration value="C31"/>
-        <enumeration value="C32"/>
-        <enumeration value="C33"/>
-        <enumeration value="C34"/>
-        <enumeration value="C35"/>
-        <enumeration value="C36"/>
-        <enumeration value="C37"/>
-        <enumeration value="C38"/>
-        <enumeration value="C39"/>
-        <enumeration value="C40"/>
-        <enumeration value="C41"/>
-        <enumeration value="C42"/>
-        <enumeration value="C43"/>
-        <enumeration value="C44"/>
-        <enumeration value="C45"/>
-        <enumeration value="C46"/>
-        <enumeration value="C47"/>
-        <enumeration value="C48"/>
-        <enumeration value="C49"/>
-        <enumeration value="C50"/>
-        <enumeration value="C51"/>
-        <enumeration value="C52"/>
-        <enumeration value="C53"/>
-        <enumeration value="C54"/>
-        <enumeration value="C55"/>
-        <enumeration value="C56"/>
-        <enumeration value="C57"/>
-        <enumeration value="C58"/>
-        <enumeration value="C59"/>
-        <enumeration value="C60"/>
-        <enumeration value="C61"/>
-        <enumeration value="C62"/>
-        <enumeration value="C63"/>
-        <enumeration value="C64"/>
-        <enumeration value="C65"/>
-        <enumeration value="C66"/>
-        <enumeration value="C67"/>
-        <enumeration value="C68"/>
-        <enumeration value="C69"/>
-        <enumeration value="C7"/>
-        <enumeration value="C70"/>
-        <enumeration value="C71"/>
-        <enumeration value="C72"/>
-        <enumeration value="C73"/>
-        <enumeration value="C74"/>
-        <enumeration value="C75"/>
-        <enumeration value="C76"/>
-        <enumeration value="C78"/>
-        <enumeration value="C79"/>
-        <enumeration value="C8"/>
-        <enumeration value="C80"/>
-        <enumeration value="C81"/>
-        <enumeration value="C82"/>
-        <enumeration value="C83"/>
-        <enumeration value="C84"/>
-        <enumeration value="C85"/>
-        <enumeration value="C86"/>
-        <enumeration value="C87"/>
-        <enumeration value="C88"/>
-        <enumeration value="C89"/>
-        <enumeration value="C9"/>
-        <enumeration value="C90"/>
-        <enumeration value="C91"/>
-        <enumeration value="C92"/>
-        <enumeration value="C93"/>
-        <enumeration value="C94"/>
-        <enumeration value="C95"/>
-        <enumeration value="C96"/>
-        <enumeration value="C97"/>
-        <enumeration value="C99"/>
-        <enumeration value="CCT"/>
-        <enumeration value="CDL"/>
-        <enumeration value="CEL"/>
-        <enumeration value="CEN"/>
-        <enumeration value="CG"/>
-        <enumeration value="CGM"/>
-        <enumeration value="CKG"/>
-        <enumeration value="CLF"/>
-        <enumeration value="CLT"/>
-        <enumeration value="CMK"/>
-        <enumeration value="CMQ"/>
-        <enumeration value="CMT"/>
-        <enumeration value="CNP"/>
-        <enumeration value="CNT"/>
-        <enumeration value="COU"/>
-        <enumeration value="CTG"/>
-        <enumeration value="CTM"/>
-        <enumeration value="CTN"/>
-        <enumeration value="CUR"/>
-        <enumeration value="CWA"/>
-        <enumeration value="CWI"/>
-        <enumeration value="D03"/>
-        <enumeration value="D04"/>
-        <enumeration value="D1"/>
-        <enumeration value="D10"/>
-        <enumeration value="D11"/>
-        <enumeration value="D12"/>
-        <enumeration value="D13"/>
-        <enumeration value="D15"/>
-        <enumeration value="D16"/>
-        <enumeration value="D17"/>
-        <enumeration value="D18"/>
-        <enumeration value="D19"/>
-        <enumeration value="D2"/>
-        <enumeration value="D20"/>
-        <enumeration value="D21"/>
-        <enumeration value="D22"/>
-        <enumeration value="D23"/>
-        <enumeration value="D24"/>
-        <enumeration value="D25"/>
-        <enumeration value="D26"/>
-        <enumeration value="D27"/>
-        <enumeration value="D29"/>
-        <enumeration value="D30"/>
-        <enumeration value="D31"/>
-        <enumeration value="D32"/>
-        <enumeration value="D33"/>
-        <enumeration value="D34"/>
-        <enumeration value="D35"/>
-        <enumeration value="D36"/>
-        <enumeration value="D37"/>
-        <enumeration value="D38"/>
-        <enumeration value="D39"/>
-        <enumeration value="D41"/>
-        <enumeration value="D42"/>
-        <enumeration value="D43"/>
-        <enumeration value="D44"/>
-        <enumeration value="D45"/>
-        <enumeration value="D46"/>
-        <enumeration value="D47"/>
-        <enumeration value="D48"/>
-        <enumeration value="D49"/>
-        <enumeration value="D5"/>
-        <enumeration value="D50"/>
-        <enumeration value="D51"/>
-        <enumeration value="D52"/>
-        <enumeration value="D53"/>
-        <enumeration value="D54"/>
-        <enumeration value="D55"/>
-        <enumeration value="D56"/>
-        <enumeration value="D57"/>
-        <enumeration value="D58"/>
-        <enumeration value="D59"/>
-        <enumeration value="D6"/>
-        <enumeration value="D60"/>
-        <enumeration value="D61"/>
-        <enumeration value="D62"/>
-        <enumeration value="D63"/>
-        <enumeration value="D65"/>
-        <enumeration value="D68"/>
-        <enumeration value="D69"/>
-        <enumeration value="D70"/>
-        <enumeration value="D71"/>
-        <enumeration value="D72"/>
-        <enumeration value="D73"/>
-        <enumeration value="D74"/>
-        <enumeration value="D75"/>
-        <enumeration value="D76"/>
-        <enumeration value="D77"/>
-        <enumeration value="D78"/>
-        <enumeration value="D80"/>
-        <enumeration value="D81"/>
-        <enumeration value="D82"/>
-        <enumeration value="D83"/>
-        <enumeration value="D85"/>
-        <enumeration value="D86"/>
-        <enumeration value="D87"/>
-        <enumeration value="D88"/>
-        <enumeration value="D89"/>
-        <enumeration value="D9"/>
-        <enumeration value="D91"/>
-        <enumeration value="D93"/>
-        <enumeration value="D94"/>
-        <enumeration value="D95"/>
-        <enumeration value="DAA"/>
-        <enumeration value="DAD"/>
-        <enumeration value="DAY"/>
-        <enumeration value="DB"/>
-        <enumeration value="DD"/>
-        <enumeration value="DEC"/>
-        <enumeration value="DG"/>
-        <enumeration value="DJ"/>
-        <enumeration value="DLT"/>
-        <enumeration value="DMA"/>
-        <enumeration value="DMK"/>
-        <enumeration value="DMO"/>
-        <enumeration value="DMQ"/>
-        <enumeration value="DMT"/>
-        <enumeration value="DN"/>
-        <enumeration value="DPC"/>
-        <enumeration value="DPR"/>
-        <enumeration value="DPT"/>
-        <enumeration value="DRA"/>
-        <enumeration value="DRI"/>
-        <enumeration value="DRL"/>
-        <enumeration value="DT"/>
-        <enumeration value="DTN"/>
-        <enumeration value="DU"/>
-        <enumeration value="DWT"/>
-        <enumeration value="DX"/>
-        <enumeration value="DZN"/>
-        <enumeration value="DZP"/>
-        <enumeration value="E01"/>
-        <enumeration value="E07"/>
-        <enumeration value="E08"/>
-        <enumeration value="E09"/>
-        <enumeration value="E10"/>
-        <enumeration value="E11"/>
-        <enumeration value="E12"/>
-        <enumeration value="E14"/>
-        <enumeration value="E15"/>
-        <enumeration value="E16"/>
-        <enumeration value="E17"/>
-        <enumeration value="E18"/>
-        <enumeration value="E19"/>
-        <enumeration value="E20"/>
-        <enumeration value="E21"/>
-        <enumeration value="E22"/>
-        <enumeration value="E23"/>
-        <enumeration value="E25"/>
-        <enumeration value="E27"/>
-        <enumeration value="E28"/>
-        <enumeration value="E30"/>
-        <enumeration value="E31"/>
-        <enumeration value="E32"/>
-        <enumeration value="E33"/>
-        <enumeration value="E34"/>
-        <enumeration value="E35"/>
-        <enumeration value="E36"/>
-        <enumeration value="E37"/>
-        <enumeration value="E38"/>
-        <enumeration value="E39"/>
-        <enumeration value="E4"/>
-        <enumeration value="E40"/>
-        <enumeration value="E41"/>
-        <enumeration value="E42"/>
-        <enumeration value="E43"/>
-        <enumeration value="E44"/>
-        <enumeration value="E45"/>
-        <enumeration value="E46"/>
-        <enumeration value="E47"/>
-        <enumeration value="E48"/>
-        <enumeration value="E49"/>
-        <enumeration value="E50"/>
-        <enumeration value="E51"/>
-        <enumeration value="E52"/>
-        <enumeration value="E53"/>
-        <enumeration value="E54"/>
-        <enumeration value="E55"/>
-        <enumeration value="E56"/>
-        <enumeration value="E57"/>
-        <enumeration value="E58"/>
-        <enumeration value="E59"/>
-        <enumeration value="E60"/>
-        <enumeration value="E61"/>
-        <enumeration value="E62"/>
-        <enumeration value="E63"/>
-        <enumeration value="E64"/>
-        <enumeration value="E65"/>
-        <enumeration value="E66"/>
-        <enumeration value="E67"/>
-        <enumeration value="E68"/>
-        <enumeration value="E69"/>
-        <enumeration value="E70"/>
-        <enumeration value="E71"/>
-        <enumeration value="E72"/>
-        <enumeration value="E73"/>
-        <enumeration value="E74"/>
-        <enumeration value="E75"/>
-        <enumeration value="E76"/>
-        <enumeration value="E77"/>
-        <enumeration value="E78"/>
-        <enumeration value="E79"/>
-        <enumeration value="E80"/>
-        <enumeration value="E81"/>
-        <enumeration value="E82"/>
-        <enumeration value="E83"/>
-        <enumeration value="E84"/>
-        <enumeration value="E85"/>
-        <enumeration value="E86"/>
-        <enumeration value="E87"/>
-        <enumeration value="E88"/>
-        <enumeration value="E89"/>
-        <enumeration value="E90"/>
-        <enumeration value="E91"/>
-        <enumeration value="E92"/>
-        <enumeration value="E93"/>
-        <enumeration value="E94"/>
-        <enumeration value="E95"/>
-        <enumeration value="E96"/>
-        <enumeration value="E97"/>
-        <enumeration value="E98"/>
-        <enumeration value="E99"/>
-        <enumeration value="EA"/>
-        <enumeration value="EB"/>
-        <enumeration value="EQ"/>
-        <enumeration value="F01"/>
-        <enumeration value="F02"/>
-        <enumeration value="F03"/>
-        <enumeration value="F04"/>
-        <enumeration value="F05"/>
-        <enumeration value="F06"/>
-        <enumeration value="F07"/>
-        <enumeration value="F08"/>
-        <enumeration value="F10"/>
-        <enumeration value="F11"/>
-        <enumeration value="F12"/>
-        <enumeration value="F13"/>
-        <enumeration value="F14"/>
-        <enumeration value="F15"/>
-        <enumeration value="F16"/>
-        <enumeration value="F17"/>
-        <enumeration value="F18"/>
-        <enumeration value="F19"/>
-        <enumeration value="F20"/>
-        <enumeration value="F21"/>
-        <enumeration value="F22"/>
-        <enumeration value="F23"/>
-        <enumeration value="F24"/>
-        <enumeration value="F25"/>
-        <enumeration value="F26"/>
-        <enumeration value="F27"/>
-        <enumeration value="F28"/>
-        <enumeration value="F29"/>
-        <enumeration value="F30"/>
-        <enumeration value="F31"/>
-        <enumeration value="F32"/>
-        <enumeration value="F33"/>
-        <enumeration value="F34"/>
-        <enumeration value="F35"/>
-        <enumeration value="F36"/>
-        <enumeration value="F37"/>
-        <enumeration value="F38"/>
-        <enumeration value="F39"/>
-        <enumeration value="F40"/>
-        <enumeration value="F41"/>
-        <enumeration value="F42"/>
-        <enumeration value="F43"/>
-        <enumeration value="F44"/>
-        <enumeration value="F45"/>
-        <enumeration value="F46"/>
-        <enumeration value="F47"/>
-        <enumeration value="F48"/>
-        <enumeration value="F49"/>
-        <enumeration value="F50"/>
-        <enumeration value="F51"/>
-        <enumeration value="F52"/>
-        <enumeration value="F53"/>
-        <enumeration value="F54"/>
-        <enumeration value="F55"/>
-        <enumeration value="F56"/>
-        <enumeration value="F57"/>
-        <enumeration value="F58"/>
-        <enumeration value="F59"/>
-        <enumeration value="F60"/>
-        <enumeration value="F61"/>
-        <enumeration value="F62"/>
-        <enumeration value="F63"/>
-        <enumeration value="F64"/>
-        <enumeration value="F65"/>
-        <enumeration value="F66"/>
-        <enumeration value="F67"/>
-        <enumeration value="F68"/>
-        <enumeration value="F69"/>
-        <enumeration value="F70"/>
-        <enumeration value="F71"/>
-        <enumeration value="F72"/>
-        <enumeration value="F73"/>
-        <enumeration value="F74"/>
-        <enumeration value="F75"/>
-        <enumeration value="F76"/>
-        <enumeration value="F77"/>
-        <enumeration value="F78"/>
-        <enumeration value="F79"/>
-        <enumeration value="F80"/>
-        <enumeration value="F81"/>
-        <enumeration value="F82"/>
-        <enumeration value="F83"/>
-        <enumeration value="F84"/>
-        <enumeration value="F85"/>
-        <enumeration value="F86"/>
-        <enumeration value="F87"/>
-        <enumeration value="F88"/>
-        <enumeration value="F89"/>
-        <enumeration value="F90"/>
-        <enumeration value="F91"/>
-        <enumeration value="F92"/>
-        <enumeration value="F93"/>
-        <enumeration value="F94"/>
-        <enumeration value="F95"/>
-        <enumeration value="F96"/>
-        <enumeration value="F97"/>
-        <enumeration value="F98"/>
-        <enumeration value="F99"/>
-        <enumeration value="FAH"/>
-        <enumeration value="FAR"/>
-        <enumeration value="FBM"/>
-        <enumeration value="FC"/>
-        <enumeration value="FF"/>
-        <enumeration value="FH"/>
-        <enumeration value="FIT"/>
-        <enumeration value="FL"/>
-        <enumeration value="FOT"/>
-        <enumeration value="FP"/>
-        <enumeration value="FR"/>
-        <enumeration value="FS"/>
-        <enumeration value="FTK"/>
-        <enumeration value="FTQ"/>
-        <enumeration value="G01"/>
-        <enumeration value="G04"/>
-        <enumeration value="G05"/>
-        <enumeration value="G06"/>
-        <enumeration value="G08"/>
-        <enumeration value="G09"/>
-        <enumeration value="G10"/>
-        <enumeration value="G11"/>
-        <enumeration value="G12"/>
-        <enumeration value="G13"/>
-        <enumeration value="G14"/>
-        <enumeration value="G15"/>
-        <enumeration value="G16"/>
-        <enumeration value="G17"/>
-        <enumeration value="G18"/>
-        <enumeration value="G19"/>
-        <enumeration value="G2"/>
-        <enumeration value="G20"/>
-        <enumeration value="G21"/>
-        <enumeration value="G23"/>
-        <enumeration value="G24"/>
-        <enumeration value="G25"/>
-        <enumeration value="G26"/>
-        <enumeration value="G27"/>
-        <enumeration value="G28"/>
-        <enumeration value="G29"/>
-        <enumeration value="G3"/>
-        <enumeration value="G30"/>
-        <enumeration value="G31"/>
-        <enumeration value="G32"/>
-        <enumeration value="G33"/>
-        <enumeration value="G34"/>
-        <enumeration value="G35"/>
-        <enumeration value="G36"/>
-        <enumeration value="G37"/>
-        <enumeration value="G38"/>
-        <enumeration value="G39"/>
-        <enumeration value="G40"/>
-        <enumeration value="G41"/>
-        <enumeration value="G42"/>
-        <enumeration value="G43"/>
-        <enumeration value="G44"/>
-        <enumeration value="G45"/>
-        <enumeration value="G46"/>
-        <enumeration value="G47"/>
-        <enumeration value="G48"/>
-        <enumeration value="G49"/>
-        <enumeration value="G50"/>
-        <enumeration value="G51"/>
-        <enumeration value="G52"/>
-        <enumeration value="G53"/>
-        <enumeration value="G54"/>
-        <enumeration value="G55"/>
-        <enumeration value="G56"/>
-        <enumeration value="G57"/>
-        <enumeration value="G58"/>
-        <enumeration value="G59"/>
-        <enumeration value="G60"/>
-        <enumeration value="G61"/>
-        <enumeration value="G62"/>
-        <enumeration value="G63"/>
-        <enumeration value="G64"/>
-        <enumeration value="G65"/>
-        <enumeration value="G66"/>
-        <enumeration value="G67"/>
-        <enumeration value="G68"/>
-        <enumeration value="G69"/>
-        <enumeration value="G70"/>
-        <enumeration value="G71"/>
-        <enumeration value="G72"/>
-        <enumeration value="G73"/>
-        <enumeration value="G74"/>
-        <enumeration value="G75"/>
-        <enumeration value="G76"/>
-        <enumeration value="G77"/>
-        <enumeration value="G78"/>
-        <enumeration value="G79"/>
-        <enumeration value="G80"/>
-        <enumeration value="G81"/>
-        <enumeration value="G82"/>
-        <enumeration value="G83"/>
-        <enumeration value="G84"/>
-        <enumeration value="G85"/>
-        <enumeration value="G86"/>
-        <enumeration value="G87"/>
-        <enumeration value="G88"/>
-        <enumeration value="G89"/>
-        <enumeration value="G90"/>
-        <enumeration value="G91"/>
-        <enumeration value="G92"/>
-        <enumeration value="G93"/>
-        <enumeration value="G94"/>
-        <enumeration value="G95"/>
-        <enumeration value="G96"/>
-        <enumeration value="G97"/>
-        <enumeration value="G98"/>
-        <enumeration value="G99"/>
-        <enumeration value="GB"/>
-        <enumeration value="GBQ"/>
-        <enumeration value="GDW"/>
-        <enumeration value="GE"/>
-        <enumeration value="GF"/>
-        <enumeration value="GFI"/>
-        <enumeration value="GGR"/>
-        <enumeration value="GIA"/>
-        <enumeration value="GIC"/>
-        <enumeration value="GII"/>
-        <enumeration value="GIP"/>
-        <enumeration value="GJ"/>
-        <enumeration value="GL"/>
-        <enumeration value="GLD"/>
-        <enumeration value="GLI"/>
-        <enumeration value="GLL"/>
-        <enumeration value="GM"/>
-        <enumeration value="GO"/>
-        <enumeration value="GP"/>
-        <enumeration value="GQ"/>
-        <enumeration value="GRM"/>
-        <enumeration value="GRN"/>
-        <enumeration value="GRO"/>
-        <enumeration value="GRT"/>
-        <enumeration value="GT"/>
-        <enumeration value="GV"/>
-        <enumeration value="GWH"/>
-        <enumeration value="H03"/>
-        <enumeration value="H04"/>
-        <enumeration value="H05"/>
-        <enumeration value="H06"/>
-        <enumeration value="H07"/>
-        <enumeration value="H08"/>
-        <enumeration value="H09"/>
-        <enumeration value="H10"/>
-        <enumeration value="H11"/>
-        <enumeration value="H12"/>
-        <enumeration value="H13"/>
-        <enumeration value="H14"/>
-        <enumeration value="H15"/>
-        <enumeration value="H16"/>
-        <enumeration value="H18"/>
-        <enumeration value="H19"/>
-        <enumeration value="H20"/>
-        <enumeration value="H21"/>
-        <enumeration value="H22"/>
-        <enumeration value="H23"/>
-        <enumeration value="H24"/>
-        <enumeration value="H25"/>
-        <enumeration value="H26"/>
-        <enumeration value="H27"/>
-        <enumeration value="H28"/>
-        <enumeration value="H29"/>
-        <enumeration value="H30"/>
-        <enumeration value="H31"/>
-        <enumeration value="H32"/>
-        <enumeration value="H33"/>
-        <enumeration value="H34"/>
-        <enumeration value="H35"/>
-        <enumeration value="H36"/>
-        <enumeration value="H37"/>
-        <enumeration value="H38"/>
-        <enumeration value="H39"/>
-        <enumeration value="H40"/>
-        <enumeration value="H41"/>
-        <enumeration value="H42"/>
-        <enumeration value="H43"/>
-        <enumeration value="H44"/>
-        <enumeration value="H45"/>
-        <enumeration value="H46"/>
-        <enumeration value="H47"/>
-        <enumeration value="H48"/>
-        <enumeration value="H49"/>
-        <enumeration value="H50"/>
-        <enumeration value="H51"/>
-        <enumeration value="H52"/>
-        <enumeration value="H53"/>
-        <enumeration value="H54"/>
-        <enumeration value="H55"/>
-        <enumeration value="H56"/>
-        <enumeration value="H57"/>
-        <enumeration value="H58"/>
-        <enumeration value="H59"/>
-        <enumeration value="H60"/>
-        <enumeration value="H61"/>
-        <enumeration value="H62"/>
-        <enumeration value="H63"/>
-        <enumeration value="H64"/>
-        <enumeration value="H65"/>
-        <enumeration value="H66"/>
-        <enumeration value="H67"/>
-        <enumeration value="H68"/>
-        <enumeration value="H69"/>
-        <enumeration value="H70"/>
-        <enumeration value="H71"/>
-        <enumeration value="H72"/>
-        <enumeration value="H73"/>
-        <enumeration value="H74"/>
-        <enumeration value="H75"/>
-        <enumeration value="H76"/>
-        <enumeration value="H77"/>
-        <enumeration value="H78"/>
-        <enumeration value="H79"/>
-        <enumeration value="H80"/>
-        <enumeration value="H81"/>
-        <enumeration value="H82"/>
-        <enumeration value="H83"/>
-        <enumeration value="H84"/>
-        <enumeration value="H85"/>
-        <enumeration value="H87"/>
-        <enumeration value="H88"/>
-        <enumeration value="H89"/>
-        <enumeration value="H90"/>
-        <enumeration value="H91"/>
-        <enumeration value="H92"/>
-        <enumeration value="H93"/>
-        <enumeration value="H94"/>
-        <enumeration value="H95"/>
-        <enumeration value="H96"/>
-        <enumeration value="H98"/>
-        <enumeration value="H99"/>
-        <enumeration value="HA"/>
-        <enumeration value="HAR"/>
-        <enumeration value="HBA"/>
-        <enumeration value="HBX"/>
-        <enumeration value="HC"/>
-        <enumeration value="HDW"/>
-        <enumeration value="HEA"/>
-        <enumeration value="HGM"/>
-        <enumeration value="HH"/>
-        <enumeration value="HIU"/>
-        <enumeration value="HJ"/>
-        <enumeration value="HKM"/>
-        <enumeration value="HLT"/>
-        <enumeration value="HM"/>
-        <enumeration value="HMQ"/>
-        <enumeration value="HMT"/>
-        <enumeration value="HN"/>
-        <enumeration value="HP"/>
-        <enumeration value="HPA"/>
-        <enumeration value="HTZ"/>
-        <enumeration value="HUR"/>
-        <enumeration value="IA"/>
-        <enumeration value="IE"/>
-        <enumeration value="INH"/>
-        <enumeration value="INK"/>
-        <enumeration value="INQ"/>
-        <enumeration value="ISD"/>
-        <enumeration value="IU"/>
-        <enumeration value="IV"/>
-        <enumeration value="J10"/>
-        <enumeration value="J12"/>
-        <enumeration value="J13"/>
-        <enumeration value="J14"/>
-        <enumeration value="J15"/>
-        <enumeration value="J16"/>
-        <enumeration value="J17"/>
-        <enumeration value="J18"/>
-        <enumeration value="J19"/>
-        <enumeration value="J2"/>
-        <enumeration value="J20"/>
-        <enumeration value="J21"/>
-        <enumeration value="J22"/>
-        <enumeration value="J23"/>
-        <enumeration value="J24"/>
-        <enumeration value="J25"/>
-        <enumeration value="J26"/>
-        <enumeration value="J27"/>
-        <enumeration value="J28"/>
-        <enumeration value="J29"/>
-        <enumeration value="J30"/>
-        <enumeration value="J31"/>
-        <enumeration value="J32"/>
-        <enumeration value="J33"/>
-        <enumeration value="J34"/>
-        <enumeration value="J35"/>
-        <enumeration value="J36"/>
-        <enumeration value="J38"/>
-        <enumeration value="J39"/>
-        <enumeration value="J40"/>
-        <enumeration value="J41"/>
-        <enumeration value="J42"/>
-        <enumeration value="J43"/>
-        <enumeration value="J44"/>
-        <enumeration value="J45"/>
-        <enumeration value="J46"/>
-        <enumeration value="J47"/>
-        <enumeration value="J48"/>
-        <enumeration value="J49"/>
-        <enumeration value="J50"/>
-        <enumeration value="J51"/>
-        <enumeration value="J52"/>
-        <enumeration value="J53"/>
-        <enumeration value="J54"/>
-        <enumeration value="J55"/>
-        <enumeration value="J56"/>
-        <enumeration value="J57"/>
-        <enumeration value="J58"/>
-        <enumeration value="J59"/>
-        <enumeration value="J60"/>
-        <enumeration value="J61"/>
-        <enumeration value="J62"/>
-        <enumeration value="J63"/>
-        <enumeration value="J64"/>
-        <enumeration value="J65"/>
-        <enumeration value="J66"/>
-        <enumeration value="J67"/>
-        <enumeration value="J68"/>
-        <enumeration value="J69"/>
-        <enumeration value="J70"/>
-        <enumeration value="J71"/>
-        <enumeration value="J72"/>
-        <enumeration value="J73"/>
-        <enumeration value="J74"/>
-        <enumeration value="J75"/>
-        <enumeration value="J76"/>
-        <enumeration value="J78"/>
-        <enumeration value="J79"/>
-        <enumeration value="J81"/>
-        <enumeration value="J82"/>
-        <enumeration value="J83"/>
-        <enumeration value="J84"/>
-        <enumeration value="J85"/>
-        <enumeration value="J87"/>
-        <enumeration value="J89"/>
-        <enumeration value="J90"/>
-        <enumeration value="J91"/>
-        <enumeration value="J92"/>
-        <enumeration value="J93"/>
-        <enumeration value="J94"/>
-        <enumeration value="J95"/>
-        <enumeration value="J96"/>
-        <enumeration value="J97"/>
-        <enumeration value="J98"/>
-        <enumeration value="J99"/>
-        <enumeration value="JE"/>
-        <enumeration value="JK"/>
-        <enumeration value="JM"/>
-        <enumeration value="JNT"/>
-        <enumeration value="JOU"/>
-        <enumeration value="JPS"/>
-        <enumeration value="JWL"/>
-        <enumeration value="K1"/>
-        <enumeration value="K10"/>
-        <enumeration value="K11"/>
-        <enumeration value="K12"/>
-        <enumeration value="K13"/>
-        <enumeration value="K14"/>
-        <enumeration value="K15"/>
-        <enumeration value="K16"/>
-        <enumeration value="K17"/>
-        <enumeration value="K18"/>
-        <enumeration value="K19"/>
-        <enumeration value="K2"/>
-        <enumeration value="K20"/>
-        <enumeration value="K21"/>
-        <enumeration value="K22"/>
-        <enumeration value="K23"/>
-        <enumeration value="K24"/>
-        <enumeration value="K25"/>
-        <enumeration value="K26"/>
-        <enumeration value="K27"/>
-        <enumeration value="K28"/>
-        <enumeration value="K3"/>
-        <enumeration value="K30"/>
-        <enumeration value="K31"/>
-        <enumeration value="K32"/>
-        <enumeration value="K33"/>
-        <enumeration value="K34"/>
-        <enumeration value="K35"/>
-        <enumeration value="K36"/>
-        <enumeration value="K37"/>
-        <enumeration value="K38"/>
-        <enumeration value="K39"/>
-        <enumeration value="K40"/>
-        <enumeration value="K41"/>
-        <enumeration value="K42"/>
-        <enumeration value="K43"/>
-        <enumeration value="K45"/>
-        <enumeration value="K46"/>
-        <enumeration value="K47"/>
-        <enumeration value="K48"/>
-        <enumeration value="K49"/>
-        <enumeration value="K5"/>
-        <enumeration value="K50"/>
-        <enumeration value="K51"/>
-        <enumeration value="K52"/>
-        <enumeration value="K53"/>
-        <enumeration value="K54"/>
-        <enumeration value="K55"/>
-        <enumeration value="K58"/>
-        <enumeration value="K59"/>
-        <enumeration value="K6"/>
-        <enumeration value="K60"/>
-        <enumeration value="K61"/>
-        <enumeration value="K62"/>
-        <enumeration value="K63"/>
-        <enumeration value="K64"/>
-        <enumeration value="K65"/>
-        <enumeration value="K66"/>
-        <enumeration value="K67"/>
-        <enumeration value="K68"/>
-        <enumeration value="K69"/>
-        <enumeration value="K70"/>
-        <enumeration value="K71"/>
-        <enumeration value="K73"/>
-        <enumeration value="K74"/>
-        <enumeration value="K75"/>
-        <enumeration value="K76"/>
-        <enumeration value="K77"/>
-        <enumeration value="K78"/>
-        <enumeration value="K79"/>
-        <enumeration value="K80"/>
-        <enumeration value="K81"/>
-        <enumeration value="K82"/>
-        <enumeration value="K83"/>
-        <enumeration value="K84"/>
-        <enumeration value="K85"/>
-        <enumeration value="K86"/>
-        <enumeration value="K87"/>
-        <enumeration value="K88"/>
-        <enumeration value="K89"/>
-        <enumeration value="K90"/>
-        <enumeration value="K91"/>
-        <enumeration value="K92"/>
-        <enumeration value="K93"/>
-        <enumeration value="K94"/>
-        <enumeration value="K95"/>
-        <enumeration value="K96"/>
-        <enumeration value="K97"/>
-        <enumeration value="K98"/>
-        <enumeration value="K99"/>
-        <enumeration value="KA"/>
-        <enumeration value="KAT"/>
-        <enumeration value="KB"/>
-        <enumeration value="KBA"/>
-        <enumeration value="KCC"/>
-        <enumeration value="KDW"/>
-        <enumeration value="KEL"/>
-        <enumeration value="KGM"/>
-        <enumeration value="KGS"/>
-        <enumeration value="KHY"/>
-        <enumeration value="KHZ"/>
-        <enumeration value="KI"/>
-        <enumeration value="KIC"/>
-        <enumeration value="KIP"/>
-        <enumeration value="KJ"/>
-        <enumeration value="KJO"/>
-        <enumeration value="KL"/>
-        <enumeration value="KLK"/>
-        <enumeration value="KLX"/>
-        <enumeration value="KMA"/>
-        <enumeration value="KMH"/>
-        <enumeration value="KMK"/>
-        <enumeration value="KMQ"/>
-        <enumeration value="KMT"/>
-        <enumeration value="KNI"/>
-        <enumeration value="KNM"/>
-        <enumeration value="KNS"/>
-        <enumeration value="KNT"/>
-        <enumeration value="KO"/>
-        <enumeration value="KPA"/>
-        <enumeration value="KPH"/>
-        <enumeration value="KPO"/>
-        <enumeration value="KPP"/>
-        <enumeration value="KR"/>
-        <enumeration value="KSD"/>
-        <enumeration value="KSH"/>
-        <enumeration value="KT"/>
-        <enumeration value="KTN"/>
-        <enumeration value="KUR"/>
-        <enumeration value="KVA"/>
-        <enumeration value="KVR"/>
-        <enumeration value="KVT"/>
-        <enumeration value="KW"/>
-        <enumeration value="KWH"/>
-        <enumeration value="KWN"/>
-        <enumeration value="KWO"/>
-        <enumeration value="KWS"/>
-        <enumeration value="KWT"/>
-        <enumeration value="KX"/>
-        <enumeration value="L10"/>
-        <enumeration value="L11"/>
-        <enumeration value="L12"/>
-        <enumeration value="L13"/>
-        <enumeration value="L14"/>
-        <enumeration value="L15"/>
-        <enumeration value="L16"/>
-        <enumeration value="L17"/>
-        <enumeration value="L18"/>
-        <enumeration value="L19"/>
-        <enumeration value="L2"/>
-        <enumeration value="L20"/>
-        <enumeration value="L21"/>
-        <enumeration value="L23"/>
-        <enumeration value="L24"/>
-        <enumeration value="L25"/>
-        <enumeration value="L26"/>
-        <enumeration value="L27"/>
-        <enumeration value="L28"/>
-        <enumeration value="L29"/>
-        <enumeration value="L30"/>
-        <enumeration value="L31"/>
-        <enumeration value="L32"/>
-        <enumeration value="L33"/>
-        <enumeration value="L34"/>
-        <enumeration value="L35"/>
-        <enumeration value="L36"/>
-        <enumeration value="L37"/>
-        <enumeration value="L38"/>
-        <enumeration value="L39"/>
-        <enumeration value="L40"/>
-        <enumeration value="L41"/>
-        <enumeration value="L42"/>
-        <enumeration value="L43"/>
-        <enumeration value="L44"/>
-        <enumeration value="L45"/>
-        <enumeration value="L46"/>
-        <enumeration value="L47"/>
-        <enumeration value="L48"/>
-        <enumeration value="L49"/>
-        <enumeration value="L50"/>
-        <enumeration value="L51"/>
-        <enumeration value="L52"/>
-        <enumeration value="L53"/>
-        <enumeration value="L54"/>
-        <enumeration value="L55"/>
-        <enumeration value="L56"/>
-        <enumeration value="L57"/>
-        <enumeration value="L58"/>
-        <enumeration value="L59"/>
-        <enumeration value="L60"/>
-        <enumeration value="L63"/>
-        <enumeration value="L64"/>
-        <enumeration value="L65"/>
-        <enumeration value="L66"/>
-        <enumeration value="L67"/>
-        <enumeration value="L68"/>
-        <enumeration value="L69"/>
-        <enumeration value="L70"/>
-        <enumeration value="L71"/>
-        <enumeration value="L72"/>
-        <enumeration value="L73"/>
-        <enumeration value="L74"/>
-        <enumeration value="L75"/>
-        <enumeration value="L76"/>
-        <enumeration value="L77"/>
-        <enumeration value="L78"/>
-        <enumeration value="L79"/>
-        <enumeration value="L80"/>
-        <enumeration value="L81"/>
-        <enumeration value="L82"/>
-        <enumeration value="L83"/>
-        <enumeration value="L84"/>
-        <enumeration value="L85"/>
-        <enumeration value="L86"/>
-        <enumeration value="L87"/>
-        <enumeration value="L88"/>
-        <enumeration value="L89"/>
-        <enumeration value="L90"/>
-        <enumeration value="L91"/>
-        <enumeration value="L92"/>
-        <enumeration value="L93"/>
-        <enumeration value="L94"/>
-        <enumeration value="L95"/>
-        <enumeration value="L96"/>
-        <enumeration value="L98"/>
-        <enumeration value="L99"/>
-        <enumeration value="LA"/>
-        <enumeration value="LAC"/>
-        <enumeration value="LBR"/>
-        <enumeration value="LBT"/>
-        <enumeration value="LD"/>
-        <enumeration value="LEF"/>
-        <enumeration value="LF"/>
-        <enumeration value="LH"/>
-        <enumeration value="LK"/>
-        <enumeration value="LM"/>
-        <enumeration value="LN"/>
-        <enumeration value="LO"/>
-        <enumeration value="LP"/>
-        <enumeration value="LPA"/>
-        <enumeration value="LR"/>
-        <enumeration value="LS"/>
-        <enumeration value="LTN"/>
-        <enumeration value="LTR"/>
-        <enumeration value="LUB"/>
-        <enumeration value="LUM"/>
-        <enumeration value="LUX"/>
-        <enumeration value="LY"/>
-        <enumeration value="M1"/>
-        <enumeration value="M10"/>
-        <enumeration value="M11"/>
-        <enumeration value="M12"/>
-        <enumeration value="M13"/>
-        <enumeration value="M14"/>
-        <enumeration value="M15"/>
-        <enumeration value="M16"/>
-        <enumeration value="M17"/>
-        <enumeration value="M18"/>
-        <enumeration value="M19"/>
-        <enumeration value="M20"/>
-        <enumeration value="M21"/>
-        <enumeration value="M22"/>
-        <enumeration value="M23"/>
-        <enumeration value="M24"/>
-        <enumeration value="M25"/>
-        <enumeration value="M26"/>
-        <enumeration value="M27"/>
-        <enumeration value="M29"/>
-        <enumeration value="M30"/>
-        <enumeration value="M31"/>
-        <enumeration value="M32"/>
-        <enumeration value="M33"/>
-        <enumeration value="M34"/>
-        <enumeration value="M35"/>
-        <enumeration value="M36"/>
-        <enumeration value="M37"/>
-        <enumeration value="M38"/>
-        <enumeration value="M39"/>
-        <enumeration value="M4"/>
-        <enumeration value="M40"/>
-        <enumeration value="M41"/>
-        <enumeration value="M42"/>
-        <enumeration value="M43"/>
-        <enumeration value="M44"/>
-        <enumeration value="M45"/>
-        <enumeration value="M46"/>
-        <enumeration value="M47"/>
-        <enumeration value="M48"/>
-        <enumeration value="M49"/>
-        <enumeration value="M5"/>
-        <enumeration value="M50"/>
-        <enumeration value="M51"/>
-        <enumeration value="M52"/>
-        <enumeration value="M53"/>
-        <enumeration value="M55"/>
-        <enumeration value="M56"/>
-        <enumeration value="M57"/>
-        <enumeration value="M58"/>
-        <enumeration value="M59"/>
-        <enumeration value="M60"/>
-        <enumeration value="M61"/>
-        <enumeration value="M62"/>
-        <enumeration value="M63"/>
-        <enumeration value="M64"/>
-        <enumeration value="M65"/>
-        <enumeration value="M66"/>
-        <enumeration value="M67"/>
-        <enumeration value="M68"/>
-        <enumeration value="M69"/>
-        <enumeration value="M7"/>
-        <enumeration value="M70"/>
-        <enumeration value="M71"/>
-        <enumeration value="M72"/>
-        <enumeration value="M73"/>
-        <enumeration value="M74"/>
-        <enumeration value="M75"/>
-        <enumeration value="M76"/>
-        <enumeration value="M77"/>
-        <enumeration value="M78"/>
-        <enumeration value="M79"/>
-        <enumeration value="M80"/>
-        <enumeration value="M81"/>
-        <enumeration value="M82"/>
-        <enumeration value="M83"/>
-        <enumeration value="M84"/>
-        <enumeration value="M85"/>
-        <enumeration value="M86"/>
-        <enumeration value="M87"/>
-        <enumeration value="M88"/>
-        <enumeration value="M89"/>
-        <enumeration value="M9"/>
-        <enumeration value="M90"/>
-        <enumeration value="M91"/>
-        <enumeration value="M92"/>
-        <enumeration value="M93"/>
-        <enumeration value="M94"/>
-        <enumeration value="M95"/>
-        <enumeration value="M96"/>
-        <enumeration value="M97"/>
-        <enumeration value="M98"/>
-        <enumeration value="M99"/>
-        <enumeration value="MAH"/>
-        <enumeration value="MAL"/>
-        <enumeration value="MAM"/>
-        <enumeration value="MAR"/>
-        <enumeration value="MAW"/>
-        <enumeration value="MBE"/>
-        <enumeration value="MBF"/>
-        <enumeration value="MBR"/>
-        <enumeration value="MC"/>
-        <enumeration value="MCU"/>
-        <enumeration value="MD"/>
-        <enumeration value="MGM"/>
-        <enumeration value="MHZ"/>
-        <enumeration value="MIK"/>
-        <enumeration value="MIL"/>
-        <enumeration value="MIN"/>
-        <enumeration value="MIO"/>
-        <enumeration value="MIU"/>
-        <enumeration value="MLD"/>
-        <enumeration value="MLT"/>
-        <enumeration value="MMK"/>
-        <enumeration value="MMQ"/>
-        <enumeration value="MMT"/>
-        <enumeration value="MND"/>
-        <enumeration value="MON"/>
-        <enumeration value="MPA"/>
-        <enumeration value="MQH"/>
-        <enumeration value="MQS"/>
-        <enumeration value="MSK"/>
-        <enumeration value="MTK"/>
-        <enumeration value="MTQ"/>
-        <enumeration value="MTR"/>
-        <enumeration value="MTS"/>
-        <enumeration value="MVA"/>
-        <enumeration value="MWH"/>
-        <enumeration value="N1"/>
-        <enumeration value="N10"/>
-        <enumeration value="N11"/>
-        <enumeration value="N12"/>
-        <enumeration value="N13"/>
-        <enumeration value="N14"/>
-        <enumeration value="N15"/>
-        <enumeration value="N16"/>
-        <enumeration value="N17"/>
-        <enumeration value="N18"/>
-        <enumeration value="N19"/>
-        <enumeration value="N20"/>
-        <enumeration value="N21"/>
-        <enumeration value="N22"/>
-        <enumeration value="N23"/>
-        <enumeration value="N24"/>
-        <enumeration value="N25"/>
-        <enumeration value="N26"/>
-        <enumeration value="N27"/>
-        <enumeration value="N28"/>
-        <enumeration value="N29"/>
-        <enumeration value="N3"/>
-        <enumeration value="N30"/>
-        <enumeration value="N31"/>
-        <enumeration value="N32"/>
-        <enumeration value="N33"/>
-        <enumeration value="N34"/>
-        <enumeration value="N35"/>
-        <enumeration value="N36"/>
-        <enumeration value="N37"/>
-        <enumeration value="N38"/>
-        <enumeration value="N39"/>
-        <enumeration value="N40"/>
-        <enumeration value="N41"/>
-        <enumeration value="N42"/>
-        <enumeration value="N43"/>
-        <enumeration value="N44"/>
-        <enumeration value="N45"/>
-        <enumeration value="N46"/>
-        <enumeration value="N47"/>
-        <enumeration value="N48"/>
-        <enumeration value="N49"/>
-        <enumeration value="N50"/>
-        <enumeration value="N51"/>
-        <enumeration value="N52"/>
-        <enumeration value="N53"/>
-        <enumeration value="N54"/>
-        <enumeration value="N55"/>
-        <enumeration value="N56"/>
-        <enumeration value="N57"/>
-        <enumeration value="N58"/>
-        <enumeration value="N59"/>
-        <enumeration value="N60"/>
-        <enumeration value="N61"/>
-        <enumeration value="N62"/>
-        <enumeration value="N63"/>
-        <enumeration value="N64"/>
-        <enumeration value="N65"/>
-        <enumeration value="N66"/>
-        <enumeration value="N67"/>
-        <enumeration value="N68"/>
-        <enumeration value="N69"/>
-        <enumeration value="N70"/>
-        <enumeration value="N71"/>
-        <enumeration value="N72"/>
-        <enumeration value="N73"/>
-        <enumeration value="N74"/>
-        <enumeration value="N75"/>
-        <enumeration value="N76"/>
-        <enumeration value="N77"/>
-        <enumeration value="N78"/>
-        <enumeration value="N79"/>
-        <enumeration value="N80"/>
-        <enumeration value="N81"/>
-        <enumeration value="N82"/>
-        <enumeration value="N83"/>
-        <enumeration value="N84"/>
-        <enumeration value="N85"/>
-        <enumeration value="N86"/>
-        <enumeration value="N87"/>
-        <enumeration value="N88"/>
-        <enumeration value="N89"/>
-        <enumeration value="N90"/>
-        <enumeration value="N91"/>
-        <enumeration value="N92"/>
-        <enumeration value="N93"/>
-        <enumeration value="N94"/>
-        <enumeration value="N95"/>
-        <enumeration value="N96"/>
-        <enumeration value="N97"/>
-        <enumeration value="N98"/>
-        <enumeration value="N99"/>
-        <enumeration value="NA"/>
-        <enumeration value="NAR"/>
-        <enumeration value="NCL"/>
-        <enumeration value="NEW"/>
-        <enumeration value="NF"/>
-        <enumeration value="NIL"/>
-        <enumeration value="NIU"/>
-        <enumeration value="NL"/>
-        <enumeration value="NM3"/>
-        <enumeration value="NMI"/>
-        <enumeration value="NMP"/>
-        <enumeration value="NPR"/>
-        <enumeration value="NPT"/>
-        <enumeration value="NQ"/>
-        <enumeration value="NR"/>
-        <enumeration value="NT"/>
-        <enumeration value="NTT"/>
-        <enumeration value="NU"/>
-        <enumeration value="NX"/>
-        <enumeration value="OA"/>
-        <enumeration value="ODE"/>
-        <enumeration value="OHM"/>
-        <enumeration value="ON"/>
-        <enumeration value="ONZ"/>
-        <enumeration value="OPM"/>
-        <enumeration value="OT"/>
-        <enumeration value="OZ"/>
-        <enumeration value="OZA"/>
-        <enumeration value="OZI"/>
-        <enumeration value="P1"/>
-        <enumeration value="P10"/>
-        <enumeration value="P11"/>
-        <enumeration value="P12"/>
-        <enumeration value="P13"/>
-        <enumeration value="P14"/>
-        <enumeration value="P15"/>
-        <enumeration value="P16"/>
-        <enumeration value="P17"/>
-        <enumeration value="P18"/>
-        <enumeration value="P19"/>
-        <enumeration value="P2"/>
-        <enumeration value="P20"/>
-        <enumeration value="P21"/>
-        <enumeration value="P22"/>
-        <enumeration value="P23"/>
-        <enumeration value="P24"/>
-        <enumeration value="P25"/>
-        <enumeration value="P26"/>
-        <enumeration value="P27"/>
-        <enumeration value="P28"/>
-        <enumeration value="P29"/>
-        <enumeration value="P30"/>
-        <enumeration value="P31"/>
-        <enumeration value="P32"/>
-        <enumeration value="P33"/>
-        <enumeration value="P34"/>
-        <enumeration value="P35"/>
-        <enumeration value="P36"/>
-        <enumeration value="P37"/>
-        <enumeration value="P38"/>
-        <enumeration value="P39"/>
-        <enumeration value="P40"/>
-        <enumeration value="P41"/>
-        <enumeration value="P42"/>
-        <enumeration value="P43"/>
-        <enumeration value="P44"/>
-        <enumeration value="P45"/>
-        <enumeration value="P46"/>
-        <enumeration value="P47"/>
-        <enumeration value="P48"/>
-        <enumeration value="P49"/>
-        <enumeration value="P5"/>
-        <enumeration value="P50"/>
-        <enumeration value="P51"/>
-        <enumeration value="P52"/>
-        <enumeration value="P53"/>
-        <enumeration value="P54"/>
-        <enumeration value="P55"/>
-        <enumeration value="P56"/>
-        <enumeration value="P57"/>
-        <enumeration value="P58"/>
-        <enumeration value="P59"/>
-        <enumeration value="P60"/>
-        <enumeration value="P61"/>
-        <enumeration value="P62"/>
-        <enumeration value="P63"/>
-        <enumeration value="P64"/>
-        <enumeration value="P65"/>
-        <enumeration value="P66"/>
-        <enumeration value="P67"/>
-        <enumeration value="P68"/>
-        <enumeration value="P69"/>
-        <enumeration value="P70"/>
-        <enumeration value="P71"/>
-        <enumeration value="P72"/>
-        <enumeration value="P73"/>
-        <enumeration value="P74"/>
-        <enumeration value="P75"/>
-        <enumeration value="P76"/>
-        <enumeration value="P77"/>
-        <enumeration value="P78"/>
-        <enumeration value="P79"/>
-        <enumeration value="P80"/>
-        <enumeration value="P81"/>
-        <enumeration value="P82"/>
-        <enumeration value="P83"/>
-        <enumeration value="P84"/>
-        <enumeration value="P85"/>
-        <enumeration value="P86"/>
-        <enumeration value="P87"/>
-        <enumeration value="P88"/>
-        <enumeration value="P89"/>
-        <enumeration value="P90"/>
-        <enumeration value="P91"/>
-        <enumeration value="P92"/>
-        <enumeration value="P93"/>
-        <enumeration value="P94"/>
-        <enumeration value="P95"/>
-        <enumeration value="P96"/>
-        <enumeration value="P97"/>
-        <enumeration value="P98"/>
-        <enumeration value="P99"/>
-        <enumeration value="PAL"/>
-        <enumeration value="PD"/>
-        <enumeration value="PFL"/>
-        <enumeration value="PGL"/>
-        <enumeration value="PI"/>
-        <enumeration value="PLA"/>
-        <enumeration value="PO"/>
-        <enumeration value="PQ"/>
-        <enumeration value="PR"/>
-        <enumeration value="PS"/>
-        <enumeration value="PT"/>
-        <enumeration value="PTD"/>
-        <enumeration value="PTI"/>
-        <enumeration value="PTL"/>
-        <enumeration value="PTN"/>
-        <enumeration value="Q10"/>
-        <enumeration value="Q11"/>
-        <enumeration value="Q12"/>
-        <enumeration value="Q13"/>
-        <enumeration value="Q14"/>
-        <enumeration value="Q15"/>
-        <enumeration value="Q16"/>
-        <enumeration value="Q17"/>
-        <enumeration value="Q18"/>
-        <enumeration value="Q19"/>
-        <enumeration value="Q20"/>
-        <enumeration value="Q21"/>
-        <enumeration value="Q22"/>
-        <enumeration value="Q23"/>
-        <enumeration value="Q24"/>
-        <enumeration value="Q25"/>
-        <enumeration value="Q26"/>
-        <enumeration value="Q27"/>
-        <enumeration value="Q28"/>
-        <enumeration value="Q29"/>
-        <enumeration value="Q3"/>
-        <enumeration value="Q30"/>
-        <enumeration value="Q31"/>
-        <enumeration value="Q32"/>
-        <enumeration value="Q33"/>
-        <enumeration value="Q34"/>
-        <enumeration value="Q35"/>
-        <enumeration value="Q36"/>
-        <enumeration value="Q37"/>
-        <enumeration value="Q38"/>
-        <enumeration value="Q39"/>
-        <enumeration value="Q40"/>
-        <enumeration value="Q41"/>
-        <enumeration value="Q42"/>
-        <enumeration value="QA"/>
-        <enumeration value="QAN"/>
-        <enumeration value="QB"/>
-        <enumeration value="QR"/>
-        <enumeration value="QT"/>
-        <enumeration value="QTD"/>
-        <enumeration value="QTI"/>
-        <enumeration value="QTL"/>
-        <enumeration value="QTR"/>
-        <enumeration value="R1"/>
-        <enumeration value="R9"/>
-        <enumeration value="RH"/>
-        <enumeration value="RM"/>
-        <enumeration value="ROM"/>
-        <enumeration value="RP"/>
-        <enumeration value="RPM"/>
-        <enumeration value="RPS"/>
-        <enumeration value="RT"/>
-        <enumeration value="S3"/>
-        <enumeration value="S4"/>
-        <enumeration value="SAN"/>
-        <enumeration value="SCO"/>
-        <enumeration value="SCR"/>
-        <enumeration value="SEC"/>
-        <enumeration value="SET"/>
-        <enumeration value="SG"/>
-        <enumeration value="SHT"/>
-        <enumeration value="SIE"/>
-        <enumeration value="SM3"/>
-        <enumeration value="SMI"/>
-        <enumeration value="SQ"/>
-        <enumeration value="SQR"/>
-        <enumeration value="SR"/>
-        <enumeration value="STC"/>
-        <enumeration value="STI"/>
-        <enumeration value="STK"/>
-        <enumeration value="STL"/>
-        <enumeration value="STN"/>
-        <enumeration value="STW"/>
-        <enumeration value="SW"/>
-        <enumeration value="SX"/>
-        <enumeration value="SYR"/>
-        <enumeration value="T0"/>
-        <enumeration value="T3"/>
-        <enumeration value="TAH"/>
-        <enumeration value="TAN"/>
-        <enumeration value="TI"/>
-        <enumeration value="TIC"/>
-        <enumeration value="TIP"/>
-        <enumeration value="TKM"/>
-        <enumeration value="TMS"/>
-        <enumeration value="TNE"/>
-        <enumeration value="TP"/>
-        <enumeration value="TPI"/>
-        <enumeration value="TPR"/>
-        <enumeration value="TQD"/>
-        <enumeration value="TRL"/>
-        <enumeration value="TST"/>
-        <enumeration value="TTS"/>
-        <enumeration value="U1"/>
-        <enumeration value="U2"/>
-        <enumeration value="UA"/>
-        <enumeration value="UB"/>
-        <enumeration value="UC"/>
-        <enumeration value="VA"/>
-        <enumeration value="VLT"/>
-        <enumeration value="VP"/>
-        <enumeration value="W2"/>
-        <enumeration value="WA"/>
-        <enumeration value="WB"/>
-        <enumeration value="WCD"/>
-        <enumeration value="WE"/>
-        <enumeration value="WEB"/>
-        <enumeration value="WEE"/>
-        <enumeration value="WG"/>
-        <enumeration value="WHR"/>
-        <enumeration value="WM"/>
-        <enumeration value="WSD"/>
-        <enumeration value="WTT"/>
-        <enumeration value="WW"/>
-        <enumeration value="X1"/>
-        <enumeration value="YDK"/>
-        <enumeration value="YDQ"/>
-        <enumeration value="YRD"/>
-        <enumeration value="Z11"/>
-        <enumeration value="ZP"/>
-        <enumeration value="ZZ"/>
-    </cl>
-    <cl id="10">
-        <enumeration value="102"/>
-    </cl>
-    <cl id="11">
-        <enumeration value="application/pdf"/>
-        <enumeration value="application/vnd.oasis.opendocument.spreadsheet"/>
-        <enumeration value="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
-        <enumeration value="image/jpeg"/>
-        <enumeration value="image/png"/>
-        <enumeration value="text/csv"/>
-    </cl>
-    <cl id="12">
-        <enumeration value="0002"/>
-        <enumeration value="0007"/>
-        <enumeration value="0009"/>
-        <enumeration value="0037"/>
-        <enumeration value="0060"/>
-        <enumeration value="0088"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0106"/>
-        <enumeration value="0130"/>
-        <enumeration value="0135"/>
-        <enumeration value="0142"/>
-        <enumeration value="0151"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-        <enumeration value="9901"/>
-        <enumeration value="9902"/>
-        <enumeration value="9904"/>
-        <enumeration value="9905"/>
-        <enumeration value="9906"/>
-        <enumeration value="9907"/>
-        <enumeration value="9910"/>
-        <enumeration value="9913"/>
-        <enumeration value="9914"/>
-        <enumeration value="9915"/>
-        <enumeration value="9918"/>
-        <enumeration value="9919"/>
-        <enumeration value="9920"/>
-        <enumeration value="9922"/>
-        <enumeration value="9923"/>
-        <enumeration value="9924"/>
-        <enumeration value="9925"/>
-        <enumeration value="9926"/>
-        <enumeration value="9927"/>
-        <enumeration value="9928"/>
-        <enumeration value="9929"/>
-        <enumeration value="9930"/>
-        <enumeration value="9931"/>
-        <enumeration value="9932"/>
-        <enumeration value="9933"/>
-        <enumeration value="9934"/>
-        <enumeration value="9935"/>
-        <enumeration value="9936"/>
-        <enumeration value="9937"/>
-        <enumeration value="9938"/>
-        <enumeration value="9939"/>
-        <enumeration value="9940"/>
-        <enumeration value="9941"/>
-        <enumeration value="9942"/>
-        <enumeration value="9943"/>
-        <enumeration value="9944"/>
-        <enumeration value="9945"/>
-        <enumeration value="9946"/>
-        <enumeration value="9947"/>
-        <enumeration value="9948"/>
-        <enumeration value="9949"/>
-        <enumeration value="9950"/>
-        <enumeration value="9951"/>
-        <enumeration value="9952"/>
-        <enumeration value="9953"/>
-        <enumeration value="9955"/>
-        <enumeration value="9956"/>
-        <enumeration value="9957"/>
-        <enumeration value="9958"/>
-        <enumeration value="AN"/>
-        <enumeration value="AQ"/>
-        <enumeration value="AS"/>
-        <enumeration value="AU"/>
-        <enumeration value="EM"/>
-    </cl>
-    <cl id="13">
-        <enumeration value="FC"/>
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="14">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="15">
-        <enumeration value="vatex-eu-132"/>
-        <enumeration value="VATEX-EU-132"/>
-        <enumeration value="vatex-eu-132-1a"/>
-        <enumeration value="VATEX-EU-132-1A"/>
-        <enumeration value="vatex-eu-132-1b"/>
-        <enumeration value="VATEX-EU-132-1B"/>
-        <enumeration value="vatex-eu-132-1c"/>
-        <enumeration value="VATEX-EU-132-1C"/>
-        <enumeration value="vatex-eu-132-1d"/>
-        <enumeration value="VATEX-EU-132-1D"/>
-        <enumeration value="vatex-eu-132-1e"/>
-        <enumeration value="VATEX-EU-132-1E"/>
-        <enumeration value="vatex-eu-132-1f"/>
-        <enumeration value="VATEX-EU-132-1F"/>
-        <enumeration value="vatex-eu-132-1g"/>
-        <enumeration value="VATEX-EU-132-1G"/>
-        <enumeration value="vatex-eu-132-1h"/>
-        <enumeration value="VATEX-EU-132-1H"/>
-        <enumeration value="vatex-eu-132-1i"/>
-        <enumeration value="VATEX-EU-132-1I"/>
-        <enumeration value="vatex-eu-132-1j"/>
-        <enumeration value="VATEX-EU-132-1J"/>
-        <enumeration value="vatex-eu-132-1k"/>
-        <enumeration value="VATEX-EU-132-1K"/>
-        <enumeration value="vatex-eu-132-1l"/>
-        <enumeration value="VATEX-EU-132-1L"/>
-        <enumeration value="vatex-eu-132-1m"/>
-        <enumeration value="VATEX-EU-132-1M"/>
-        <enumeration value="vatex-eu-132-1n"/>
-        <enumeration value="VATEX-EU-132-1N"/>
-        <enumeration value="vatex-eu-132-1o"/>
-        <enumeration value="VATEX-EU-132-1O"/>
-        <enumeration value="vatex-eu-132-1p"/>
-        <enumeration value="VATEX-EU-132-1P"/>
-        <enumeration value="vatex-eu-132-1q"/>
-        <enumeration value="VATEX-EU-132-1Q"/>
-        <enumeration value="vatex-eu-143"/>
-        <enumeration value="VATEX-EU-143"/>
-        <enumeration value="vatex-eu-143-1a"/>
-        <enumeration value="VATEX-EU-143-1A"/>
-        <enumeration value="vatex-eu-143-1b"/>
-        <enumeration value="VATEX-EU-143-1B"/>
-        <enumeration value="vatex-eu-143-1c"/>
-        <enumeration value="VATEX-EU-143-1C"/>
-        <enumeration value="vatex-eu-143-1d"/>
-        <enumeration value="VATEX-EU-143-1D"/>
-        <enumeration value="vatex-eu-143-1e"/>
-        <enumeration value="VATEX-EU-143-1E"/>
-        <enumeration value="vatex-eu-143-1f"/>
-        <enumeration value="VATEX-EU-143-1F"/>
-        <enumeration value="vatex-eu-143-1fa"/>
-        <enumeration value="VATEX-EU-143-1FA"/>
-        <enumeration value="vatex-eu-143-1g"/>
-        <enumeration value="VATEX-EU-143-1G"/>
-        <enumeration value="vatex-eu-143-1h"/>
-        <enumeration value="VATEX-EU-143-1H"/>
-        <enumeration value="vatex-eu-143-1i"/>
-        <enumeration value="VATEX-EU-143-1I"/>
-        <enumeration value="vatex-eu-143-1j"/>
-        <enumeration value="VATEX-EU-143-1J"/>
-        <enumeration value="vatex-eu-143-1k"/>
-        <enumeration value="VATEX-EU-143-1K"/>
-        <enumeration value="vatex-eu-143-1l"/>
-        <enumeration value="VATEX-EU-143-1L"/>
-        <enumeration value="vatex-eu-148"/>
-        <enumeration value="VATEX-EU-148"/>
-        <enumeration value="vatex-eu-148-a"/>
-        <enumeration value="VATEX-EU-148-A"/>
-        <enumeration value="vatex-eu-148-b"/>
-        <enumeration value="VATEX-EU-148-B"/>
-        <enumeration value="vatex-eu-148-c"/>
-        <enumeration value="VATEX-EU-148-C"/>
-        <enumeration value="vatex-eu-148-d"/>
-        <enumeration value="VATEX-EU-148-D"/>
-        <enumeration value="vatex-eu-148-e"/>
-        <enumeration value="VATEX-EU-148-E"/>
-        <enumeration value="vatex-eu-148-f"/>
-        <enumeration value="VATEX-EU-148-F"/>
-        <enumeration value="vatex-eu-148-g"/>
-        <enumeration value="VATEX-EU-148-G"/>
-        <enumeration value="vatex-eu-151"/>
-        <enumeration value="VATEX-EU-151"/>
-        <enumeration value="vatex-eu-151-1a"/>
-        <enumeration value="VATEX-EU-151-1A"/>
-        <enumeration value="vatex-eu-151-1aa"/>
-        <enumeration value="VATEX-EU-151-1AA"/>
-        <enumeration value="vatex-eu-151-1b"/>
-        <enumeration value="VATEX-EU-151-1B"/>
-        <enumeration value="vatex-eu-151-1c"/>
-        <enumeration value="VATEX-EU-151-1C"/>
-        <enumeration value="vatex-eu-151-1d"/>
-        <enumeration value="VATEX-EU-151-1D"/>
-        <enumeration value="vatex-eu-151-1e"/>
-        <enumeration value="VATEX-EU-151-1E"/>
-        <enumeration value="vatex-eu-309"/>
-        <enumeration value="VATEX-EU-309"/>
-        <enumeration value="vatex-eu-ae"/>
-        <enumeration value="VATEX-EU-AE"/>
-        <enumeration value="vatex-eu-d"/>
-        <enumeration value="VATEX-EU-D"/>
-        <enumeration value="vatex-eu-f"/>
-        <enumeration value="VATEX-EU-F"/>
-        <enumeration value="vatex-eu-g"/>
-        <enumeration value="VATEX-EU-G"/>
-        <enumeration value="vatex-eu-i"/>
-        <enumeration value="VATEX-EU-I"/>
-        <enumeration value="vatex-eu-ic"/>
-        <enumeration value="VATEX-EU-IC"/>
-        <enumeration value="vatex-eu-j"/>
-        <enumeration value="VATEX-EU-J"/>
-        <enumeration value="vatex-eu-o"/>
-        <enumeration value="VATEX-EU-O"/>
-    </cl>
-    <cl id="16">
-        <enumeration value="130"/>
-    </cl>
-    <cl id="17">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="18">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="19">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="20">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="21">
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="22">
-        <enumeration value="VA"/>
-    </cl>
-    <cl id="23">
-        <enumeration value="50"/>
-        <enumeration value="130"/>
-        <enumeration value="916"/>
-    </cl>
-    <cl id="24">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="25">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="26">
-        <enumeration value="0002"/>
-        <enumeration value="0003"/>
-        <enumeration value="0004"/>
-        <enumeration value="0005"/>
-        <enumeration value="0006"/>
-        <enumeration value="0007"/>
-        <enumeration value="0008"/>
-        <enumeration value="0009"/>
-        <enumeration value="0010"/>
-        <enumeration value="0011"/>
-        <enumeration value="0012"/>
-        <enumeration value="0013"/>
-        <enumeration value="0014"/>
-        <enumeration value="0015"/>
-        <enumeration value="0016"/>
-        <enumeration value="0017"/>
-        <enumeration value="0018"/>
-        <enumeration value="0019"/>
-        <enumeration value="0020"/>
-        <enumeration value="0021"/>
-        <enumeration value="0022"/>
-        <enumeration value="0023"/>
-        <enumeration value="0024"/>
-        <enumeration value="0025"/>
-        <enumeration value="0026"/>
-        <enumeration value="0027"/>
-        <enumeration value="0028"/>
-        <enumeration value="0029"/>
-        <enumeration value="0030"/>
-        <enumeration value="0031"/>
-        <enumeration value="0032"/>
-        <enumeration value="0033"/>
-        <enumeration value="0034"/>
-        <enumeration value="0035"/>
-        <enumeration value="0036"/>
-        <enumeration value="0037"/>
-        <enumeration value="0038"/>
-        <enumeration value="0039"/>
-        <enumeration value="0040"/>
-        <enumeration value="0041"/>
-        <enumeration value="0042"/>
-        <enumeration value="0043"/>
-        <enumeration value="0044"/>
-        <enumeration value="0045"/>
-        <enumeration value="0046"/>
-        <enumeration value="0047"/>
-        <enumeration value="0048"/>
-        <enumeration value="0049"/>
-        <enumeration value="0050"/>
-        <enumeration value="0051"/>
-        <enumeration value="0052"/>
-        <enumeration value="0053"/>
-        <enumeration value="0054"/>
-        <enumeration value="0055"/>
-        <enumeration value="0056"/>
-        <enumeration value="0057"/>
-        <enumeration value="0058"/>
-        <enumeration value="0059"/>
-        <enumeration value="0060"/>
-        <enumeration value="0061"/>
-        <enumeration value="0062"/>
-        <enumeration value="0063"/>
-        <enumeration value="0064"/>
-        <enumeration value="0065"/>
-        <enumeration value="0066"/>
-        <enumeration value="0067"/>
-        <enumeration value="0068"/>
-        <enumeration value="0069"/>
-        <enumeration value="0070"/>
-        <enumeration value="0071"/>
-        <enumeration value="0072"/>
-        <enumeration value="0073"/>
-        <enumeration value="0074"/>
-        <enumeration value="0075"/>
-        <enumeration value="0076"/>
-        <enumeration value="0077"/>
-        <enumeration value="0078"/>
-        <enumeration value="0079"/>
-        <enumeration value="0080"/>
-        <enumeration value="0081"/>
-        <enumeration value="0082"/>
-        <enumeration value="0083"/>
-        <enumeration value="0084"/>
-        <enumeration value="0085"/>
-        <enumeration value="0086"/>
-        <enumeration value="0087"/>
-        <enumeration value="0088"/>
-        <enumeration value="0089"/>
-        <enumeration value="0090"/>
-        <enumeration value="0091"/>
-        <enumeration value="0093"/>
-        <enumeration value="0094"/>
-        <enumeration value="0095"/>
-        <enumeration value="0096"/>
-        <enumeration value="0097"/>
-        <enumeration value="0098"/>
-        <enumeration value="0099"/>
-        <enumeration value="0100"/>
-        <enumeration value="0101"/>
-        <enumeration value="0102"/>
-        <enumeration value="0104"/>
-        <enumeration value="0105"/>
-        <enumeration value="0106"/>
-        <enumeration value="0107"/>
-        <enumeration value="0108"/>
-        <enumeration value="0109"/>
-        <enumeration value="0110"/>
-        <enumeration value="0111"/>
-        <enumeration value="0112"/>
-        <enumeration value="0113"/>
-        <enumeration value="0114"/>
-        <enumeration value="0115"/>
-        <enumeration value="0116"/>
-        <enumeration value="0117"/>
-        <enumeration value="0118"/>
-        <enumeration value="0119"/>
-        <enumeration value="0120"/>
-        <enumeration value="0121"/>
-        <enumeration value="0122"/>
-        <enumeration value="0123"/>
-        <enumeration value="0124"/>
-        <enumeration value="0125"/>
-        <enumeration value="0126"/>
-        <enumeration value="0127"/>
-        <enumeration value="0128"/>
-        <enumeration value="0129"/>
-        <enumeration value="0130"/>
-        <enumeration value="0131"/>
-        <enumeration value="0132"/>
-        <enumeration value="0133"/>
-        <enumeration value="0134"/>
-        <enumeration value="0135"/>
-        <enumeration value="0136"/>
-        <enumeration value="0137"/>
-        <enumeration value="0138"/>
-        <enumeration value="0139"/>
-        <enumeration value="0140"/>
-        <enumeration value="0141"/>
-        <enumeration value="0142"/>
-        <enumeration value="0143"/>
-        <enumeration value="0144"/>
-        <enumeration value="0145"/>
-        <enumeration value="0146"/>
-        <enumeration value="0147"/>
-        <enumeration value="0148"/>
-        <enumeration value="0149"/>
-        <enumeration value="0150"/>
-        <enumeration value="0151"/>
-        <enumeration value="0152"/>
-        <enumeration value="0153"/>
-        <enumeration value="0154"/>
-        <enumeration value="0155"/>
-        <enumeration value="0156"/>
-        <enumeration value="0157"/>
-        <enumeration value="0158"/>
-        <enumeration value="0159"/>
-        <enumeration value="0160"/>
-        <enumeration value="0161"/>
-        <enumeration value="0162"/>
-        <enumeration value="0163"/>
-        <enumeration value="0164"/>
-        <enumeration value="0165"/>
-        <enumeration value="0166"/>
-        <enumeration value="0167"/>
-        <enumeration value="0168"/>
-        <enumeration value="0169"/>
-        <enumeration value="0170"/>
-        <enumeration value="0171"/>
-        <enumeration value="0172"/>
-        <enumeration value="0173"/>
-        <enumeration value="0174"/>
-        <enumeration value="0175"/>
-        <enumeration value="0176"/>
-        <enumeration value="0177"/>
-        <enumeration value="0178"/>
-        <enumeration value="0179"/>
-        <enumeration value="0180"/>
-        <enumeration value="0183"/>
-        <enumeration value="0184"/>
-        <enumeration value="0185"/>
-        <enumeration value="0186"/>
-        <enumeration value="0187"/>
-        <enumeration value="0188"/>
-        <enumeration value="0189"/>
-        <enumeration value="0190"/>
-        <enumeration value="0191"/>
-        <enumeration value="0192"/>
-        <enumeration value="0193"/>
-        <enumeration value="0194"/>
-        <enumeration value="0195"/>
-        <enumeration value="0196"/>
-        <enumeration value="0197"/>
-        <enumeration value="0198"/>
-        <enumeration value="0199"/>
-        <enumeration value="0200"/>
-        <enumeration value="0201"/>
-        <enumeration value="0202"/>
-        <enumeration value="0203"/>
-        <enumeration value="0204"/>
-    </cl>
-    <cl id="27">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="28">
-        <enumeration value="vatex-eu-132"/>
-        <enumeration value="VATEX-EU-132"/>
-        <enumeration value="vatex-eu-132-1a"/>
-        <enumeration value="VATEX-EU-132-1A"/>
-        <enumeration value="vatex-eu-132-1b"/>
-        <enumeration value="VATEX-EU-132-1B"/>
-        <enumeration value="vatex-eu-132-1c"/>
-        <enumeration value="VATEX-EU-132-1C"/>
-        <enumeration value="vatex-eu-132-1d"/>
-        <enumeration value="VATEX-EU-132-1D"/>
-        <enumeration value="vatex-eu-132-1e"/>
-        <enumeration value="VATEX-EU-132-1E"/>
-        <enumeration value="vatex-eu-132-1f"/>
-        <enumeration value="VATEX-EU-132-1F"/>
-        <enumeration value="vatex-eu-132-1g"/>
-        <enumeration value="VATEX-EU-132-1G"/>
-        <enumeration value="vatex-eu-132-1h"/>
-        <enumeration value="VATEX-EU-132-1H"/>
-        <enumeration value="vatex-eu-132-1i"/>
-        <enumeration value="VATEX-EU-132-1I"/>
-        <enumeration value="vatex-eu-132-1j"/>
-        <enumeration value="VATEX-EU-132-1J"/>
-        <enumeration value="vatex-eu-132-1k"/>
-        <enumeration value="VATEX-EU-132-1K"/>
-        <enumeration value="vatex-eu-132-1l"/>
-        <enumeration value="VATEX-EU-132-1L"/>
-        <enumeration value="vatex-eu-132-1m"/>
-        <enumeration value="VATEX-EU-132-1M"/>
-        <enumeration value="vatex-eu-132-1n"/>
-        <enumeration value="VATEX-EU-132-1N"/>
-        <enumeration value="vatex-eu-132-1o"/>
-        <enumeration value="VATEX-EU-132-1O"/>
-        <enumeration value="vatex-eu-132-1p"/>
-        <enumeration value="VATEX-EU-132-1P"/>
-        <enumeration value="vatex-eu-132-1q"/>
-        <enumeration value="VATEX-EU-132-1Q"/>
-        <enumeration value="vatex-eu-143"/>
-        <enumeration value="VATEX-EU-143"/>
-        <enumeration value="vatex-eu-143-1a"/>
-        <enumeration value="VATEX-EU-143-1A"/>
-        <enumeration value="vatex-eu-143-1b"/>
-        <enumeration value="VATEX-EU-143-1B"/>
-        <enumeration value="vatex-eu-143-1c"/>
-        <enumeration value="VATEX-EU-143-1C"/>
-        <enumeration value="vatex-eu-143-1d"/>
-        <enumeration value="VATEX-EU-143-1D"/>
-        <enumeration value="vatex-eu-143-1e"/>
-        <enumeration value="VATEX-EU-143-1E"/>
-        <enumeration value="vatex-eu-143-1f"/>
-        <enumeration value="VATEX-EU-143-1F"/>
-        <enumeration value="vatex-eu-143-1fa"/>
-        <enumeration value="VATEX-EU-143-1FA"/>
-        <enumeration value="vatex-eu-143-1g"/>
-        <enumeration value="VATEX-EU-143-1G"/>
-        <enumeration value="vatex-eu-143-1h"/>
-        <enumeration value="VATEX-EU-143-1H"/>
-        <enumeration value="vatex-eu-143-1i"/>
-        <enumeration value="VATEX-EU-143-1I"/>
-        <enumeration value="vatex-eu-143-1j"/>
-        <enumeration value="VATEX-EU-143-1J"/>
-        <enumeration value="vatex-eu-143-1k"/>
-        <enumeration value="VATEX-EU-143-1K"/>
-        <enumeration value="vatex-eu-143-1l"/>
-        <enumeration value="VATEX-EU-143-1L"/>
-        <enumeration value="vatex-eu-148"/>
-        <enumeration value="VATEX-EU-148"/>
-        <enumeration value="vatex-eu-148-a"/>
-        <enumeration value="VATEX-EU-148-A"/>
-        <enumeration value="vatex-eu-148-b"/>
-        <enumeration value="VATEX-EU-148-B"/>
-        <enumeration value="vatex-eu-148-c"/>
-        <enumeration value="VATEX-EU-148-C"/>
-        <enumeration value="vatex-eu-148-d"/>
-        <enumeration value="VATEX-EU-148-D"/>
-        <enumeration value="vatex-eu-148-e"/>
-        <enumeration value="VATEX-EU-148-E"/>
-        <enumeration value="vatex-eu-148-f"/>
-        <enumeration value="VATEX-EU-148-F"/>
-        <enumeration value="vatex-eu-148-g"/>
-        <enumeration value="VATEX-EU-148-G"/>
-        <enumeration value="vatex-eu-151"/>
-        <enumeration value="VATEX-EU-151"/>
-        <enumeration value="vatex-eu-151-1a"/>
-        <enumeration value="VATEX-EU-151-1A"/>
-        <enumeration value="vatex-eu-151-1aa"/>
-        <enumeration value="VATEX-EU-151-1AA"/>
-        <enumeration value="vatex-eu-151-1b"/>
-        <enumeration value="VATEX-EU-151-1B"/>
-        <enumeration value="vatex-eu-151-1c"/>
-        <enumeration value="VATEX-EU-151-1C"/>
-        <enumeration value="vatex-eu-151-1d"/>
-        <enumeration value="VATEX-EU-151-1D"/>
-        <enumeration value="vatex-eu-151-1e"/>
-        <enumeration value="VATEX-EU-151-1E"/>
-        <enumeration value="vatex-eu-309"/>
-        <enumeration value="VATEX-EU-309"/>
-        <enumeration value="vatex-eu-ae"/>
-        <enumeration value="VATEX-EU-AE"/>
-        <enumeration value="vatex-eu-d"/>
-        <enumeration value="VATEX-EU-D"/>
-        <enumeration value="vatex-eu-f"/>
-        <enumeration value="VATEX-EU-F"/>
-        <enumeration value="vatex-eu-g"/>
-        <enumeration value="VATEX-EU-G"/>
-        <enumeration value="vatex-eu-i"/>
-        <enumeration value="VATEX-EU-I"/>
-        <enumeration value="vatex-eu-ic"/>
-        <enumeration value="VATEX-EU-IC"/>
-        <enumeration value="vatex-eu-j"/>
-        <enumeration value="VATEX-EU-J"/>
-        <enumeration value="vatex-eu-o"/>
-        <enumeration value="VATEX-EU-O"/>
-    </cl>
-    <cl id="29">
-        <enumeration value="102"/>
-    </cl>
-    <cl id="30">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
-    <cl id="31">
-        <enumeration value="AED"/>
-        <enumeration value="AFN"/>
-        <enumeration value="ALL"/>
-        <enumeration value="AMD"/>
-        <enumeration value="ANG"/>
-        <enumeration value="AOA"/>
-        <enumeration value="ARS"/>
-        <enumeration value="AUD"/>
-        <enumeration value="AWG"/>
-        <enumeration value="AZN"/>
-        <enumeration value="BAM"/>
-        <enumeration value="BBD"/>
-        <enumeration value="BDT"/>
-        <enumeration value="BGN"/>
-        <enumeration value="BHD"/>
-        <enumeration value="BIF"/>
-        <enumeration value="BMD"/>
-        <enumeration value="BND"/>
-        <enumeration value="BOB"/>
-        <enumeration value="BOV"/>
-        <enumeration value="BRL"/>
-        <enumeration value="BSD"/>
-        <enumeration value="BTN"/>
-        <enumeration value="BWP"/>
-        <enumeration value="BYN"/>
-        <enumeration value="BZD"/>
-        <enumeration value="CAD"/>
-        <enumeration value="CDF"/>
-        <enumeration value="CHE"/>
-        <enumeration value="CHF"/>
-        <enumeration value="CHW"/>
-        <enumeration value="CLF"/>
-        <enumeration value="CLP"/>
-        <enumeration value="CNY"/>
-        <enumeration value="COP"/>
-        <enumeration value="COU"/>
-        <enumeration value="CRC"/>
-        <enumeration value="CUC"/>
-        <enumeration value="CUP"/>
-        <enumeration value="CVE"/>
-        <enumeration value="CZK"/>
-        <enumeration value="DJF"/>
-        <enumeration value="DKK"/>
-        <enumeration value="DOP"/>
-        <enumeration value="DZD"/>
-        <enumeration value="EGP"/>
-        <enumeration value="ERN"/>
-        <enumeration value="ETB"/>
-        <enumeration value="EUR"/>
-        <enumeration value="FJD"/>
-        <enumeration value="FKP"/>
-        <enumeration value="GBP"/>
-        <enumeration value="GEL"/>
-        <enumeration value="GHS"/>
-        <enumeration value="GIP"/>
-        <enumeration value="GMD"/>
-        <enumeration value="GNF"/>
-        <enumeration value="GTQ"/>
-        <enumeration value="GYD"/>
-        <enumeration value="HKD"/>
-        <enumeration value="HNL"/>
-        <enumeration value="HRK"/>
-        <enumeration value="HTG"/>
-        <enumeration value="HUF"/>
-        <enumeration value="IDR"/>
-        <enumeration value="ILS"/>
-        <enumeration value="INR"/>
-        <enumeration value="IQD"/>
-        <enumeration value="IRR"/>
-        <enumeration value="ISK"/>
-        <enumeration value="JMD"/>
-        <enumeration value="JOD"/>
-        <enumeration value="JPY"/>
-        <enumeration value="KES"/>
-        <enumeration value="KGS"/>
-        <enumeration value="KHR"/>
-        <enumeration value="KMF"/>
-        <enumeration value="KPW"/>
-        <enumeration value="KRW"/>
-        <enumeration value="KWD"/>
-        <enumeration value="KYD"/>
-        <enumeration value="KZT"/>
-        <enumeration value="LAK"/>
-        <enumeration value="LBP"/>
-        <enumeration value="LKR"/>
-        <enumeration value="LRD"/>
-        <enumeration value="LSL"/>
-        <enumeration value="LYD"/>
-        <enumeration value="MAD"/>
-        <enumeration value="MDL"/>
-        <enumeration value="MGA"/>
-        <enumeration value="MKD"/>
-        <enumeration value="MMK"/>
-        <enumeration value="MNT"/>
-        <enumeration value="MOP"/>
-        <enumeration value="MRU"/>
-        <enumeration value="MUR"/>
-        <enumeration value="MVR"/>
-        <enumeration value="MWK"/>
-        <enumeration value="MXN"/>
-        <enumeration value="MXV"/>
-        <enumeration value="MYR"/>
-        <enumeration value="MZN"/>
-        <enumeration value="NAD"/>
-        <enumeration value="NGN"/>
-        <enumeration value="NIO"/>
-        <enumeration value="NOK"/>
-        <enumeration value="NPR"/>
-        <enumeration value="NZD"/>
-        <enumeration value="OMR"/>
-        <enumeration value="PAB"/>
-        <enumeration value="PEN"/>
-        <enumeration value="PGK"/>
-        <enumeration value="PHP"/>
-        <enumeration value="PKR"/>
-        <enumeration value="PLN"/>
-        <enumeration value="PYG"/>
-        <enumeration value="QAR"/>
-        <enumeration value="RON"/>
-        <enumeration value="RSD"/>
-        <enumeration value="RUB"/>
-        <enumeration value="RWF"/>
-        <enumeration value="SAR"/>
-        <enumeration value="SBD"/>
-        <enumeration value="SCR"/>
-        <enumeration value="SDG"/>
-        <enumeration value="SEK"/>
-        <enumeration value="SGD"/>
-        <enumeration value="SHP"/>
-        <enumeration value="SLL"/>
-        <enumeration value="SOS"/>
-        <enumeration value="SRD"/>
-        <enumeration value="SSP"/>
-        <enumeration value="STN"/>
-        <enumeration value="SVC"/>
-        <enumeration value="SYP"/>
-        <enumeration value="SZL"/>
-        <enumeration value="THB"/>
-        <enumeration value="TJS"/>
-        <enumeration value="TMT"/>
-        <enumeration value="TND"/>
-        <enumeration value="TOP"/>
-        <enumeration value="TRY"/>
-        <enumeration value="TTD"/>
-        <enumeration value="TWD"/>
-        <enumeration value="TZS"/>
-        <enumeration value="UAH"/>
-        <enumeration value="UGX"/>
-        <enumeration value="USD"/>
-        <enumeration value="USN"/>
-        <enumeration value="UYI"/>
-        <enumeration value="UYU"/>
-        <enumeration value="UYW"/>
-        <enumeration value="UZS"/>
-        <enumeration value="VES"/>
-        <enumeration value="VND"/>
-        <enumeration value="VUV"/>
-        <enumeration value="WST"/>
-        <enumeration value="XAF"/>
-        <enumeration value="XAG"/>
-        <enumeration value="XAU"/>
-        <enumeration value="XBA"/>
-        <enumeration value="XBB"/>
-        <enumeration value="XBC"/>
-        <enumeration value="XBD"/>
-        <enumeration value="XCD"/>
-        <enumeration value="XDR"/>
-        <enumeration value="XOF"/>
-        <enumeration value="XPD"/>
-        <enumeration value="XPF"/>
-        <enumeration value="XPT"/>
-        <enumeration value="XSU"/>
-        <enumeration value="XTS"/>
-        <enumeration value="XUA"/>
-        <enumeration value="XXX"/>
-        <enumeration value="YER"/>
-        <enumeration value="ZAR"/>
-        <enumeration value="ZMW"/>
-        <enumeration value="ZWL"/>
-    </cl>
-    <cl id="32">
-        <enumeration value="AE"/>
-        <enumeration value="E"/>
-        <enumeration value="G"/>
-        <enumeration value="K"/>
-        <enumeration value="L"/>
-        <enumeration value="M"/>
-        <enumeration value="O"/>
-        <enumeration value="S"/>
-        <enumeration value="Z"/>
-    </cl>
+  <cl id="1">
+    <enumeration value="urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended"/>
+  </cl>
+  <cl id="2">
+    <enumeration value="71"/>
+    <enumeration value="80"/>
+    <enumeration value="81"/>
+    <enumeration value="82"/>
+    <enumeration value="83"/>
+    <enumeration value="84"/>
+    <enumeration value="102"/>
+    <enumeration value="130"/>
+    <enumeration value="202"/>
+    <enumeration value="203"/>
+    <enumeration value="204"/>
+    <enumeration value="211"/>
+    <enumeration value="218"/>
+    <enumeration value="219"/>
+    <enumeration value="261"/>
+    <enumeration value="262"/>
+    <enumeration value="295"/>
+    <enumeration value="296"/>
+    <enumeration value="308"/>
+    <enumeration value="325"/>
+    <enumeration value="326"/>
+    <enumeration value="331"/>
+    <enumeration value="380"/>
+    <enumeration value="381"/>
+    <enumeration value="382"/>
+    <enumeration value="383"/>
+    <enumeration value="384"/>
+    <enumeration value="385"/>
+    <enumeration value="386"/>
+    <enumeration value="387"/>
+    <enumeration value="388"/>
+    <enumeration value="389"/>
+    <enumeration value="390"/>
+    <enumeration value="393"/>
+    <enumeration value="394"/>
+    <enumeration value="395"/>
+    <enumeration value="396"/>
+    <enumeration value="420"/>
+    <enumeration value="456"/>
+    <enumeration value="457"/>
+    <enumeration value="458"/>
+    <enumeration value="527"/>
+    <enumeration value="532"/>
+    <enumeration value="553"/>
+    <enumeration value="575"/>
+    <enumeration value="623"/>
+    <enumeration value="633"/>
+    <enumeration value="751"/>
+    <enumeration value="780"/>
+    <enumeration value="817"/>
+    <enumeration value="870"/>
+    <enumeration value="875"/>
+    <enumeration value="876"/>
+    <enumeration value="877"/>
+    <enumeration value="935"/>
+  </cl>
+  <cl id="3">
+    <enumeration value="102"/>
+  </cl>
+  <cl id="4">
+    <enumeration value="AAA"/>
+    <enumeration value="AAB"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAG"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAJ"/>
+    <enumeration value="AAK"/>
+    <enumeration value="AAL"/>
+    <enumeration value="AAM"/>
+    <enumeration value="AAN"/>
+    <enumeration value="AAO"/>
+    <enumeration value="AAP"/>
+    <enumeration value="AAQ"/>
+    <enumeration value="AAR"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAU"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAW"/>
+    <enumeration value="AAX"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABE"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABG"/>
+    <enumeration value="ABH"/>
+    <enumeration value="ABI"/>
+    <enumeration value="ABJ"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABM"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABO"/>
+    <enumeration value="ABP"/>
+    <enumeration value="ABQ"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ABV"/>
+    <enumeration value="ABW"/>
+    <enumeration value="ABX"/>
+    <enumeration value="ABZ"/>
+    <enumeration value="ACA"/>
+    <enumeration value="ACB"/>
+    <enumeration value="ACC"/>
+    <enumeration value="ACD"/>
+    <enumeration value="ACE"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACN"/>
+    <enumeration value="ACO"/>
+    <enumeration value="ACP"/>
+    <enumeration value="ACQ"/>
+    <enumeration value="ACR"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ACT"/>
+    <enumeration value="ACU"/>
+    <enumeration value="ACV"/>
+    <enumeration value="ACW"/>
+    <enumeration value="ACX"/>
+    <enumeration value="ACY"/>
+    <enumeration value="ACZ"/>
+    <enumeration value="ADA"/>
+    <enumeration value="ADB"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADD"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADF"/>
+    <enumeration value="ADG"/>
+    <enumeration value="ADH"/>
+    <enumeration value="ADI"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADS"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADU"/>
+    <enumeration value="ADV"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADX"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEE"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEG"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AEQ"/>
+    <enumeration value="AER"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AFA"/>
+    <enumeration value="AFB"/>
+    <enumeration value="AFC"/>
+    <enumeration value="AFD"/>
+    <enumeration value="AFE"/>
+    <enumeration value="AFF"/>
+    <enumeration value="AFG"/>
+    <enumeration value="AFH"/>
+    <enumeration value="AFI"/>
+    <enumeration value="AFJ"/>
+    <enumeration value="AFK"/>
+    <enumeration value="AFL"/>
+    <enumeration value="AFM"/>
+    <enumeration value="AFN"/>
+    <enumeration value="AFO"/>
+    <enumeration value="AFP"/>
+    <enumeration value="AFQ"/>
+    <enumeration value="AFR"/>
+    <enumeration value="AFS"/>
+    <enumeration value="AFT"/>
+    <enumeration value="AFU"/>
+    <enumeration value="AFV"/>
+    <enumeration value="AFW"/>
+    <enumeration value="AFX"/>
+    <enumeration value="AFY"/>
+    <enumeration value="AFZ"/>
+    <enumeration value="AGA"/>
+    <enumeration value="AGB"/>
+    <enumeration value="AGC"/>
+    <enumeration value="AGD"/>
+    <enumeration value="AGE"/>
+    <enumeration value="AGF"/>
+    <enumeration value="AGG"/>
+    <enumeration value="AGH"/>
+    <enumeration value="AGI"/>
+    <enumeration value="AGJ"/>
+    <enumeration value="AGK"/>
+    <enumeration value="AGL"/>
+    <enumeration value="AGM"/>
+    <enumeration value="AGN"/>
+    <enumeration value="AGO"/>
+    <enumeration value="AGP"/>
+    <enumeration value="AGQ"/>
+    <enumeration value="AGR"/>
+    <enumeration value="AGS"/>
+    <enumeration value="AGT"/>
+    <enumeration value="AGU"/>
+    <enumeration value="AGV"/>
+    <enumeration value="AGW"/>
+    <enumeration value="AGX"/>
+    <enumeration value="AGY"/>
+    <enumeration value="AGZ"/>
+    <enumeration value="AHA"/>
+    <enumeration value="AHB"/>
+    <enumeration value="AHC"/>
+    <enumeration value="AHD"/>
+    <enumeration value="AHE"/>
+    <enumeration value="AHF"/>
+    <enumeration value="AHG"/>
+    <enumeration value="AHH"/>
+    <enumeration value="AHI"/>
+    <enumeration value="AHJ"/>
+    <enumeration value="AHK"/>
+    <enumeration value="AHL"/>
+    <enumeration value="AHM"/>
+    <enumeration value="AHN"/>
+    <enumeration value="AHO"/>
+    <enumeration value="AHP"/>
+    <enumeration value="AHQ"/>
+    <enumeration value="AHR"/>
+    <enumeration value="AHS"/>
+    <enumeration value="AHT"/>
+    <enumeration value="AHU"/>
+    <enumeration value="AHV"/>
+    <enumeration value="AHW"/>
+    <enumeration value="AHX"/>
+    <enumeration value="AHY"/>
+    <enumeration value="AHZ"/>
+    <enumeration value="AIA"/>
+    <enumeration value="AIB"/>
+    <enumeration value="AIC"/>
+    <enumeration value="AID"/>
+    <enumeration value="AIE"/>
+    <enumeration value="AIF"/>
+    <enumeration value="AIG"/>
+    <enumeration value="AIH"/>
+    <enumeration value="AII"/>
+    <enumeration value="AIJ"/>
+    <enumeration value="AIK"/>
+    <enumeration value="AIL"/>
+    <enumeration value="AIM"/>
+    <enumeration value="AIN"/>
+    <enumeration value="AIO"/>
+    <enumeration value="AIP"/>
+    <enumeration value="AIQ"/>
+    <enumeration value="AIR"/>
+    <enumeration value="AIS"/>
+    <enumeration value="AIT"/>
+    <enumeration value="AIU"/>
+    <enumeration value="AIV"/>
+    <enumeration value="AIW"/>
+    <enumeration value="AIX"/>
+    <enumeration value="AIY"/>
+    <enumeration value="AIZ"/>
+    <enumeration value="AJA"/>
+    <enumeration value="AJB"/>
+    <enumeration value="ALC"/>
+    <enumeration value="ALD"/>
+    <enumeration value="ALE"/>
+    <enumeration value="ALF"/>
+    <enumeration value="ALG"/>
+    <enumeration value="ALH"/>
+    <enumeration value="ALI"/>
+    <enumeration value="ALJ"/>
+    <enumeration value="ALK"/>
+    <enumeration value="ALL"/>
+    <enumeration value="ALM"/>
+    <enumeration value="ALN"/>
+    <enumeration value="ALO"/>
+    <enumeration value="ALP"/>
+    <enumeration value="ALQ"/>
+    <enumeration value="ARR"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUT"/>
+    <enumeration value="AUU"/>
+    <enumeration value="AUV"/>
+    <enumeration value="AUW"/>
+    <enumeration value="AUX"/>
+    <enumeration value="AUY"/>
+    <enumeration value="AUZ"/>
+    <enumeration value="AVA"/>
+    <enumeration value="AVB"/>
+    <enumeration value="AVC"/>
+    <enumeration value="AVD"/>
+    <enumeration value="AVE"/>
+    <enumeration value="AVF"/>
+    <enumeration value="BAG"/>
+    <enumeration value="BAH"/>
+    <enumeration value="BAI"/>
+    <enumeration value="BAJ"/>
+    <enumeration value="BAK"/>
+    <enumeration value="BAL"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BAN"/>
+    <enumeration value="BAO"/>
+    <enumeration value="BAP"/>
+    <enumeration value="BAQ"/>
+    <enumeration value="BAR"/>
+    <enumeration value="BAS"/>
+    <enumeration value="BAT"/>
+    <enumeration value="BAU"/>
+    <enumeration value="BAV"/>
+    <enumeration value="BAW"/>
+    <enumeration value="BAX"/>
+    <enumeration value="BAY"/>
+    <enumeration value="BAZ"/>
+    <enumeration value="BBA"/>
+    <enumeration value="BBB"/>
+    <enumeration value="BLC"/>
+    <enumeration value="BLD"/>
+    <enumeration value="BLE"/>
+    <enumeration value="BLF"/>
+    <enumeration value="BLG"/>
+    <enumeration value="BLH"/>
+    <enumeration value="BLI"/>
+    <enumeration value="BLJ"/>
+    <enumeration value="BLK"/>
+    <enumeration value="BLL"/>
+    <enumeration value="BLM"/>
+    <enumeration value="BLN"/>
+    <enumeration value="BLO"/>
+    <enumeration value="BLP"/>
+    <enumeration value="BLQ"/>
+    <enumeration value="BLR"/>
+    <enumeration value="BLS"/>
+    <enumeration value="BLT"/>
+    <enumeration value="BLU"/>
+    <enumeration value="BLV"/>
+    <enumeration value="BLW"/>
+    <enumeration value="BLX"/>
+    <enumeration value="BLY"/>
+    <enumeration value="BLZ"/>
+    <enumeration value="BMA"/>
+    <enumeration value="BMB"/>
+    <enumeration value="BMC"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BME"/>
+    <enumeration value="BMF"/>
+    <enumeration value="BMG"/>
+    <enumeration value="BMH"/>
+    <enumeration value="CCI"/>
+    <enumeration value="CCJ"/>
+    <enumeration value="CCK"/>
+    <enumeration value="CCL"/>
+    <enumeration value="CCM"/>
+    <enumeration value="CCN"/>
+    <enumeration value="CCO"/>
+    <enumeration value="CEX"/>
+    <enumeration value="CHG"/>
+    <enumeration value="CIP"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CLR"/>
+    <enumeration value="COI"/>
+    <enumeration value="CUR"/>
+    <enumeration value="CUS"/>
+    <enumeration value="DAR"/>
+    <enumeration value="DCL"/>
+    <enumeration value="DEL"/>
+    <enumeration value="DIN"/>
+    <enumeration value="DOC"/>
+    <enumeration value="DUT"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FBC"/>
+    <enumeration value="GBL"/>
+    <enumeration value="GEN"/>
+    <enumeration value="GS7"/>
+    <enumeration value="HAN"/>
+    <enumeration value="HAZ"/>
+    <enumeration value="ICN"/>
+    <enumeration value="IIN"/>
+    <enumeration value="IMI"/>
+    <enumeration value="IND"/>
+    <enumeration value="INS"/>
+    <enumeration value="INV"/>
+    <enumeration value="IRP"/>
+    <enumeration value="ITR"/>
+    <enumeration value="ITS"/>
+    <enumeration value="LAN"/>
+    <enumeration value="LIN"/>
+    <enumeration value="LOI"/>
+    <enumeration value="MCO"/>
+    <enumeration value="MDH"/>
+    <enumeration value="MKS"/>
+    <enumeration value="ORI"/>
+    <enumeration value="OSI"/>
+    <enumeration value="PAC"/>
+    <enumeration value="PAI"/>
+    <enumeration value="PAY"/>
+    <enumeration value="PKG"/>
+    <enumeration value="PKT"/>
+    <enumeration value="PMD"/>
+    <enumeration value="PMT"/>
+    <enumeration value="PRD"/>
+    <enumeration value="PRF"/>
+    <enumeration value="PRI"/>
+    <enumeration value="PUR"/>
+    <enumeration value="QIN"/>
+    <enumeration value="QQD"/>
+    <enumeration value="QUT"/>
+    <enumeration value="RAH"/>
+    <enumeration value="REG"/>
+    <enumeration value="RET"/>
+    <enumeration value="REV"/>
+    <enumeration value="RQR"/>
+    <enumeration value="SAF"/>
+    <enumeration value="SIC"/>
+    <enumeration value="SIN"/>
+    <enumeration value="SLR"/>
+    <enumeration value="SPA"/>
+    <enumeration value="SPG"/>
+    <enumeration value="SPH"/>
+    <enumeration value="SPP"/>
+    <enumeration value="SPT"/>
+    <enumeration value="SRN"/>
+    <enumeration value="SSR"/>
+    <enumeration value="SUR"/>
+    <enumeration value="TCA"/>
+    <enumeration value="TDT"/>
+    <enumeration value="TRA"/>
+    <enumeration value="TRR"/>
+    <enumeration value="TXD"/>
+    <enumeration value="WHI"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="5">
+    <enumeration value="0002"/>
+    <enumeration value="0003"/>
+    <enumeration value="0004"/>
+    <enumeration value="0005"/>
+    <enumeration value="0006"/>
+    <enumeration value="0007"/>
+    <enumeration value="0008"/>
+    <enumeration value="0009"/>
+    <enumeration value="0010"/>
+    <enumeration value="0011"/>
+    <enumeration value="0012"/>
+    <enumeration value="0013"/>
+    <enumeration value="0014"/>
+    <enumeration value="0015"/>
+    <enumeration value="0016"/>
+    <enumeration value="0017"/>
+    <enumeration value="0018"/>
+    <enumeration value="0019"/>
+    <enumeration value="0020"/>
+    <enumeration value="0021"/>
+    <enumeration value="0022"/>
+    <enumeration value="0023"/>
+    <enumeration value="0024"/>
+    <enumeration value="0025"/>
+    <enumeration value="0026"/>
+    <enumeration value="0027"/>
+    <enumeration value="0028"/>
+    <enumeration value="0029"/>
+    <enumeration value="0030"/>
+    <enumeration value="0031"/>
+    <enumeration value="0032"/>
+    <enumeration value="0033"/>
+    <enumeration value="0034"/>
+    <enumeration value="0035"/>
+    <enumeration value="0036"/>
+    <enumeration value="0037"/>
+    <enumeration value="0038"/>
+    <enumeration value="0039"/>
+    <enumeration value="0040"/>
+    <enumeration value="0041"/>
+    <enumeration value="0042"/>
+    <enumeration value="0043"/>
+    <enumeration value="0044"/>
+    <enumeration value="0045"/>
+    <enumeration value="0046"/>
+    <enumeration value="0047"/>
+    <enumeration value="0048"/>
+    <enumeration value="0049"/>
+    <enumeration value="0050"/>
+    <enumeration value="0051"/>
+    <enumeration value="0052"/>
+    <enumeration value="0053"/>
+    <enumeration value="0054"/>
+    <enumeration value="0055"/>
+    <enumeration value="0056"/>
+    <enumeration value="0057"/>
+    <enumeration value="0058"/>
+    <enumeration value="0059"/>
+    <enumeration value="0060"/>
+    <enumeration value="0061"/>
+    <enumeration value="0062"/>
+    <enumeration value="0063"/>
+    <enumeration value="0064"/>
+    <enumeration value="0065"/>
+    <enumeration value="0066"/>
+    <enumeration value="0067"/>
+    <enumeration value="0068"/>
+    <enumeration value="0069"/>
+    <enumeration value="0070"/>
+    <enumeration value="0071"/>
+    <enumeration value="0072"/>
+    <enumeration value="0073"/>
+    <enumeration value="0074"/>
+    <enumeration value="0075"/>
+    <enumeration value="0076"/>
+    <enumeration value="0077"/>
+    <enumeration value="0078"/>
+    <enumeration value="0079"/>
+    <enumeration value="0080"/>
+    <enumeration value="0081"/>
+    <enumeration value="0082"/>
+    <enumeration value="0083"/>
+    <enumeration value="0084"/>
+    <enumeration value="0085"/>
+    <enumeration value="0086"/>
+    <enumeration value="0087"/>
+    <enumeration value="0088"/>
+    <enumeration value="0089"/>
+    <enumeration value="0090"/>
+    <enumeration value="0091"/>
+    <enumeration value="0093"/>
+    <enumeration value="0094"/>
+    <enumeration value="0095"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0098"/>
+    <enumeration value="0099"/>
+    <enumeration value="0100"/>
+    <enumeration value="0101"/>
+    <enumeration value="0102"/>
+    <enumeration value="0104"/>
+    <enumeration value="0105"/>
+    <enumeration value="0106"/>
+    <enumeration value="0107"/>
+    <enumeration value="0108"/>
+    <enumeration value="0109"/>
+    <enumeration value="0110"/>
+    <enumeration value="0111"/>
+    <enumeration value="0112"/>
+    <enumeration value="0113"/>
+    <enumeration value="0114"/>
+    <enumeration value="0115"/>
+    <enumeration value="0116"/>
+    <enumeration value="0117"/>
+    <enumeration value="0118"/>
+    <enumeration value="0119"/>
+    <enumeration value="0120"/>
+    <enumeration value="0121"/>
+    <enumeration value="0122"/>
+    <enumeration value="0123"/>
+    <enumeration value="0124"/>
+    <enumeration value="0125"/>
+    <enumeration value="0126"/>
+    <enumeration value="0127"/>
+    <enumeration value="0128"/>
+    <enumeration value="0129"/>
+    <enumeration value="0130"/>
+    <enumeration value="0131"/>
+    <enumeration value="0132"/>
+    <enumeration value="0133"/>
+    <enumeration value="0134"/>
+    <enumeration value="0135"/>
+    <enumeration value="0136"/>
+    <enumeration value="0137"/>
+    <enumeration value="0138"/>
+    <enumeration value="0139"/>
+    <enumeration value="0140"/>
+    <enumeration value="0141"/>
+    <enumeration value="0142"/>
+    <enumeration value="0143"/>
+    <enumeration value="0144"/>
+    <enumeration value="0145"/>
+    <enumeration value="0146"/>
+    <enumeration value="0147"/>
+    <enumeration value="0148"/>
+    <enumeration value="0149"/>
+    <enumeration value="0150"/>
+    <enumeration value="0151"/>
+    <enumeration value="0152"/>
+    <enumeration value="0153"/>
+    <enumeration value="0154"/>
+    <enumeration value="0155"/>
+    <enumeration value="0156"/>
+    <enumeration value="0157"/>
+    <enumeration value="0158"/>
+    <enumeration value="0159"/>
+    <enumeration value="0160"/>
+    <enumeration value="0161"/>
+    <enumeration value="0162"/>
+    <enumeration value="0163"/>
+    <enumeration value="0164"/>
+    <enumeration value="0165"/>
+    <enumeration value="0166"/>
+    <enumeration value="0167"/>
+    <enumeration value="0168"/>
+    <enumeration value="0169"/>
+    <enumeration value="0170"/>
+    <enumeration value="0171"/>
+    <enumeration value="0172"/>
+    <enumeration value="0173"/>
+    <enumeration value="0174"/>
+    <enumeration value="0175"/>
+    <enumeration value="0176"/>
+    <enumeration value="0177"/>
+    <enumeration value="0178"/>
+    <enumeration value="0179"/>
+    <enumeration value="0180"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0185"/>
+    <enumeration value="0186"/>
+    <enumeration value="0187"/>
+    <enumeration value="0188"/>
+    <enumeration value="0189"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0197"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
+  </cl>
+  <cl id="6">
+    <enumeration value="BEST_BEFORE_DATE"/>
+    <enumeration value="COLOR_CODE"/>
+    <enumeration value="COLOR_TEXT"/>
+    <enumeration value="COMMISSION"/>
+    <enumeration value="DEPOSIT_SYSTEM"/>
+    <enumeration value="DEPOSIT_TYPE"/>
+    <enumeration value="DIAMETER"/>
+    <enumeration value="ENERGY_CLASS"/>
+    <enumeration value="EXPIRATION_DATE"/>
+    <enumeration value="FEE"/>
+    <enumeration value="HEIGHT"/>
+    <enumeration value="KIND_OF_ARTICLE"/>
+    <enumeration value="LENGTH"/>
+    <enumeration value="LOT_NUMBER"/>
+    <enumeration value="MATERIAL"/>
+    <enumeration value="METER_LOCATION"/>
+    <enumeration value="METER_NUMBER"/>
+    <enumeration value="ORGANIC_CONTROL_BODY"/>
+    <enumeration value="PACKAGING_MATERIAL"/>
+    <enumeration value="PACKAGING_TYPE"/>
+    <enumeration value="PROMOTIONAL_VARIANT"/>
+    <enumeration value="SEAL_NUMBER"/>
+    <enumeration value="SERIAL_NUMBER"/>
+    <enumeration value="SIZE_CODE"/>
+    <enumeration value="SIZE_TEXT"/>
+    <enumeration value="TRADING_UNIT"/>
+    <enumeration value="VOLUME_GROSS"/>
+    <enumeration value="VOLUME_NET"/>
+    <enumeration value="WASTE_CODE"/>
+    <enumeration value="WASTE_FRACTION"/>
+    <enumeration value="WEEE_NUMBER"/>
+    <enumeration value="WEIGHT_GROSS"/>
+    <enumeration value="WEIGHT_NET"/>
+    <enumeration value="WIDTH"/>
+  </cl>
+  <cl id="7">
+    <enumeration value="AA"/>
+    <enumeration value="AB"/>
+    <enumeration value="AC"/>
+    <enumeration value="AD"/>
+    <enumeration value="AE"/>
+    <enumeration value="AF"/>
+    <enumeration value="AG"/>
+    <enumeration value="AH"/>
+    <enumeration value="AI"/>
+    <enumeration value="AJ"/>
+    <enumeration value="AK"/>
+    <enumeration value="AL"/>
+    <enumeration value="AM"/>
+    <enumeration value="AN"/>
+    <enumeration value="AO"/>
+    <enumeration value="AP"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AR"/>
+    <enumeration value="AS"/>
+    <enumeration value="AT"/>
+    <enumeration value="AU"/>
+    <enumeration value="AV"/>
+    <enumeration value="AW"/>
+    <enumeration value="AX"/>
+    <enumeration value="AY"/>
+    <enumeration value="AZ"/>
+    <enumeration value="BA"/>
+    <enumeration value="BB"/>
+    <enumeration value="BC"/>
+    <enumeration value="BD"/>
+    <enumeration value="BE"/>
+    <enumeration value="BF"/>
+    <enumeration value="BG"/>
+    <enumeration value="BH"/>
+    <enumeration value="BI"/>
+    <enumeration value="BJ"/>
+    <enumeration value="BK"/>
+    <enumeration value="BL"/>
+    <enumeration value="BM"/>
+    <enumeration value="BN"/>
+    <enumeration value="BO"/>
+    <enumeration value="BP"/>
+    <enumeration value="BQ"/>
+    <enumeration value="BR"/>
+    <enumeration value="BS"/>
+    <enumeration value="BT"/>
+    <enumeration value="BU"/>
+    <enumeration value="BV"/>
+    <enumeration value="BW"/>
+    <enumeration value="BX"/>
+    <enumeration value="BY"/>
+    <enumeration value="BZ"/>
+    <enumeration value="CC"/>
+    <enumeration value="CG"/>
+    <enumeration value="CL"/>
+    <enumeration value="CR"/>
+    <enumeration value="CV"/>
+    <enumeration value="DR"/>
+    <enumeration value="DW"/>
+    <enumeration value="EC"/>
+    <enumeration value="EF"/>
+    <enumeration value="EMD"/>
+    <enumeration value="EN"/>
+    <enumeration value="FS"/>
+    <enumeration value="GB"/>
+    <enumeration value="GMN"/>
+    <enumeration value="GN"/>
+    <enumeration value="GS"/>
+    <enumeration value="HS"/>
+    <enumeration value="IB"/>
+    <enumeration value="IN"/>
+    <enumeration value="IS"/>
+    <enumeration value="IT"/>
+    <enumeration value="IZ"/>
+    <enumeration value="MA"/>
+    <enumeration value="MF"/>
+    <enumeration value="MN"/>
+    <enumeration value="MP"/>
+    <enumeration value="NB"/>
+    <enumeration value="ON"/>
+    <enumeration value="PD"/>
+    <enumeration value="PL"/>
+    <enumeration value="PO"/>
+    <enumeration value="PV"/>
+    <enumeration value="QS"/>
+    <enumeration value="RC"/>
+    <enumeration value="RN"/>
+    <enumeration value="RU"/>
+    <enumeration value="RY"/>
+    <enumeration value="SA"/>
+    <enumeration value="SG"/>
+    <enumeration value="SK"/>
+    <enumeration value="SN"/>
+    <enumeration value="SRS"/>
+    <enumeration value="SRT"/>
+    <enumeration value="SRU"/>
+    <enumeration value="SRV"/>
+    <enumeration value="SRW"/>
+    <enumeration value="SRX"/>
+    <enumeration value="SRY"/>
+    <enumeration value="SRZ"/>
+    <enumeration value="SS"/>
+    <enumeration value="SSA"/>
+    <enumeration value="SSB"/>
+    <enumeration value="SSC"/>
+    <enumeration value="SSD"/>
+    <enumeration value="SSE"/>
+    <enumeration value="SSF"/>
+    <enumeration value="SSG"/>
+    <enumeration value="SSH"/>
+    <enumeration value="SSI"/>
+    <enumeration value="SSJ"/>
+    <enumeration value="SSK"/>
+    <enumeration value="SSL"/>
+    <enumeration value="SSM"/>
+    <enumeration value="SSN"/>
+    <enumeration value="SSO"/>
+    <enumeration value="SSP"/>
+    <enumeration value="SSQ"/>
+    <enumeration value="SSR"/>
+    <enumeration value="SSS"/>
+    <enumeration value="SST"/>
+    <enumeration value="SSU"/>
+    <enumeration value="SSV"/>
+    <enumeration value="SSW"/>
+    <enumeration value="SSX"/>
+    <enumeration value="SSY"/>
+    <enumeration value="SSZ"/>
+    <enumeration value="ST"/>
+    <enumeration value="STA"/>
+    <enumeration value="STB"/>
+    <enumeration value="STC"/>
+    <enumeration value="STD"/>
+    <enumeration value="STE"/>
+    <enumeration value="STF"/>
+    <enumeration value="STG"/>
+    <enumeration value="STH"/>
+    <enumeration value="STI"/>
+    <enumeration value="STJ"/>
+    <enumeration value="STK"/>
+    <enumeration value="STL"/>
+    <enumeration value="STM"/>
+    <enumeration value="STN"/>
+    <enumeration value="STO"/>
+    <enumeration value="STP"/>
+    <enumeration value="STQ"/>
+    <enumeration value="STR"/>
+    <enumeration value="STS"/>
+    <enumeration value="STT"/>
+    <enumeration value="STU"/>
+    <enumeration value="STV"/>
+    <enumeration value="STW"/>
+    <enumeration value="STX"/>
+    <enumeration value="STY"/>
+    <enumeration value="STZ"/>
+    <enumeration value="SUA"/>
+    <enumeration value="SUB"/>
+    <enumeration value="SUC"/>
+    <enumeration value="SUD"/>
+    <enumeration value="SUE"/>
+    <enumeration value="SUF"/>
+    <enumeration value="SUG"/>
+    <enumeration value="SUH"/>
+    <enumeration value="SUI"/>
+    <enumeration value="SUJ"/>
+    <enumeration value="SUK"/>
+    <enumeration value="SUL"/>
+    <enumeration value="SUM"/>
+    <enumeration value="TG"/>
+    <enumeration value="TSN"/>
+    <enumeration value="TSO"/>
+    <enumeration value="TSP"/>
+    <enumeration value="TSQ"/>
+    <enumeration value="TSR"/>
+    <enumeration value="TSS"/>
+    <enumeration value="TST"/>
+    <enumeration value="TSU"/>
+    <enumeration value="UA"/>
+    <enumeration value="UP"/>
+    <enumeration value="VN"/>
+    <enumeration value="VP"/>
+    <enumeration value="VS"/>
+    <enumeration value="VX"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="8">
+    <enumeration value="AD"/>
+    <enumeration value="AE"/>
+    <enumeration value="AF"/>
+    <enumeration value="AG"/>
+    <enumeration value="AI"/>
+    <enumeration value="AL"/>
+    <enumeration value="AM"/>
+    <enumeration value="AO"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AR"/>
+    <enumeration value="AS"/>
+    <enumeration value="AT"/>
+    <enumeration value="AU"/>
+    <enumeration value="AW"/>
+    <enumeration value="AX"/>
+    <enumeration value="AZ"/>
+    <enumeration value="BA"/>
+    <enumeration value="BB"/>
+    <enumeration value="BD"/>
+    <enumeration value="BE"/>
+    <enumeration value="BF"/>
+    <enumeration value="BG"/>
+    <enumeration value="BH"/>
+    <enumeration value="BI"/>
+    <enumeration value="BJ"/>
+    <enumeration value="BL"/>
+    <enumeration value="BM"/>
+    <enumeration value="BN"/>
+    <enumeration value="BO"/>
+    <enumeration value="BQ"/>
+    <enumeration value="BR"/>
+    <enumeration value="BS"/>
+    <enumeration value="BT"/>
+    <enumeration value="BV"/>
+    <enumeration value="BW"/>
+    <enumeration value="BY"/>
+    <enumeration value="BZ"/>
+    <enumeration value="CA"/>
+    <enumeration value="CC"/>
+    <enumeration value="CD"/>
+    <enumeration value="CF"/>
+    <enumeration value="CG"/>
+    <enumeration value="CH"/>
+    <enumeration value="CI"/>
+    <enumeration value="CK"/>
+    <enumeration value="CL"/>
+    <enumeration value="CM"/>
+    <enumeration value="CN"/>
+    <enumeration value="CO"/>
+    <enumeration value="CR"/>
+    <enumeration value="CU"/>
+    <enumeration value="CV"/>
+    <enumeration value="CW"/>
+    <enumeration value="CX"/>
+    <enumeration value="CY"/>
+    <enumeration value="CZ"/>
+    <enumeration value="DE"/>
+    <enumeration value="DJ"/>
+    <enumeration value="DK"/>
+    <enumeration value="DM"/>
+    <enumeration value="DO"/>
+    <enumeration value="DZ"/>
+    <enumeration value="EC"/>
+    <enumeration value="EE"/>
+    <enumeration value="EG"/>
+    <enumeration value="EH"/>
+    <enumeration value="ER"/>
+    <enumeration value="ES"/>
+    <enumeration value="ET"/>
+    <enumeration value="FI"/>
+    <enumeration value="FJ"/>
+    <enumeration value="FK"/>
+    <enumeration value="FM"/>
+    <enumeration value="FO"/>
+    <enumeration value="FR"/>
+    <enumeration value="GA"/>
+    <enumeration value="GB"/>
+    <enumeration value="GD"/>
+    <enumeration value="GE"/>
+    <enumeration value="GF"/>
+    <enumeration value="GG"/>
+    <enumeration value="GH"/>
+    <enumeration value="GI"/>
+    <enumeration value="GL"/>
+    <enumeration value="GM"/>
+    <enumeration value="GN"/>
+    <enumeration value="GP"/>
+    <enumeration value="GQ"/>
+    <enumeration value="GR"/>
+    <enumeration value="GS"/>
+    <enumeration value="GT"/>
+    <enumeration value="GU"/>
+    <enumeration value="GW"/>
+    <enumeration value="GY"/>
+    <enumeration value="HK"/>
+    <enumeration value="HM"/>
+    <enumeration value="HN"/>
+    <enumeration value="HR"/>
+    <enumeration value="HT"/>
+    <enumeration value="HU"/>
+    <enumeration value="ID"/>
+    <enumeration value="IE"/>
+    <enumeration value="IL"/>
+    <enumeration value="IM"/>
+    <enumeration value="IN"/>
+    <enumeration value="IO"/>
+    <enumeration value="IQ"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="IT"/>
+    <enumeration value="JE"/>
+    <enumeration value="JM"/>
+    <enumeration value="JO"/>
+    <enumeration value="JP"/>
+    <enumeration value="KE"/>
+    <enumeration value="KG"/>
+    <enumeration value="KH"/>
+    <enumeration value="KI"/>
+    <enumeration value="KM"/>
+    <enumeration value="KN"/>
+    <enumeration value="KP"/>
+    <enumeration value="KR"/>
+    <enumeration value="KW"/>
+    <enumeration value="KY"/>
+    <enumeration value="KZ"/>
+    <enumeration value="LA"/>
+    <enumeration value="LB"/>
+    <enumeration value="LC"/>
+    <enumeration value="LI"/>
+    <enumeration value="LK"/>
+    <enumeration value="LR"/>
+    <enumeration value="LS"/>
+    <enumeration value="LT"/>
+    <enumeration value="LU"/>
+    <enumeration value="LV"/>
+    <enumeration value="LY"/>
+    <enumeration value="MA"/>
+    <enumeration value="MC"/>
+    <enumeration value="MD"/>
+    <enumeration value="ME"/>
+    <enumeration value="MF"/>
+    <enumeration value="MG"/>
+    <enumeration value="MH"/>
+    <enumeration value="MK"/>
+    <enumeration value="ML"/>
+    <enumeration value="MM"/>
+    <enumeration value="MN"/>
+    <enumeration value="MO"/>
+    <enumeration value="MP"/>
+    <enumeration value="MQ"/>
+    <enumeration value="MR"/>
+    <enumeration value="MS"/>
+    <enumeration value="MT"/>
+    <enumeration value="MU"/>
+    <enumeration value="MV"/>
+    <enumeration value="MW"/>
+    <enumeration value="MX"/>
+    <enumeration value="MY"/>
+    <enumeration value="MZ"/>
+    <enumeration value="NA"/>
+    <enumeration value="NC"/>
+    <enumeration value="NE"/>
+    <enumeration value="NF"/>
+    <enumeration value="NG"/>
+    <enumeration value="NI"/>
+    <enumeration value="NL"/>
+    <enumeration value="NO"/>
+    <enumeration value="NP"/>
+    <enumeration value="NR"/>
+    <enumeration value="NU"/>
+    <enumeration value="NZ"/>
+    <enumeration value="OM"/>
+    <enumeration value="PA"/>
+    <enumeration value="PE"/>
+    <enumeration value="PF"/>
+    <enumeration value="PG"/>
+    <enumeration value="PH"/>
+    <enumeration value="PK"/>
+    <enumeration value="PL"/>
+    <enumeration value="PM"/>
+    <enumeration value="PN"/>
+    <enumeration value="PR"/>
+    <enumeration value="PS"/>
+    <enumeration value="PT"/>
+    <enumeration value="PW"/>
+    <enumeration value="PY"/>
+    <enumeration value="QA"/>
+    <enumeration value="RE"/>
+    <enumeration value="RO"/>
+    <enumeration value="RS"/>
+    <enumeration value="RU"/>
+    <enumeration value="RW"/>
+    <enumeration value="SA"/>
+    <enumeration value="SB"/>
+    <enumeration value="SC"/>
+    <enumeration value="SD"/>
+    <enumeration value="SE"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SI"/>
+    <enumeration value="SJ"/>
+    <enumeration value="SK"/>
+    <enumeration value="SL"/>
+    <enumeration value="SM"/>
+    <enumeration value="SN"/>
+    <enumeration value="SO"/>
+    <enumeration value="SR"/>
+    <enumeration value="SS"/>
+    <enumeration value="ST"/>
+    <enumeration value="SV"/>
+    <enumeration value="SX"/>
+    <enumeration value="SY"/>
+    <enumeration value="SZ"/>
+    <enumeration value="TC"/>
+    <enumeration value="TD"/>
+    <enumeration value="TF"/>
+    <enumeration value="TG"/>
+    <enumeration value="TH"/>
+    <enumeration value="TJ"/>
+    <enumeration value="TK"/>
+    <enumeration value="TL"/>
+    <enumeration value="TM"/>
+    <enumeration value="TN"/>
+    <enumeration value="TO"/>
+    <enumeration value="TR"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="TW"/>
+    <enumeration value="TZ"/>
+    <enumeration value="UA"/>
+    <enumeration value="UG"/>
+    <enumeration value="UM"/>
+    <enumeration value="US"/>
+    <enumeration value="UY"/>
+    <enumeration value="UZ"/>
+    <enumeration value="VA"/>
+    <enumeration value="VC"/>
+    <enumeration value="VE"/>
+    <enumeration value="VG"/>
+    <enumeration value="VI"/>
+    <enumeration value="VN"/>
+    <enumeration value="VU"/>
+    <enumeration value="WF"/>
+    <enumeration value="WS"/>
+    <enumeration value="YE"/>
+    <enumeration value="YT"/>
+    <enumeration value="ZA"/>
+    <enumeration value="ZM"/>
+    <enumeration value="ZW"/>
+    <enumeration value="1A"/>
+    <enumeration value="XI"/>
+  </cl>
+  <cl id="9">
+    <enumeration value="10"/>
+    <enumeration value="11"/>
+    <enumeration value="13"/>
+    <enumeration value="14"/>
+    <enumeration value="15"/>
+    <enumeration value="20"/>
+    <enumeration value="21"/>
+    <enumeration value="22"/>
+    <enumeration value="23"/>
+    <enumeration value="24"/>
+    <enumeration value="25"/>
+    <enumeration value="27"/>
+    <enumeration value="28"/>
+    <enumeration value="33"/>
+    <enumeration value="34"/>
+    <enumeration value="35"/>
+    <enumeration value="37"/>
+    <enumeration value="38"/>
+    <enumeration value="40"/>
+    <enumeration value="41"/>
+    <enumeration value="56"/>
+    <enumeration value="57"/>
+    <enumeration value="58"/>
+    <enumeration value="59"/>
+    <enumeration value="60"/>
+    <enumeration value="61"/>
+    <enumeration value="74"/>
+    <enumeration value="77"/>
+    <enumeration value="80"/>
+    <enumeration value="81"/>
+    <enumeration value="85"/>
+    <enumeration value="87"/>
+    <enumeration value="89"/>
+    <enumeration value="91"/>
+    <enumeration value="1I"/>
+    <enumeration value="2A"/>
+    <enumeration value="2B"/>
+    <enumeration value="2C"/>
+    <enumeration value="2G"/>
+    <enumeration value="2H"/>
+    <enumeration value="2I"/>
+    <enumeration value="2J"/>
+    <enumeration value="2K"/>
+    <enumeration value="2L"/>
+    <enumeration value="2M"/>
+    <enumeration value="2N"/>
+    <enumeration value="2P"/>
+    <enumeration value="2Q"/>
+    <enumeration value="2R"/>
+    <enumeration value="2U"/>
+    <enumeration value="2X"/>
+    <enumeration value="2Y"/>
+    <enumeration value="2Z"/>
+    <enumeration value="3B"/>
+    <enumeration value="3C"/>
+    <enumeration value="4C"/>
+    <enumeration value="4G"/>
+    <enumeration value="4H"/>
+    <enumeration value="4K"/>
+    <enumeration value="4L"/>
+    <enumeration value="4M"/>
+    <enumeration value="4N"/>
+    <enumeration value="4O"/>
+    <enumeration value="4P"/>
+    <enumeration value="4Q"/>
+    <enumeration value="4R"/>
+    <enumeration value="4T"/>
+    <enumeration value="4U"/>
+    <enumeration value="4W"/>
+    <enumeration value="4X"/>
+    <enumeration value="5A"/>
+    <enumeration value="5B"/>
+    <enumeration value="5E"/>
+    <enumeration value="5J"/>
+    <enumeration value="A10"/>
+    <enumeration value="A11"/>
+    <enumeration value="A12"/>
+    <enumeration value="A13"/>
+    <enumeration value="A14"/>
+    <enumeration value="A15"/>
+    <enumeration value="A16"/>
+    <enumeration value="A17"/>
+    <enumeration value="A18"/>
+    <enumeration value="A19"/>
+    <enumeration value="A2"/>
+    <enumeration value="A20"/>
+    <enumeration value="A21"/>
+    <enumeration value="A22"/>
+    <enumeration value="A23"/>
+    <enumeration value="A24"/>
+    <enumeration value="A26"/>
+    <enumeration value="A27"/>
+    <enumeration value="A28"/>
+    <enumeration value="A29"/>
+    <enumeration value="A3"/>
+    <enumeration value="A30"/>
+    <enumeration value="A31"/>
+    <enumeration value="A32"/>
+    <enumeration value="A33"/>
+    <enumeration value="A34"/>
+    <enumeration value="A35"/>
+    <enumeration value="A36"/>
+    <enumeration value="A37"/>
+    <enumeration value="A38"/>
+    <enumeration value="A39"/>
+    <enumeration value="A4"/>
+    <enumeration value="A40"/>
+    <enumeration value="A41"/>
+    <enumeration value="A42"/>
+    <enumeration value="A43"/>
+    <enumeration value="A44"/>
+    <enumeration value="A45"/>
+    <enumeration value="A47"/>
+    <enumeration value="A48"/>
+    <enumeration value="A49"/>
+    <enumeration value="A5"/>
+    <enumeration value="A53"/>
+    <enumeration value="A54"/>
+    <enumeration value="A55"/>
+    <enumeration value="A56"/>
+    <enumeration value="A59"/>
+    <enumeration value="A6"/>
+    <enumeration value="A68"/>
+    <enumeration value="A69"/>
+    <enumeration value="A7"/>
+    <enumeration value="A70"/>
+    <enumeration value="A71"/>
+    <enumeration value="A73"/>
+    <enumeration value="A74"/>
+    <enumeration value="A75"/>
+    <enumeration value="A76"/>
+    <enumeration value="A8"/>
+    <enumeration value="A84"/>
+    <enumeration value="A85"/>
+    <enumeration value="A86"/>
+    <enumeration value="A87"/>
+    <enumeration value="A88"/>
+    <enumeration value="A89"/>
+    <enumeration value="A9"/>
+    <enumeration value="A90"/>
+    <enumeration value="A91"/>
+    <enumeration value="A93"/>
+    <enumeration value="A94"/>
+    <enumeration value="A95"/>
+    <enumeration value="A96"/>
+    <enumeration value="A97"/>
+    <enumeration value="A98"/>
+    <enumeration value="A99"/>
+    <enumeration value="AA"/>
+    <enumeration value="AB"/>
+    <enumeration value="ACR"/>
+    <enumeration value="ACT"/>
+    <enumeration value="AD"/>
+    <enumeration value="AE"/>
+    <enumeration value="AH"/>
+    <enumeration value="AI"/>
+    <enumeration value="AK"/>
+    <enumeration value="AL"/>
+    <enumeration value="AMH"/>
+    <enumeration value="AMP"/>
+    <enumeration value="ANN"/>
+    <enumeration value="APZ"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AS"/>
+    <enumeration value="ASM"/>
+    <enumeration value="ASU"/>
+    <enumeration value="ATM"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AY"/>
+    <enumeration value="AZ"/>
+    <enumeration value="B1"/>
+    <enumeration value="B10"/>
+    <enumeration value="B11"/>
+    <enumeration value="B12"/>
+    <enumeration value="B13"/>
+    <enumeration value="B14"/>
+    <enumeration value="B15"/>
+    <enumeration value="B16"/>
+    <enumeration value="B17"/>
+    <enumeration value="B18"/>
+    <enumeration value="B19"/>
+    <enumeration value="B20"/>
+    <enumeration value="B21"/>
+    <enumeration value="B22"/>
+    <enumeration value="B23"/>
+    <enumeration value="B24"/>
+    <enumeration value="B25"/>
+    <enumeration value="B26"/>
+    <enumeration value="B27"/>
+    <enumeration value="B28"/>
+    <enumeration value="B29"/>
+    <enumeration value="B3"/>
+    <enumeration value="B30"/>
+    <enumeration value="B31"/>
+    <enumeration value="B32"/>
+    <enumeration value="B33"/>
+    <enumeration value="B34"/>
+    <enumeration value="B35"/>
+    <enumeration value="B4"/>
+    <enumeration value="B41"/>
+    <enumeration value="B42"/>
+    <enumeration value="B43"/>
+    <enumeration value="B44"/>
+    <enumeration value="B45"/>
+    <enumeration value="B46"/>
+    <enumeration value="B47"/>
+    <enumeration value="B48"/>
+    <enumeration value="B49"/>
+    <enumeration value="B50"/>
+    <enumeration value="B52"/>
+    <enumeration value="B53"/>
+    <enumeration value="B54"/>
+    <enumeration value="B55"/>
+    <enumeration value="B56"/>
+    <enumeration value="B57"/>
+    <enumeration value="B58"/>
+    <enumeration value="B59"/>
+    <enumeration value="B60"/>
+    <enumeration value="B61"/>
+    <enumeration value="B62"/>
+    <enumeration value="B63"/>
+    <enumeration value="B64"/>
+    <enumeration value="B66"/>
+    <enumeration value="B67"/>
+    <enumeration value="B68"/>
+    <enumeration value="B69"/>
+    <enumeration value="B7"/>
+    <enumeration value="B70"/>
+    <enumeration value="B71"/>
+    <enumeration value="B72"/>
+    <enumeration value="B73"/>
+    <enumeration value="B74"/>
+    <enumeration value="B75"/>
+    <enumeration value="B76"/>
+    <enumeration value="B77"/>
+    <enumeration value="B78"/>
+    <enumeration value="B79"/>
+    <enumeration value="B8"/>
+    <enumeration value="B80"/>
+    <enumeration value="B81"/>
+    <enumeration value="B82"/>
+    <enumeration value="B83"/>
+    <enumeration value="B84"/>
+    <enumeration value="B85"/>
+    <enumeration value="B86"/>
+    <enumeration value="B87"/>
+    <enumeration value="B88"/>
+    <enumeration value="B89"/>
+    <enumeration value="B90"/>
+    <enumeration value="B91"/>
+    <enumeration value="B92"/>
+    <enumeration value="B93"/>
+    <enumeration value="B94"/>
+    <enumeration value="B95"/>
+    <enumeration value="B96"/>
+    <enumeration value="B97"/>
+    <enumeration value="B98"/>
+    <enumeration value="B99"/>
+    <enumeration value="BAR"/>
+    <enumeration value="BB"/>
+    <enumeration value="BFT"/>
+    <enumeration value="BHP"/>
+    <enumeration value="BIL"/>
+    <enumeration value="BLD"/>
+    <enumeration value="BLL"/>
+    <enumeration value="BP"/>
+    <enumeration value="BPM"/>
+    <enumeration value="BQL"/>
+    <enumeration value="BTU"/>
+    <enumeration value="BUA"/>
+    <enumeration value="BUI"/>
+    <enumeration value="C0"/>
+    <enumeration value="C10"/>
+    <enumeration value="C11"/>
+    <enumeration value="C12"/>
+    <enumeration value="C13"/>
+    <enumeration value="C14"/>
+    <enumeration value="C15"/>
+    <enumeration value="C16"/>
+    <enumeration value="C17"/>
+    <enumeration value="C18"/>
+    <enumeration value="C19"/>
+    <enumeration value="C20"/>
+    <enumeration value="C21"/>
+    <enumeration value="C22"/>
+    <enumeration value="C23"/>
+    <enumeration value="C24"/>
+    <enumeration value="C25"/>
+    <enumeration value="C26"/>
+    <enumeration value="C27"/>
+    <enumeration value="C28"/>
+    <enumeration value="C29"/>
+    <enumeration value="C3"/>
+    <enumeration value="C30"/>
+    <enumeration value="C31"/>
+    <enumeration value="C32"/>
+    <enumeration value="C33"/>
+    <enumeration value="C34"/>
+    <enumeration value="C35"/>
+    <enumeration value="C36"/>
+    <enumeration value="C37"/>
+    <enumeration value="C38"/>
+    <enumeration value="C39"/>
+    <enumeration value="C40"/>
+    <enumeration value="C41"/>
+    <enumeration value="C42"/>
+    <enumeration value="C43"/>
+    <enumeration value="C44"/>
+    <enumeration value="C45"/>
+    <enumeration value="C46"/>
+    <enumeration value="C47"/>
+    <enumeration value="C48"/>
+    <enumeration value="C49"/>
+    <enumeration value="C50"/>
+    <enumeration value="C51"/>
+    <enumeration value="C52"/>
+    <enumeration value="C53"/>
+    <enumeration value="C54"/>
+    <enumeration value="C55"/>
+    <enumeration value="C56"/>
+    <enumeration value="C57"/>
+    <enumeration value="C58"/>
+    <enumeration value="C59"/>
+    <enumeration value="C60"/>
+    <enumeration value="C61"/>
+    <enumeration value="C62"/>
+    <enumeration value="C63"/>
+    <enumeration value="C64"/>
+    <enumeration value="C65"/>
+    <enumeration value="C66"/>
+    <enumeration value="C67"/>
+    <enumeration value="C68"/>
+    <enumeration value="C69"/>
+    <enumeration value="C7"/>
+    <enumeration value="C70"/>
+    <enumeration value="C71"/>
+    <enumeration value="C72"/>
+    <enumeration value="C73"/>
+    <enumeration value="C74"/>
+    <enumeration value="C75"/>
+    <enumeration value="C76"/>
+    <enumeration value="C78"/>
+    <enumeration value="C79"/>
+    <enumeration value="C8"/>
+    <enumeration value="C80"/>
+    <enumeration value="C81"/>
+    <enumeration value="C82"/>
+    <enumeration value="C83"/>
+    <enumeration value="C84"/>
+    <enumeration value="C85"/>
+    <enumeration value="C86"/>
+    <enumeration value="C87"/>
+    <enumeration value="C88"/>
+    <enumeration value="C89"/>
+    <enumeration value="C9"/>
+    <enumeration value="C90"/>
+    <enumeration value="C91"/>
+    <enumeration value="C92"/>
+    <enumeration value="C93"/>
+    <enumeration value="C94"/>
+    <enumeration value="C95"/>
+    <enumeration value="C96"/>
+    <enumeration value="C97"/>
+    <enumeration value="C99"/>
+    <enumeration value="CCT"/>
+    <enumeration value="CDL"/>
+    <enumeration value="CEL"/>
+    <enumeration value="CEN"/>
+    <enumeration value="CG"/>
+    <enumeration value="CGM"/>
+    <enumeration value="CKG"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLT"/>
+    <enumeration value="CMK"/>
+    <enumeration value="CMQ"/>
+    <enumeration value="CMT"/>
+    <enumeration value="CNP"/>
+    <enumeration value="CNT"/>
+    <enumeration value="COU"/>
+    <enumeration value="CTG"/>
+    <enumeration value="CTM"/>
+    <enumeration value="CTN"/>
+    <enumeration value="CUR"/>
+    <enumeration value="CWA"/>
+    <enumeration value="CWI"/>
+    <enumeration value="D03"/>
+    <enumeration value="D04"/>
+    <enumeration value="D1"/>
+    <enumeration value="D10"/>
+    <enumeration value="D11"/>
+    <enumeration value="D12"/>
+    <enumeration value="D13"/>
+    <enumeration value="D15"/>
+    <enumeration value="D16"/>
+    <enumeration value="D17"/>
+    <enumeration value="D18"/>
+    <enumeration value="D19"/>
+    <enumeration value="D2"/>
+    <enumeration value="D20"/>
+    <enumeration value="D21"/>
+    <enumeration value="D22"/>
+    <enumeration value="D23"/>
+    <enumeration value="D24"/>
+    <enumeration value="D25"/>
+    <enumeration value="D26"/>
+    <enumeration value="D27"/>
+    <enumeration value="D29"/>
+    <enumeration value="D30"/>
+    <enumeration value="D31"/>
+    <enumeration value="D32"/>
+    <enumeration value="D33"/>
+    <enumeration value="D34"/>
+    <enumeration value="D36"/>
+    <enumeration value="D41"/>
+    <enumeration value="D42"/>
+    <enumeration value="D43"/>
+    <enumeration value="D44"/>
+    <enumeration value="D45"/>
+    <enumeration value="D46"/>
+    <enumeration value="D47"/>
+    <enumeration value="D48"/>
+    <enumeration value="D49"/>
+    <enumeration value="D5"/>
+    <enumeration value="D50"/>
+    <enumeration value="D51"/>
+    <enumeration value="D52"/>
+    <enumeration value="D53"/>
+    <enumeration value="D54"/>
+    <enumeration value="D55"/>
+    <enumeration value="D56"/>
+    <enumeration value="D57"/>
+    <enumeration value="D58"/>
+    <enumeration value="D59"/>
+    <enumeration value="D6"/>
+    <enumeration value="D60"/>
+    <enumeration value="D61"/>
+    <enumeration value="D62"/>
+    <enumeration value="D63"/>
+    <enumeration value="D65"/>
+    <enumeration value="D68"/>
+    <enumeration value="D69"/>
+    <enumeration value="D73"/>
+    <enumeration value="D74"/>
+    <enumeration value="D77"/>
+    <enumeration value="D78"/>
+    <enumeration value="D80"/>
+    <enumeration value="D81"/>
+    <enumeration value="D82"/>
+    <enumeration value="D83"/>
+    <enumeration value="D85"/>
+    <enumeration value="D86"/>
+    <enumeration value="D87"/>
+    <enumeration value="D88"/>
+    <enumeration value="D89"/>
+    <enumeration value="D91"/>
+    <enumeration value="D93"/>
+    <enumeration value="D94"/>
+    <enumeration value="D95"/>
+    <enumeration value="DAA"/>
+    <enumeration value="DAD"/>
+    <enumeration value="DAY"/>
+    <enumeration value="DB"/>
+    <enumeration value="DBM"/>
+    <enumeration value="DBW"/>
+    <enumeration value="DD"/>
+    <enumeration value="DEC"/>
+    <enumeration value="DG"/>
+    <enumeration value="DJ"/>
+    <enumeration value="DLT"/>
+    <enumeration value="DMA"/>
+    <enumeration value="DMK"/>
+    <enumeration value="DMO"/>
+    <enumeration value="DMQ"/>
+    <enumeration value="DMT"/>
+    <enumeration value="DN"/>
+    <enumeration value="DPC"/>
+    <enumeration value="DPR"/>
+    <enumeration value="DPT"/>
+    <enumeration value="DRA"/>
+    <enumeration value="DRI"/>
+    <enumeration value="DRL"/>
+    <enumeration value="DT"/>
+    <enumeration value="DTN"/>
+    <enumeration value="DWT"/>
+    <enumeration value="DZN"/>
+    <enumeration value="DZP"/>
+    <enumeration value="E01"/>
+    <enumeration value="E07"/>
+    <enumeration value="E08"/>
+    <enumeration value="E09"/>
+    <enumeration value="E10"/>
+    <enumeration value="E12"/>
+    <enumeration value="E14"/>
+    <enumeration value="E15"/>
+    <enumeration value="E16"/>
+    <enumeration value="E17"/>
+    <enumeration value="E18"/>
+    <enumeration value="E19"/>
+    <enumeration value="E20"/>
+    <enumeration value="E21"/>
+    <enumeration value="E22"/>
+    <enumeration value="E23"/>
+    <enumeration value="E25"/>
+    <enumeration value="E27"/>
+    <enumeration value="E28"/>
+    <enumeration value="E30"/>
+    <enumeration value="E31"/>
+    <enumeration value="E32"/>
+    <enumeration value="E33"/>
+    <enumeration value="E34"/>
+    <enumeration value="E35"/>
+    <enumeration value="E36"/>
+    <enumeration value="E37"/>
+    <enumeration value="E38"/>
+    <enumeration value="E39"/>
+    <enumeration value="E4"/>
+    <enumeration value="E40"/>
+    <enumeration value="E41"/>
+    <enumeration value="E42"/>
+    <enumeration value="E43"/>
+    <enumeration value="E44"/>
+    <enumeration value="E45"/>
+    <enumeration value="E46"/>
+    <enumeration value="E47"/>
+    <enumeration value="E48"/>
+    <enumeration value="E49"/>
+    <enumeration value="E50"/>
+    <enumeration value="E51"/>
+    <enumeration value="E52"/>
+    <enumeration value="E53"/>
+    <enumeration value="E54"/>
+    <enumeration value="E55"/>
+    <enumeration value="E56"/>
+    <enumeration value="E57"/>
+    <enumeration value="E58"/>
+    <enumeration value="E59"/>
+    <enumeration value="E60"/>
+    <enumeration value="E61"/>
+    <enumeration value="E62"/>
+    <enumeration value="E63"/>
+    <enumeration value="E64"/>
+    <enumeration value="E65"/>
+    <enumeration value="E66"/>
+    <enumeration value="E67"/>
+    <enumeration value="E68"/>
+    <enumeration value="E69"/>
+    <enumeration value="E70"/>
+    <enumeration value="E71"/>
+    <enumeration value="E72"/>
+    <enumeration value="E73"/>
+    <enumeration value="E74"/>
+    <enumeration value="E75"/>
+    <enumeration value="E76"/>
+    <enumeration value="E77"/>
+    <enumeration value="E78"/>
+    <enumeration value="E79"/>
+    <enumeration value="E80"/>
+    <enumeration value="E81"/>
+    <enumeration value="E82"/>
+    <enumeration value="E83"/>
+    <enumeration value="E84"/>
+    <enumeration value="E85"/>
+    <enumeration value="E86"/>
+    <enumeration value="E87"/>
+    <enumeration value="E88"/>
+    <enumeration value="E89"/>
+    <enumeration value="E90"/>
+    <enumeration value="E91"/>
+    <enumeration value="E92"/>
+    <enumeration value="E93"/>
+    <enumeration value="E94"/>
+    <enumeration value="E95"/>
+    <enumeration value="E96"/>
+    <enumeration value="E97"/>
+    <enumeration value="E98"/>
+    <enumeration value="E99"/>
+    <enumeration value="EA"/>
+    <enumeration value="EB"/>
+    <enumeration value="EQ"/>
+    <enumeration value="F01"/>
+    <enumeration value="F02"/>
+    <enumeration value="F03"/>
+    <enumeration value="F04"/>
+    <enumeration value="F05"/>
+    <enumeration value="F06"/>
+    <enumeration value="F07"/>
+    <enumeration value="F08"/>
+    <enumeration value="F10"/>
+    <enumeration value="F11"/>
+    <enumeration value="F12"/>
+    <enumeration value="F13"/>
+    <enumeration value="F14"/>
+    <enumeration value="F15"/>
+    <enumeration value="F16"/>
+    <enumeration value="F17"/>
+    <enumeration value="F18"/>
+    <enumeration value="F19"/>
+    <enumeration value="F20"/>
+    <enumeration value="F21"/>
+    <enumeration value="F22"/>
+    <enumeration value="F23"/>
+    <enumeration value="F24"/>
+    <enumeration value="F25"/>
+    <enumeration value="F26"/>
+    <enumeration value="F27"/>
+    <enumeration value="F28"/>
+    <enumeration value="F29"/>
+    <enumeration value="F30"/>
+    <enumeration value="F31"/>
+    <enumeration value="F32"/>
+    <enumeration value="F33"/>
+    <enumeration value="F34"/>
+    <enumeration value="F35"/>
+    <enumeration value="F36"/>
+    <enumeration value="F37"/>
+    <enumeration value="F38"/>
+    <enumeration value="F39"/>
+    <enumeration value="F40"/>
+    <enumeration value="F41"/>
+    <enumeration value="F42"/>
+    <enumeration value="F43"/>
+    <enumeration value="F44"/>
+    <enumeration value="F45"/>
+    <enumeration value="F46"/>
+    <enumeration value="F47"/>
+    <enumeration value="F48"/>
+    <enumeration value="F49"/>
+    <enumeration value="F50"/>
+    <enumeration value="F51"/>
+    <enumeration value="F52"/>
+    <enumeration value="F53"/>
+    <enumeration value="F54"/>
+    <enumeration value="F55"/>
+    <enumeration value="F56"/>
+    <enumeration value="F57"/>
+    <enumeration value="F58"/>
+    <enumeration value="F59"/>
+    <enumeration value="F60"/>
+    <enumeration value="F61"/>
+    <enumeration value="F62"/>
+    <enumeration value="F63"/>
+    <enumeration value="F64"/>
+    <enumeration value="F65"/>
+    <enumeration value="F66"/>
+    <enumeration value="F67"/>
+    <enumeration value="F68"/>
+    <enumeration value="F69"/>
+    <enumeration value="F70"/>
+    <enumeration value="F71"/>
+    <enumeration value="F72"/>
+    <enumeration value="F73"/>
+    <enumeration value="F74"/>
+    <enumeration value="F75"/>
+    <enumeration value="F76"/>
+    <enumeration value="F77"/>
+    <enumeration value="F78"/>
+    <enumeration value="F79"/>
+    <enumeration value="F80"/>
+    <enumeration value="F81"/>
+    <enumeration value="F82"/>
+    <enumeration value="F83"/>
+    <enumeration value="F84"/>
+    <enumeration value="F85"/>
+    <enumeration value="F86"/>
+    <enumeration value="F87"/>
+    <enumeration value="F88"/>
+    <enumeration value="F89"/>
+    <enumeration value="F90"/>
+    <enumeration value="F91"/>
+    <enumeration value="F92"/>
+    <enumeration value="F93"/>
+    <enumeration value="F94"/>
+    <enumeration value="F95"/>
+    <enumeration value="F96"/>
+    <enumeration value="F97"/>
+    <enumeration value="F98"/>
+    <enumeration value="F99"/>
+    <enumeration value="FAH"/>
+    <enumeration value="FAR"/>
+    <enumeration value="FBM"/>
+    <enumeration value="FC"/>
+    <enumeration value="FF"/>
+    <enumeration value="FH"/>
+    <enumeration value="FIT"/>
+    <enumeration value="FL"/>
+    <enumeration value="FNU"/>
+    <enumeration value="FOT"/>
+    <enumeration value="FP"/>
+    <enumeration value="FR"/>
+    <enumeration value="FS"/>
+    <enumeration value="FTK"/>
+    <enumeration value="FTQ"/>
+    <enumeration value="G01"/>
+    <enumeration value="G04"/>
+    <enumeration value="G05"/>
+    <enumeration value="G06"/>
+    <enumeration value="G08"/>
+    <enumeration value="G09"/>
+    <enumeration value="G10"/>
+    <enumeration value="G11"/>
+    <enumeration value="G12"/>
+    <enumeration value="G13"/>
+    <enumeration value="G14"/>
+    <enumeration value="G15"/>
+    <enumeration value="G16"/>
+    <enumeration value="G17"/>
+    <enumeration value="G18"/>
+    <enumeration value="G19"/>
+    <enumeration value="G2"/>
+    <enumeration value="G20"/>
+    <enumeration value="G21"/>
+    <enumeration value="G23"/>
+    <enumeration value="G24"/>
+    <enumeration value="G25"/>
+    <enumeration value="G26"/>
+    <enumeration value="G27"/>
+    <enumeration value="G28"/>
+    <enumeration value="G29"/>
+    <enumeration value="G3"/>
+    <enumeration value="G30"/>
+    <enumeration value="G31"/>
+    <enumeration value="G32"/>
+    <enumeration value="G33"/>
+    <enumeration value="G34"/>
+    <enumeration value="G35"/>
+    <enumeration value="G36"/>
+    <enumeration value="G37"/>
+    <enumeration value="G38"/>
+    <enumeration value="G39"/>
+    <enumeration value="G40"/>
+    <enumeration value="G41"/>
+    <enumeration value="G42"/>
+    <enumeration value="G43"/>
+    <enumeration value="G44"/>
+    <enumeration value="G45"/>
+    <enumeration value="G46"/>
+    <enumeration value="G47"/>
+    <enumeration value="G48"/>
+    <enumeration value="G49"/>
+    <enumeration value="G50"/>
+    <enumeration value="G51"/>
+    <enumeration value="G52"/>
+    <enumeration value="G53"/>
+    <enumeration value="G54"/>
+    <enumeration value="G55"/>
+    <enumeration value="G56"/>
+    <enumeration value="G57"/>
+    <enumeration value="G58"/>
+    <enumeration value="G59"/>
+    <enumeration value="G60"/>
+    <enumeration value="G61"/>
+    <enumeration value="G62"/>
+    <enumeration value="G63"/>
+    <enumeration value="G64"/>
+    <enumeration value="G65"/>
+    <enumeration value="G66"/>
+    <enumeration value="G67"/>
+    <enumeration value="G68"/>
+    <enumeration value="G69"/>
+    <enumeration value="G70"/>
+    <enumeration value="G71"/>
+    <enumeration value="G72"/>
+    <enumeration value="G73"/>
+    <enumeration value="G74"/>
+    <enumeration value="G75"/>
+    <enumeration value="G76"/>
+    <enumeration value="G77"/>
+    <enumeration value="G78"/>
+    <enumeration value="G79"/>
+    <enumeration value="G80"/>
+    <enumeration value="G81"/>
+    <enumeration value="G82"/>
+    <enumeration value="G83"/>
+    <enumeration value="G84"/>
+    <enumeration value="G85"/>
+    <enumeration value="G86"/>
+    <enumeration value="G87"/>
+    <enumeration value="G88"/>
+    <enumeration value="G89"/>
+    <enumeration value="G90"/>
+    <enumeration value="G91"/>
+    <enumeration value="G92"/>
+    <enumeration value="G93"/>
+    <enumeration value="G94"/>
+    <enumeration value="G95"/>
+    <enumeration value="G96"/>
+    <enumeration value="G97"/>
+    <enumeration value="G98"/>
+    <enumeration value="G99"/>
+    <enumeration value="GB"/>
+    <enumeration value="GBQ"/>
+    <enumeration value="GDW"/>
+    <enumeration value="GE"/>
+    <enumeration value="GF"/>
+    <enumeration value="GFI"/>
+    <enumeration value="GGR"/>
+    <enumeration value="GIA"/>
+    <enumeration value="GIC"/>
+    <enumeration value="GII"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GJ"/>
+    <enumeration value="GL"/>
+    <enumeration value="GLD"/>
+    <enumeration value="GLI"/>
+    <enumeration value="GLL"/>
+    <enumeration value="GM"/>
+    <enumeration value="GO"/>
+    <enumeration value="GP"/>
+    <enumeration value="GQ"/>
+    <enumeration value="GRM"/>
+    <enumeration value="GRN"/>
+    <enumeration value="GRO"/>
+    <enumeration value="GV"/>
+    <enumeration value="GWH"/>
+    <enumeration value="H03"/>
+    <enumeration value="H04"/>
+    <enumeration value="H05"/>
+    <enumeration value="H06"/>
+    <enumeration value="H07"/>
+    <enumeration value="H08"/>
+    <enumeration value="H09"/>
+    <enumeration value="H10"/>
+    <enumeration value="H11"/>
+    <enumeration value="H12"/>
+    <enumeration value="H13"/>
+    <enumeration value="H14"/>
+    <enumeration value="H15"/>
+    <enumeration value="H16"/>
+    <enumeration value="H18"/>
+    <enumeration value="H19"/>
+    <enumeration value="H20"/>
+    <enumeration value="H21"/>
+    <enumeration value="H22"/>
+    <enumeration value="H23"/>
+    <enumeration value="H24"/>
+    <enumeration value="H25"/>
+    <enumeration value="H26"/>
+    <enumeration value="H27"/>
+    <enumeration value="H28"/>
+    <enumeration value="H29"/>
+    <enumeration value="H30"/>
+    <enumeration value="H31"/>
+    <enumeration value="H32"/>
+    <enumeration value="H33"/>
+    <enumeration value="H34"/>
+    <enumeration value="H35"/>
+    <enumeration value="H36"/>
+    <enumeration value="H37"/>
+    <enumeration value="H38"/>
+    <enumeration value="H39"/>
+    <enumeration value="H40"/>
+    <enumeration value="H41"/>
+    <enumeration value="H42"/>
+    <enumeration value="H43"/>
+    <enumeration value="H44"/>
+    <enumeration value="H45"/>
+    <enumeration value="H46"/>
+    <enumeration value="H47"/>
+    <enumeration value="H48"/>
+    <enumeration value="H49"/>
+    <enumeration value="H50"/>
+    <enumeration value="H51"/>
+    <enumeration value="H52"/>
+    <enumeration value="H53"/>
+    <enumeration value="H54"/>
+    <enumeration value="H55"/>
+    <enumeration value="H56"/>
+    <enumeration value="H57"/>
+    <enumeration value="H58"/>
+    <enumeration value="H59"/>
+    <enumeration value="H60"/>
+    <enumeration value="H61"/>
+    <enumeration value="H62"/>
+    <enumeration value="H63"/>
+    <enumeration value="H64"/>
+    <enumeration value="H65"/>
+    <enumeration value="H66"/>
+    <enumeration value="H67"/>
+    <enumeration value="H68"/>
+    <enumeration value="H69"/>
+    <enumeration value="H70"/>
+    <enumeration value="H71"/>
+    <enumeration value="H72"/>
+    <enumeration value="H73"/>
+    <enumeration value="H74"/>
+    <enumeration value="H75"/>
+    <enumeration value="H76"/>
+    <enumeration value="H77"/>
+    <enumeration value="H79"/>
+    <enumeration value="H80"/>
+    <enumeration value="H81"/>
+    <enumeration value="H82"/>
+    <enumeration value="H83"/>
+    <enumeration value="H84"/>
+    <enumeration value="H85"/>
+    <enumeration value="H87"/>
+    <enumeration value="H88"/>
+    <enumeration value="H89"/>
+    <enumeration value="H90"/>
+    <enumeration value="H91"/>
+    <enumeration value="H92"/>
+    <enumeration value="H93"/>
+    <enumeration value="H94"/>
+    <enumeration value="H95"/>
+    <enumeration value="H96"/>
+    <enumeration value="H98"/>
+    <enumeration value="H99"/>
+    <enumeration value="HA"/>
+    <enumeration value="HAD"/>
+    <enumeration value="HBA"/>
+    <enumeration value="HBX"/>
+    <enumeration value="HC"/>
+    <enumeration value="HDW"/>
+    <enumeration value="HEA"/>
+    <enumeration value="HGM"/>
+    <enumeration value="HH"/>
+    <enumeration value="HIU"/>
+    <enumeration value="HKM"/>
+    <enumeration value="HLT"/>
+    <enumeration value="HM"/>
+    <enumeration value="HMO"/>
+    <enumeration value="HMQ"/>
+    <enumeration value="HMT"/>
+    <enumeration value="HPA"/>
+    <enumeration value="HTZ"/>
+    <enumeration value="HUR"/>
+    <enumeration value="HWE"/>
+    <enumeration value="IA"/>
+    <enumeration value="IE"/>
+    <enumeration value="INH"/>
+    <enumeration value="INK"/>
+    <enumeration value="INQ"/>
+    <enumeration value="ISD"/>
+    <enumeration value="IU"/>
+    <enumeration value="IUG"/>
+    <enumeration value="IV"/>
+    <enumeration value="J10"/>
+    <enumeration value="J12"/>
+    <enumeration value="J13"/>
+    <enumeration value="J14"/>
+    <enumeration value="J15"/>
+    <enumeration value="J16"/>
+    <enumeration value="J17"/>
+    <enumeration value="J18"/>
+    <enumeration value="J19"/>
+    <enumeration value="J2"/>
+    <enumeration value="J20"/>
+    <enumeration value="J21"/>
+    <enumeration value="J22"/>
+    <enumeration value="J23"/>
+    <enumeration value="J24"/>
+    <enumeration value="J25"/>
+    <enumeration value="J26"/>
+    <enumeration value="J27"/>
+    <enumeration value="J28"/>
+    <enumeration value="J29"/>
+    <enumeration value="J30"/>
+    <enumeration value="J31"/>
+    <enumeration value="J32"/>
+    <enumeration value="J33"/>
+    <enumeration value="J34"/>
+    <enumeration value="J35"/>
+    <enumeration value="J36"/>
+    <enumeration value="J38"/>
+    <enumeration value="J39"/>
+    <enumeration value="J40"/>
+    <enumeration value="J41"/>
+    <enumeration value="J42"/>
+    <enumeration value="J43"/>
+    <enumeration value="J44"/>
+    <enumeration value="J45"/>
+    <enumeration value="J46"/>
+    <enumeration value="J47"/>
+    <enumeration value="J48"/>
+    <enumeration value="J49"/>
+    <enumeration value="J50"/>
+    <enumeration value="J51"/>
+    <enumeration value="J52"/>
+    <enumeration value="J53"/>
+    <enumeration value="J54"/>
+    <enumeration value="J55"/>
+    <enumeration value="J56"/>
+    <enumeration value="J57"/>
+    <enumeration value="J58"/>
+    <enumeration value="J59"/>
+    <enumeration value="J60"/>
+    <enumeration value="J61"/>
+    <enumeration value="J62"/>
+    <enumeration value="J63"/>
+    <enumeration value="J64"/>
+    <enumeration value="J65"/>
+    <enumeration value="J66"/>
+    <enumeration value="J67"/>
+    <enumeration value="J68"/>
+    <enumeration value="J69"/>
+    <enumeration value="J70"/>
+    <enumeration value="J71"/>
+    <enumeration value="J72"/>
+    <enumeration value="J73"/>
+    <enumeration value="J74"/>
+    <enumeration value="J75"/>
+    <enumeration value="J76"/>
+    <enumeration value="J78"/>
+    <enumeration value="J79"/>
+    <enumeration value="J81"/>
+    <enumeration value="J82"/>
+    <enumeration value="J83"/>
+    <enumeration value="J84"/>
+    <enumeration value="J85"/>
+    <enumeration value="J87"/>
+    <enumeration value="J90"/>
+    <enumeration value="J91"/>
+    <enumeration value="J92"/>
+    <enumeration value="J93"/>
+    <enumeration value="J95"/>
+    <enumeration value="J96"/>
+    <enumeration value="J97"/>
+    <enumeration value="J98"/>
+    <enumeration value="J99"/>
+    <enumeration value="JE"/>
+    <enumeration value="JK"/>
+    <enumeration value="JM"/>
+    <enumeration value="JNT"/>
+    <enumeration value="JOU"/>
+    <enumeration value="JPS"/>
+    <enumeration value="JWL"/>
+    <enumeration value="K1"/>
+    <enumeration value="K10"/>
+    <enumeration value="K11"/>
+    <enumeration value="K12"/>
+    <enumeration value="K13"/>
+    <enumeration value="K14"/>
+    <enumeration value="K15"/>
+    <enumeration value="K16"/>
+    <enumeration value="K17"/>
+    <enumeration value="K18"/>
+    <enumeration value="K19"/>
+    <enumeration value="K2"/>
+    <enumeration value="K20"/>
+    <enumeration value="K21"/>
+    <enumeration value="K22"/>
+    <enumeration value="K23"/>
+    <enumeration value="K26"/>
+    <enumeration value="K27"/>
+    <enumeration value="K28"/>
+    <enumeration value="K3"/>
+    <enumeration value="K30"/>
+    <enumeration value="K31"/>
+    <enumeration value="K32"/>
+    <enumeration value="K33"/>
+    <enumeration value="K34"/>
+    <enumeration value="K35"/>
+    <enumeration value="K36"/>
+    <enumeration value="K37"/>
+    <enumeration value="K38"/>
+    <enumeration value="K39"/>
+    <enumeration value="K40"/>
+    <enumeration value="K41"/>
+    <enumeration value="K42"/>
+    <enumeration value="K43"/>
+    <enumeration value="K45"/>
+    <enumeration value="K46"/>
+    <enumeration value="K47"/>
+    <enumeration value="K48"/>
+    <enumeration value="K49"/>
+    <enumeration value="K50"/>
+    <enumeration value="K51"/>
+    <enumeration value="K52"/>
+    <enumeration value="K53"/>
+    <enumeration value="K54"/>
+    <enumeration value="K55"/>
+    <enumeration value="K58"/>
+    <enumeration value="K59"/>
+    <enumeration value="K6"/>
+    <enumeration value="K60"/>
+    <enumeration value="K61"/>
+    <enumeration value="K62"/>
+    <enumeration value="K63"/>
+    <enumeration value="K64"/>
+    <enumeration value="K65"/>
+    <enumeration value="K66"/>
+    <enumeration value="K67"/>
+    <enumeration value="K68"/>
+    <enumeration value="K69"/>
+    <enumeration value="K70"/>
+    <enumeration value="K71"/>
+    <enumeration value="K73"/>
+    <enumeration value="K74"/>
+    <enumeration value="K75"/>
+    <enumeration value="K76"/>
+    <enumeration value="K77"/>
+    <enumeration value="K78"/>
+    <enumeration value="K79"/>
+    <enumeration value="K80"/>
+    <enumeration value="K81"/>
+    <enumeration value="K82"/>
+    <enumeration value="K83"/>
+    <enumeration value="K84"/>
+    <enumeration value="K85"/>
+    <enumeration value="K86"/>
+    <enumeration value="K87"/>
+    <enumeration value="K88"/>
+    <enumeration value="K89"/>
+    <enumeration value="K90"/>
+    <enumeration value="K91"/>
+    <enumeration value="K92"/>
+    <enumeration value="K93"/>
+    <enumeration value="K94"/>
+    <enumeration value="K95"/>
+    <enumeration value="K96"/>
+    <enumeration value="K97"/>
+    <enumeration value="K98"/>
+    <enumeration value="K99"/>
+    <enumeration value="KA"/>
+    <enumeration value="KAT"/>
+    <enumeration value="KB"/>
+    <enumeration value="KBA"/>
+    <enumeration value="KCC"/>
+    <enumeration value="KDW"/>
+    <enumeration value="KEL"/>
+    <enumeration value="KGM"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHY"/>
+    <enumeration value="KHZ"/>
+    <enumeration value="KI"/>
+    <enumeration value="KIC"/>
+    <enumeration value="KIP"/>
+    <enumeration value="KJ"/>
+    <enumeration value="KJO"/>
+    <enumeration value="KL"/>
+    <enumeration value="KLK"/>
+    <enumeration value="KLX"/>
+    <enumeration value="KMA"/>
+    <enumeration value="KMH"/>
+    <enumeration value="KMK"/>
+    <enumeration value="KMQ"/>
+    <enumeration value="KMT"/>
+    <enumeration value="KNI"/>
+    <enumeration value="KNM"/>
+    <enumeration value="KNS"/>
+    <enumeration value="KNT"/>
+    <enumeration value="KO"/>
+    <enumeration value="KPA"/>
+    <enumeration value="KPH"/>
+    <enumeration value="KPO"/>
+    <enumeration value="KPP"/>
+    <enumeration value="KR"/>
+    <enumeration value="KSD"/>
+    <enumeration value="KSH"/>
+    <enumeration value="KT"/>
+    <enumeration value="KTN"/>
+    <enumeration value="KUR"/>
+    <enumeration value="KVA"/>
+    <enumeration value="KVR"/>
+    <enumeration value="KVT"/>
+    <enumeration value="KW"/>
+    <enumeration value="KWH"/>
+    <enumeration value="KWN"/>
+    <enumeration value="KWO"/>
+    <enumeration value="KWS"/>
+    <enumeration value="KWT"/>
+    <enumeration value="KWY"/>
+    <enumeration value="KX"/>
+    <enumeration value="L10"/>
+    <enumeration value="L11"/>
+    <enumeration value="L12"/>
+    <enumeration value="L13"/>
+    <enumeration value="L14"/>
+    <enumeration value="L15"/>
+    <enumeration value="L16"/>
+    <enumeration value="L17"/>
+    <enumeration value="L18"/>
+    <enumeration value="L19"/>
+    <enumeration value="L2"/>
+    <enumeration value="L20"/>
+    <enumeration value="L21"/>
+    <enumeration value="L23"/>
+    <enumeration value="L24"/>
+    <enumeration value="L25"/>
+    <enumeration value="L26"/>
+    <enumeration value="L27"/>
+    <enumeration value="L28"/>
+    <enumeration value="L29"/>
+    <enumeration value="L30"/>
+    <enumeration value="L31"/>
+    <enumeration value="L32"/>
+    <enumeration value="L33"/>
+    <enumeration value="L34"/>
+    <enumeration value="L35"/>
+    <enumeration value="L36"/>
+    <enumeration value="L37"/>
+    <enumeration value="L38"/>
+    <enumeration value="L39"/>
+    <enumeration value="L40"/>
+    <enumeration value="L41"/>
+    <enumeration value="L42"/>
+    <enumeration value="L43"/>
+    <enumeration value="L44"/>
+    <enumeration value="L45"/>
+    <enumeration value="L46"/>
+    <enumeration value="L47"/>
+    <enumeration value="L48"/>
+    <enumeration value="L49"/>
+    <enumeration value="L50"/>
+    <enumeration value="L51"/>
+    <enumeration value="L52"/>
+    <enumeration value="L53"/>
+    <enumeration value="L54"/>
+    <enumeration value="L55"/>
+    <enumeration value="L56"/>
+    <enumeration value="L57"/>
+    <enumeration value="L58"/>
+    <enumeration value="L59"/>
+    <enumeration value="L60"/>
+    <enumeration value="L63"/>
+    <enumeration value="L64"/>
+    <enumeration value="L65"/>
+    <enumeration value="L66"/>
+    <enumeration value="L67"/>
+    <enumeration value="L68"/>
+    <enumeration value="L69"/>
+    <enumeration value="L70"/>
+    <enumeration value="L71"/>
+    <enumeration value="L72"/>
+    <enumeration value="L73"/>
+    <enumeration value="L74"/>
+    <enumeration value="L75"/>
+    <enumeration value="L76"/>
+    <enumeration value="L77"/>
+    <enumeration value="L78"/>
+    <enumeration value="L79"/>
+    <enumeration value="L80"/>
+    <enumeration value="L81"/>
+    <enumeration value="L82"/>
+    <enumeration value="L83"/>
+    <enumeration value="L84"/>
+    <enumeration value="L85"/>
+    <enumeration value="L86"/>
+    <enumeration value="L87"/>
+    <enumeration value="L88"/>
+    <enumeration value="L89"/>
+    <enumeration value="L90"/>
+    <enumeration value="L91"/>
+    <enumeration value="L92"/>
+    <enumeration value="L93"/>
+    <enumeration value="L94"/>
+    <enumeration value="L95"/>
+    <enumeration value="L96"/>
+    <enumeration value="L98"/>
+    <enumeration value="L99"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAC"/>
+    <enumeration value="LBR"/>
+    <enumeration value="LBT"/>
+    <enumeration value="LD"/>
+    <enumeration value="LEF"/>
+    <enumeration value="LF"/>
+    <enumeration value="LH"/>
+    <enumeration value="LK"/>
+    <enumeration value="LM"/>
+    <enumeration value="LN"/>
+    <enumeration value="LO"/>
+    <enumeration value="LP"/>
+    <enumeration value="LPA"/>
+    <enumeration value="LR"/>
+    <enumeration value="LS"/>
+    <enumeration value="LTN"/>
+    <enumeration value="LTR"/>
+    <enumeration value="LUB"/>
+    <enumeration value="LUM"/>
+    <enumeration value="LUX"/>
+    <enumeration value="LY"/>
+    <enumeration value="M1"/>
+    <enumeration value="M10"/>
+    <enumeration value="M11"/>
+    <enumeration value="M12"/>
+    <enumeration value="M13"/>
+    <enumeration value="M14"/>
+    <enumeration value="M15"/>
+    <enumeration value="M16"/>
+    <enumeration value="M17"/>
+    <enumeration value="M18"/>
+    <enumeration value="M19"/>
+    <enumeration value="M20"/>
+    <enumeration value="M21"/>
+    <enumeration value="M22"/>
+    <enumeration value="M23"/>
+    <enumeration value="M24"/>
+    <enumeration value="M25"/>
+    <enumeration value="M26"/>
+    <enumeration value="M27"/>
+    <enumeration value="M29"/>
+    <enumeration value="M30"/>
+    <enumeration value="M31"/>
+    <enumeration value="M32"/>
+    <enumeration value="M33"/>
+    <enumeration value="M34"/>
+    <enumeration value="M35"/>
+    <enumeration value="M36"/>
+    <enumeration value="M37"/>
+    <enumeration value="M38"/>
+    <enumeration value="M39"/>
+    <enumeration value="M4"/>
+    <enumeration value="M40"/>
+    <enumeration value="M41"/>
+    <enumeration value="M42"/>
+    <enumeration value="M43"/>
+    <enumeration value="M44"/>
+    <enumeration value="M45"/>
+    <enumeration value="M46"/>
+    <enumeration value="M47"/>
+    <enumeration value="M48"/>
+    <enumeration value="M49"/>
+    <enumeration value="M5"/>
+    <enumeration value="M50"/>
+    <enumeration value="M51"/>
+    <enumeration value="M52"/>
+    <enumeration value="M53"/>
+    <enumeration value="M55"/>
+    <enumeration value="M56"/>
+    <enumeration value="M57"/>
+    <enumeration value="M58"/>
+    <enumeration value="M59"/>
+    <enumeration value="M60"/>
+    <enumeration value="M61"/>
+    <enumeration value="M62"/>
+    <enumeration value="M63"/>
+    <enumeration value="M64"/>
+    <enumeration value="M65"/>
+    <enumeration value="M66"/>
+    <enumeration value="M67"/>
+    <enumeration value="M68"/>
+    <enumeration value="M69"/>
+    <enumeration value="M7"/>
+    <enumeration value="M70"/>
+    <enumeration value="M71"/>
+    <enumeration value="M72"/>
+    <enumeration value="M73"/>
+    <enumeration value="M74"/>
+    <enumeration value="M75"/>
+    <enumeration value="M76"/>
+    <enumeration value="M77"/>
+    <enumeration value="M78"/>
+    <enumeration value="M79"/>
+    <enumeration value="M80"/>
+    <enumeration value="M81"/>
+    <enumeration value="M82"/>
+    <enumeration value="M83"/>
+    <enumeration value="M84"/>
+    <enumeration value="M85"/>
+    <enumeration value="M86"/>
+    <enumeration value="M87"/>
+    <enumeration value="M88"/>
+    <enumeration value="M89"/>
+    <enumeration value="M9"/>
+    <enumeration value="M90"/>
+    <enumeration value="M91"/>
+    <enumeration value="M92"/>
+    <enumeration value="M93"/>
+    <enumeration value="M94"/>
+    <enumeration value="M95"/>
+    <enumeration value="M96"/>
+    <enumeration value="M97"/>
+    <enumeration value="M98"/>
+    <enumeration value="M99"/>
+    <enumeration value="MAH"/>
+    <enumeration value="MAL"/>
+    <enumeration value="MAM"/>
+    <enumeration value="MAR"/>
+    <enumeration value="MAW"/>
+    <enumeration value="MBE"/>
+    <enumeration value="MBF"/>
+    <enumeration value="MBR"/>
+    <enumeration value="MC"/>
+    <enumeration value="MCU"/>
+    <enumeration value="MD"/>
+    <enumeration value="MGM"/>
+    <enumeration value="MHZ"/>
+    <enumeration value="MIK"/>
+    <enumeration value="MIL"/>
+    <enumeration value="MIN"/>
+    <enumeration value="MIO"/>
+    <enumeration value="MIU"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MKM"/>
+    <enumeration value="MKW"/>
+    <enumeration value="MLD"/>
+    <enumeration value="MLT"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MMQ"/>
+    <enumeration value="MMT"/>
+    <enumeration value="MND"/>
+    <enumeration value="MNJ"/>
+    <enumeration value="MON"/>
+    <enumeration value="MPA"/>
+    <enumeration value="MQD"/>
+    <enumeration value="MQH"/>
+    <enumeration value="MQM"/>
+    <enumeration value="MQS"/>
+    <enumeration value="MQW"/>
+    <enumeration value="MRD"/>
+    <enumeration value="MRM"/>
+    <enumeration value="MRW"/>
+    <enumeration value="MSK"/>
+    <enumeration value="MTK"/>
+    <enumeration value="MTQ"/>
+    <enumeration value="MTR"/>
+    <enumeration value="MTS"/>
+    <enumeration value="MTZ"/>
+    <enumeration value="MVA"/>
+    <enumeration value="MWH"/>
+    <enumeration value="N1"/>
+    <enumeration value="N10"/>
+    <enumeration value="N11"/>
+    <enumeration value="N12"/>
+    <enumeration value="N13"/>
+    <enumeration value="N14"/>
+    <enumeration value="N15"/>
+    <enumeration value="N16"/>
+    <enumeration value="N17"/>
+    <enumeration value="N18"/>
+    <enumeration value="N19"/>
+    <enumeration value="N20"/>
+    <enumeration value="N21"/>
+    <enumeration value="N22"/>
+    <enumeration value="N23"/>
+    <enumeration value="N24"/>
+    <enumeration value="N25"/>
+    <enumeration value="N26"/>
+    <enumeration value="N27"/>
+    <enumeration value="N28"/>
+    <enumeration value="N29"/>
+    <enumeration value="N3"/>
+    <enumeration value="N30"/>
+    <enumeration value="N31"/>
+    <enumeration value="N32"/>
+    <enumeration value="N33"/>
+    <enumeration value="N34"/>
+    <enumeration value="N35"/>
+    <enumeration value="N36"/>
+    <enumeration value="N37"/>
+    <enumeration value="N38"/>
+    <enumeration value="N39"/>
+    <enumeration value="N40"/>
+    <enumeration value="N41"/>
+    <enumeration value="N42"/>
+    <enumeration value="N43"/>
+    <enumeration value="N44"/>
+    <enumeration value="N45"/>
+    <enumeration value="N46"/>
+    <enumeration value="N47"/>
+    <enumeration value="N48"/>
+    <enumeration value="N49"/>
+    <enumeration value="N50"/>
+    <enumeration value="N51"/>
+    <enumeration value="N52"/>
+    <enumeration value="N53"/>
+    <enumeration value="N54"/>
+    <enumeration value="N55"/>
+    <enumeration value="N56"/>
+    <enumeration value="N57"/>
+    <enumeration value="N58"/>
+    <enumeration value="N59"/>
+    <enumeration value="N60"/>
+    <enumeration value="N61"/>
+    <enumeration value="N62"/>
+    <enumeration value="N63"/>
+    <enumeration value="N64"/>
+    <enumeration value="N65"/>
+    <enumeration value="N66"/>
+    <enumeration value="N67"/>
+    <enumeration value="N68"/>
+    <enumeration value="N69"/>
+    <enumeration value="N70"/>
+    <enumeration value="N71"/>
+    <enumeration value="N72"/>
+    <enumeration value="N73"/>
+    <enumeration value="N74"/>
+    <enumeration value="N75"/>
+    <enumeration value="N76"/>
+    <enumeration value="N77"/>
+    <enumeration value="N78"/>
+    <enumeration value="N79"/>
+    <enumeration value="N80"/>
+    <enumeration value="N81"/>
+    <enumeration value="N82"/>
+    <enumeration value="N83"/>
+    <enumeration value="N84"/>
+    <enumeration value="N85"/>
+    <enumeration value="N86"/>
+    <enumeration value="N87"/>
+    <enumeration value="N88"/>
+    <enumeration value="N89"/>
+    <enumeration value="N90"/>
+    <enumeration value="N91"/>
+    <enumeration value="N92"/>
+    <enumeration value="N93"/>
+    <enumeration value="N94"/>
+    <enumeration value="N95"/>
+    <enumeration value="N96"/>
+    <enumeration value="N97"/>
+    <enumeration value="N98"/>
+    <enumeration value="N99"/>
+    <enumeration value="NA"/>
+    <enumeration value="NAR"/>
+    <enumeration value="NCL"/>
+    <enumeration value="NEW"/>
+    <enumeration value="NF"/>
+    <enumeration value="NIL"/>
+    <enumeration value="NIU"/>
+    <enumeration value="NL"/>
+    <enumeration value="NM3"/>
+    <enumeration value="NMI"/>
+    <enumeration value="NMP"/>
+    <enumeration value="NPT"/>
+    <enumeration value="NT"/>
+    <enumeration value="NTU"/>
+    <enumeration value="NU"/>
+    <enumeration value="NX"/>
+    <enumeration value="OA"/>
+    <enumeration value="ODE"/>
+    <enumeration value="ODG"/>
+    <enumeration value="ODK"/>
+    <enumeration value="ODM"/>
+    <enumeration value="OHM"/>
+    <enumeration value="ON"/>
+    <enumeration value="ONZ"/>
+    <enumeration value="OPM"/>
+    <enumeration value="OT"/>
+    <enumeration value="OZA"/>
+    <enumeration value="OZI"/>
+    <enumeration value="P1"/>
+    <enumeration value="P10"/>
+    <enumeration value="P11"/>
+    <enumeration value="P12"/>
+    <enumeration value="P13"/>
+    <enumeration value="P14"/>
+    <enumeration value="P15"/>
+    <enumeration value="P16"/>
+    <enumeration value="P17"/>
+    <enumeration value="P18"/>
+    <enumeration value="P19"/>
+    <enumeration value="P2"/>
+    <enumeration value="P20"/>
+    <enumeration value="P21"/>
+    <enumeration value="P22"/>
+    <enumeration value="P23"/>
+    <enumeration value="P24"/>
+    <enumeration value="P25"/>
+    <enumeration value="P26"/>
+    <enumeration value="P27"/>
+    <enumeration value="P28"/>
+    <enumeration value="P29"/>
+    <enumeration value="P30"/>
+    <enumeration value="P31"/>
+    <enumeration value="P32"/>
+    <enumeration value="P33"/>
+    <enumeration value="P34"/>
+    <enumeration value="P35"/>
+    <enumeration value="P36"/>
+    <enumeration value="P37"/>
+    <enumeration value="P38"/>
+    <enumeration value="P39"/>
+    <enumeration value="P40"/>
+    <enumeration value="P41"/>
+    <enumeration value="P42"/>
+    <enumeration value="P43"/>
+    <enumeration value="P44"/>
+    <enumeration value="P45"/>
+    <enumeration value="P46"/>
+    <enumeration value="P47"/>
+    <enumeration value="P48"/>
+    <enumeration value="P49"/>
+    <enumeration value="P5"/>
+    <enumeration value="P50"/>
+    <enumeration value="P51"/>
+    <enumeration value="P52"/>
+    <enumeration value="P53"/>
+    <enumeration value="P54"/>
+    <enumeration value="P55"/>
+    <enumeration value="P56"/>
+    <enumeration value="P57"/>
+    <enumeration value="P58"/>
+    <enumeration value="P59"/>
+    <enumeration value="P60"/>
+    <enumeration value="P61"/>
+    <enumeration value="P62"/>
+    <enumeration value="P63"/>
+    <enumeration value="P64"/>
+    <enumeration value="P65"/>
+    <enumeration value="P66"/>
+    <enumeration value="P67"/>
+    <enumeration value="P68"/>
+    <enumeration value="P69"/>
+    <enumeration value="P70"/>
+    <enumeration value="P71"/>
+    <enumeration value="P72"/>
+    <enumeration value="P73"/>
+    <enumeration value="P74"/>
+    <enumeration value="P75"/>
+    <enumeration value="P76"/>
+    <enumeration value="P77"/>
+    <enumeration value="P78"/>
+    <enumeration value="P79"/>
+    <enumeration value="P80"/>
+    <enumeration value="P81"/>
+    <enumeration value="P82"/>
+    <enumeration value="P83"/>
+    <enumeration value="P84"/>
+    <enumeration value="P85"/>
+    <enumeration value="P86"/>
+    <enumeration value="P87"/>
+    <enumeration value="P88"/>
+    <enumeration value="P89"/>
+    <enumeration value="P90"/>
+    <enumeration value="P91"/>
+    <enumeration value="P92"/>
+    <enumeration value="P93"/>
+    <enumeration value="P94"/>
+    <enumeration value="P95"/>
+    <enumeration value="P96"/>
+    <enumeration value="P97"/>
+    <enumeration value="P98"/>
+    <enumeration value="P99"/>
+    <enumeration value="PAL"/>
+    <enumeration value="PD"/>
+    <enumeration value="PFL"/>
+    <enumeration value="PGL"/>
+    <enumeration value="PI"/>
+    <enumeration value="PLA"/>
+    <enumeration value="PO"/>
+    <enumeration value="PQ"/>
+    <enumeration value="PR"/>
+    <enumeration value="PS"/>
+    <enumeration value="PTD"/>
+    <enumeration value="PTI"/>
+    <enumeration value="PTL"/>
+    <enumeration value="PTN"/>
+    <enumeration value="Q10"/>
+    <enumeration value="Q11"/>
+    <enumeration value="Q12"/>
+    <enumeration value="Q13"/>
+    <enumeration value="Q14"/>
+    <enumeration value="Q15"/>
+    <enumeration value="Q16"/>
+    <enumeration value="Q17"/>
+    <enumeration value="Q18"/>
+    <enumeration value="Q19"/>
+    <enumeration value="Q20"/>
+    <enumeration value="Q21"/>
+    <enumeration value="Q22"/>
+    <enumeration value="Q23"/>
+    <enumeration value="Q24"/>
+    <enumeration value="Q25"/>
+    <enumeration value="Q26"/>
+    <enumeration value="Q27"/>
+    <enumeration value="Q28"/>
+    <enumeration value="Q29"/>
+    <enumeration value="Q3"/>
+    <enumeration value="Q30"/>
+    <enumeration value="Q31"/>
+    <enumeration value="Q32"/>
+    <enumeration value="Q33"/>
+    <enumeration value="Q34"/>
+    <enumeration value="Q35"/>
+    <enumeration value="Q36"/>
+    <enumeration value="Q37"/>
+    <enumeration value="Q38"/>
+    <enumeration value="Q39"/>
+    <enumeration value="Q40"/>
+    <enumeration value="Q41"/>
+    <enumeration value="Q42"/>
+    <enumeration value="QA"/>
+    <enumeration value="QAN"/>
+    <enumeration value="QB"/>
+    <enumeration value="QR"/>
+    <enumeration value="QTD"/>
+    <enumeration value="QTI"/>
+    <enumeration value="QTL"/>
+    <enumeration value="QTR"/>
+    <enumeration value="R1"/>
+    <enumeration value="R9"/>
+    <enumeration value="RH"/>
+    <enumeration value="RM"/>
+    <enumeration value="ROM"/>
+    <enumeration value="RP"/>
+    <enumeration value="RPM"/>
+    <enumeration value="RPS"/>
+    <enumeration value="RT"/>
+    <enumeration value="S3"/>
+    <enumeration value="S4"/>
+    <enumeration value="SAN"/>
+    <enumeration value="SCO"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SEC"/>
+    <enumeration value="SET"/>
+    <enumeration value="SG"/>
+    <enumeration value="SIE"/>
+    <enumeration value="SM3"/>
+    <enumeration value="SMI"/>
+    <enumeration value="SQ"/>
+    <enumeration value="SQR"/>
+    <enumeration value="SR"/>
+    <enumeration value="STC"/>
+    <enumeration value="STI"/>
+    <enumeration value="STK"/>
+    <enumeration value="STL"/>
+    <enumeration value="STN"/>
+    <enumeration value="STW"/>
+    <enumeration value="SW"/>
+    <enumeration value="SX"/>
+    <enumeration value="SYR"/>
+    <enumeration value="T0"/>
+    <enumeration value="T3"/>
+    <enumeration value="TAH"/>
+    <enumeration value="TAN"/>
+    <enumeration value="TI"/>
+    <enumeration value="TIC"/>
+    <enumeration value="TIP"/>
+    <enumeration value="TKM"/>
+    <enumeration value="TMS"/>
+    <enumeration value="TNE"/>
+    <enumeration value="TP"/>
+    <enumeration value="TPI"/>
+    <enumeration value="TPR"/>
+    <enumeration value="TQD"/>
+    <enumeration value="TRL"/>
+    <enumeration value="TST"/>
+    <enumeration value="TTS"/>
+    <enumeration value="U1"/>
+    <enumeration value="U2"/>
+    <enumeration value="UB"/>
+    <enumeration value="UC"/>
+    <enumeration value="VA"/>
+    <enumeration value="VLT"/>
+    <enumeration value="VP"/>
+    <enumeration value="W2"/>
+    <enumeration value="WA"/>
+    <enumeration value="WB"/>
+    <enumeration value="WCD"/>
+    <enumeration value="WE"/>
+    <enumeration value="WEB"/>
+    <enumeration value="WEE"/>
+    <enumeration value="WG"/>
+    <enumeration value="WHR"/>
+    <enumeration value="WM"/>
+    <enumeration value="WSD"/>
+    <enumeration value="WTT"/>
+    <enumeration value="X1"/>
+    <enumeration value="X1A"/>
+    <enumeration value="X1B"/>
+    <enumeration value="X1D"/>
+    <enumeration value="X1F"/>
+    <enumeration value="X1G"/>
+    <enumeration value="X1W"/>
+    <enumeration value="X2C"/>
+    <enumeration value="X3A"/>
+    <enumeration value="X3H"/>
+    <enumeration value="X43"/>
+    <enumeration value="X44"/>
+    <enumeration value="X4A"/>
+    <enumeration value="X4B"/>
+    <enumeration value="X4C"/>
+    <enumeration value="X4D"/>
+    <enumeration value="X4F"/>
+    <enumeration value="X4G"/>
+    <enumeration value="X4H"/>
+    <enumeration value="X5H"/>
+    <enumeration value="X5L"/>
+    <enumeration value="X5M"/>
+    <enumeration value="X6H"/>
+    <enumeration value="X6P"/>
+    <enumeration value="X7A"/>
+    <enumeration value="X7B"/>
+    <enumeration value="X8A"/>
+    <enumeration value="X8B"/>
+    <enumeration value="X8C"/>
+    <enumeration value="XAA"/>
+    <enumeration value="XAB"/>
+    <enumeration value="XAC"/>
+    <enumeration value="XAD"/>
+    <enumeration value="XAE"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAH"/>
+    <enumeration value="XAI"/>
+    <enumeration value="XAJ"/>
+    <enumeration value="XAL"/>
+    <enumeration value="XAM"/>
+    <enumeration value="XAP"/>
+    <enumeration value="XAT"/>
+    <enumeration value="XAV"/>
+    <enumeration value="XB4"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XBE"/>
+    <enumeration value="XBF"/>
+    <enumeration value="XBG"/>
+    <enumeration value="XBH"/>
+    <enumeration value="XBI"/>
+    <enumeration value="XBJ"/>
+    <enumeration value="XBK"/>
+    <enumeration value="XBL"/>
+    <enumeration value="XBM"/>
+    <enumeration value="XBN"/>
+    <enumeration value="XBO"/>
+    <enumeration value="XBP"/>
+    <enumeration value="XBQ"/>
+    <enumeration value="XBR"/>
+    <enumeration value="XBS"/>
+    <enumeration value="XBT"/>
+    <enumeration value="XBU"/>
+    <enumeration value="XBV"/>
+    <enumeration value="XBW"/>
+    <enumeration value="XBX"/>
+    <enumeration value="XBY"/>
+    <enumeration value="XBZ"/>
+    <enumeration value="XCA"/>
+    <enumeration value="XCB"/>
+    <enumeration value="XCC"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XCE"/>
+    <enumeration value="XCF"/>
+    <enumeration value="XCG"/>
+    <enumeration value="XCH"/>
+    <enumeration value="XCI"/>
+    <enumeration value="XCJ"/>
+    <enumeration value="XCK"/>
+    <enumeration value="XCL"/>
+    <enumeration value="XCM"/>
+    <enumeration value="XCN"/>
+    <enumeration value="XCO"/>
+    <enumeration value="XCP"/>
+    <enumeration value="XCQ"/>
+    <enumeration value="XCR"/>
+    <enumeration value="XCS"/>
+    <enumeration value="XCT"/>
+    <enumeration value="XCU"/>
+    <enumeration value="XCV"/>
+    <enumeration value="XCW"/>
+    <enumeration value="XCX"/>
+    <enumeration value="XCY"/>
+    <enumeration value="XCZ"/>
+    <enumeration value="XDA"/>
+    <enumeration value="XDB"/>
+    <enumeration value="XDC"/>
+    <enumeration value="XDG"/>
+    <enumeration value="XDH"/>
+    <enumeration value="XDI"/>
+    <enumeration value="XDJ"/>
+    <enumeration value="XDK"/>
+    <enumeration value="XDL"/>
+    <enumeration value="XDM"/>
+    <enumeration value="XDN"/>
+    <enumeration value="XDP"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XDS"/>
+    <enumeration value="XDT"/>
+    <enumeration value="XDU"/>
+    <enumeration value="XDV"/>
+    <enumeration value="XDW"/>
+    <enumeration value="XDX"/>
+    <enumeration value="XDY"/>
+    <enumeration value="XEC"/>
+    <enumeration value="XED"/>
+    <enumeration value="XEE"/>
+    <enumeration value="XEF"/>
+    <enumeration value="XEG"/>
+    <enumeration value="XEH"/>
+    <enumeration value="XEI"/>
+    <enumeration value="XEN"/>
+    <enumeration value="XFB"/>
+    <enumeration value="XFC"/>
+    <enumeration value="XFD"/>
+    <enumeration value="XFE"/>
+    <enumeration value="XFI"/>
+    <enumeration value="XFL"/>
+    <enumeration value="XFO"/>
+    <enumeration value="XFP"/>
+    <enumeration value="XFR"/>
+    <enumeration value="XFT"/>
+    <enumeration value="XFW"/>
+    <enumeration value="XFX"/>
+    <enumeration value="XGB"/>
+    <enumeration value="XGI"/>
+    <enumeration value="XGL"/>
+    <enumeration value="XGR"/>
+    <enumeration value="XGU"/>
+    <enumeration value="XGY"/>
+    <enumeration value="XGZ"/>
+    <enumeration value="XHA"/>
+    <enumeration value="XHB"/>
+    <enumeration value="XHC"/>
+    <enumeration value="XHG"/>
+    <enumeration value="XHN"/>
+    <enumeration value="XHR"/>
+    <enumeration value="XIA"/>
+    <enumeration value="XIB"/>
+    <enumeration value="XIC"/>
+    <enumeration value="XID"/>
+    <enumeration value="XIE"/>
+    <enumeration value="XIF"/>
+    <enumeration value="XIG"/>
+    <enumeration value="XIH"/>
+    <enumeration value="XIK"/>
+    <enumeration value="XIL"/>
+    <enumeration value="XIN"/>
+    <enumeration value="XIZ"/>
+    <enumeration value="XJB"/>
+    <enumeration value="XJC"/>
+    <enumeration value="XJG"/>
+    <enumeration value="XJR"/>
+    <enumeration value="XJT"/>
+    <enumeration value="XJY"/>
+    <enumeration value="XKG"/>
+    <enumeration value="XKI"/>
+    <enumeration value="XLE"/>
+    <enumeration value="XLG"/>
+    <enumeration value="XLT"/>
+    <enumeration value="XLU"/>
+    <enumeration value="XLV"/>
+    <enumeration value="XLZ"/>
+    <enumeration value="XMA"/>
+    <enumeration value="XMB"/>
+    <enumeration value="XMC"/>
+    <enumeration value="XME"/>
+    <enumeration value="XMR"/>
+    <enumeration value="XMS"/>
+    <enumeration value="XMT"/>
+    <enumeration value="XMW"/>
+    <enumeration value="XMX"/>
+    <enumeration value="XNA"/>
+    <enumeration value="XNE"/>
+    <enumeration value="XNF"/>
+    <enumeration value="XNG"/>
+    <enumeration value="XNS"/>
+    <enumeration value="XNT"/>
+    <enumeration value="XNU"/>
+    <enumeration value="XNV"/>
+    <enumeration value="XO1"/>
+    <enumeration value="XO2"/>
+    <enumeration value="XO3"/>
+    <enumeration value="XO4"/>
+    <enumeration value="XO5"/>
+    <enumeration value="XO6"/>
+    <enumeration value="XO7"/>
+    <enumeration value="XO8"/>
+    <enumeration value="XO9"/>
+    <enumeration value="XOA"/>
+    <enumeration value="XOB"/>
+    <enumeration value="XOC"/>
+    <enumeration value="XOD"/>
+    <enumeration value="XOE"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XOG"/>
+    <enumeration value="XOH"/>
+    <enumeration value="XOI"/>
+    <enumeration value="XOJ"/>
+    <enumeration value="XOK"/>
+    <enumeration value="XOL"/>
+    <enumeration value="XOM"/>
+    <enumeration value="XON"/>
+    <enumeration value="XOP"/>
+    <enumeration value="XOQ"/>
+    <enumeration value="XOR"/>
+    <enumeration value="XOS"/>
+    <enumeration value="XOT"/>
+    <enumeration value="XOU"/>
+    <enumeration value="XOV"/>
+    <enumeration value="XOW"/>
+    <enumeration value="XOX"/>
+    <enumeration value="XOY"/>
+    <enumeration value="XOZ"/>
+    <enumeration value="XP1"/>
+    <enumeration value="XP2"/>
+    <enumeration value="XP3"/>
+    <enumeration value="XP4"/>
+    <enumeration value="XPA"/>
+    <enumeration value="XPB"/>
+    <enumeration value="XPC"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPE"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPG"/>
+    <enumeration value="XPH"/>
+    <enumeration value="XPI"/>
+    <enumeration value="XPJ"/>
+    <enumeration value="XPK"/>
+    <enumeration value="XPL"/>
+    <enumeration value="XPN"/>
+    <enumeration value="XPO"/>
+    <enumeration value="XPP"/>
+    <enumeration value="XPR"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XPU"/>
+    <enumeration value="XPV"/>
+    <enumeration value="XPX"/>
+    <enumeration value="XPY"/>
+    <enumeration value="XPZ"/>
+    <enumeration value="XQA"/>
+    <enumeration value="XQB"/>
+    <enumeration value="XQC"/>
+    <enumeration value="XQD"/>
+    <enumeration value="XQF"/>
+    <enumeration value="XQG"/>
+    <enumeration value="XQH"/>
+    <enumeration value="XQJ"/>
+    <enumeration value="XQK"/>
+    <enumeration value="XQL"/>
+    <enumeration value="XQM"/>
+    <enumeration value="XQN"/>
+    <enumeration value="XQP"/>
+    <enumeration value="XQQ"/>
+    <enumeration value="XQR"/>
+    <enumeration value="XQS"/>
+    <enumeration value="XRD"/>
+    <enumeration value="XRG"/>
+    <enumeration value="XRJ"/>
+    <enumeration value="XRK"/>
+    <enumeration value="XRL"/>
+    <enumeration value="XRO"/>
+    <enumeration value="XRT"/>
+    <enumeration value="XRZ"/>
+    <enumeration value="XSA"/>
+    <enumeration value="XSB"/>
+    <enumeration value="XSC"/>
+    <enumeration value="XSD"/>
+    <enumeration value="XSE"/>
+    <enumeration value="XSH"/>
+    <enumeration value="XSI"/>
+    <enumeration value="XSK"/>
+    <enumeration value="XSL"/>
+    <enumeration value="XSM"/>
+    <enumeration value="XSO"/>
+    <enumeration value="XSP"/>
+    <enumeration value="XSS"/>
+    <enumeration value="XST"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XSV"/>
+    <enumeration value="XSW"/>
+    <enumeration value="XSX"/>
+    <enumeration value="XSY"/>
+    <enumeration value="XSZ"/>
+    <enumeration value="XT1"/>
+    <enumeration value="XTB"/>
+    <enumeration value="XTC"/>
+    <enumeration value="XTD"/>
+    <enumeration value="XTE"/>
+    <enumeration value="XTG"/>
+    <enumeration value="XTI"/>
+    <enumeration value="XTK"/>
+    <enumeration value="XTL"/>
+    <enumeration value="XTN"/>
+    <enumeration value="XTO"/>
+    <enumeration value="XTR"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XTT"/>
+    <enumeration value="XTU"/>
+    <enumeration value="XTV"/>
+    <enumeration value="XTW"/>
+    <enumeration value="XTY"/>
+    <enumeration value="XTZ"/>
+    <enumeration value="XUC"/>
+    <enumeration value="XUN"/>
+    <enumeration value="XVA"/>
+    <enumeration value="XVG"/>
+    <enumeration value="XVI"/>
+    <enumeration value="XVK"/>
+    <enumeration value="XVL"/>
+    <enumeration value="XVN"/>
+    <enumeration value="XVO"/>
+    <enumeration value="XVP"/>
+    <enumeration value="XVQ"/>
+    <enumeration value="XVR"/>
+    <enumeration value="XVS"/>
+    <enumeration value="XVY"/>
+    <enumeration value="XWA"/>
+    <enumeration value="XWB"/>
+    <enumeration value="XWC"/>
+    <enumeration value="XWD"/>
+    <enumeration value="XWF"/>
+    <enumeration value="XWG"/>
+    <enumeration value="XWH"/>
+    <enumeration value="XWJ"/>
+    <enumeration value="XWK"/>
+    <enumeration value="XWL"/>
+    <enumeration value="XWM"/>
+    <enumeration value="XWN"/>
+    <enumeration value="XWP"/>
+    <enumeration value="XWQ"/>
+    <enumeration value="XWR"/>
+    <enumeration value="XWS"/>
+    <enumeration value="XWT"/>
+    <enumeration value="XWU"/>
+    <enumeration value="XWV"/>
+    <enumeration value="XWW"/>
+    <enumeration value="XWX"/>
+    <enumeration value="XWY"/>
+    <enumeration value="XWZ"/>
+    <enumeration value="XXA"/>
+    <enumeration value="XXB"/>
+    <enumeration value="XXC"/>
+    <enumeration value="XXD"/>
+    <enumeration value="XXF"/>
+    <enumeration value="XXG"/>
+    <enumeration value="XXH"/>
+    <enumeration value="XXJ"/>
+    <enumeration value="XXK"/>
+    <enumeration value="XYA"/>
+    <enumeration value="XYB"/>
+    <enumeration value="XYC"/>
+    <enumeration value="XYD"/>
+    <enumeration value="XYF"/>
+    <enumeration value="XYG"/>
+    <enumeration value="XYH"/>
+    <enumeration value="XYJ"/>
+    <enumeration value="XYK"/>
+    <enumeration value="XYL"/>
+    <enumeration value="XYM"/>
+    <enumeration value="XYN"/>
+    <enumeration value="XYP"/>
+    <enumeration value="XYQ"/>
+    <enumeration value="XYR"/>
+    <enumeration value="XYS"/>
+    <enumeration value="XYT"/>
+    <enumeration value="XYV"/>
+    <enumeration value="XYW"/>
+    <enumeration value="XYX"/>
+    <enumeration value="XYY"/>
+    <enumeration value="XYZ"/>
+    <enumeration value="XZA"/>
+    <enumeration value="XZB"/>
+    <enumeration value="XZC"/>
+    <enumeration value="XZD"/>
+    <enumeration value="XZF"/>
+    <enumeration value="XZG"/>
+    <enumeration value="XZH"/>
+    <enumeration value="XZJ"/>
+    <enumeration value="XZK"/>
+    <enumeration value="XZL"/>
+    <enumeration value="XZM"/>
+    <enumeration value="XZN"/>
+    <enumeration value="XZP"/>
+    <enumeration value="XZQ"/>
+    <enumeration value="XZR"/>
+    <enumeration value="XZS"/>
+    <enumeration value="XZT"/>
+    <enumeration value="XZU"/>
+    <enumeration value="XZV"/>
+    <enumeration value="XZW"/>
+    <enumeration value="XZX"/>
+    <enumeration value="XZY"/>
+    <enumeration value="XZZ"/>
+    <enumeration value="YDK"/>
+    <enumeration value="YDQ"/>
+    <enumeration value="YRD"/>
+    <enumeration value="Z11"/>
+    <enumeration value="Z9"/>
+    <enumeration value="ZP"/>
+    <enumeration value="ZZ"/>
+  </cl>
+  <cl id="10">
+    <enumeration value="102"/>
+    <enumeration value="205"/>
+  </cl>
+  <cl id="11">
+    <enumeration value="50"/>
+    <enumeration value="130"/>
+    <enumeration value="916"/>
+  </cl>
+  <cl id="12">
+    <enumeration value="application/json"/>
+    <enumeration value="application/pdf"/>
+    <enumeration value="application/vnd.oasis.opendocument.spreadsheet"/>
+    <enumeration value="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
+    <enumeration value="application/xml"/>
+    <enumeration value="image/jpeg"/>
+    <enumeration value="image/png"/>
+    <enumeration value="text/csv"/>
+    <enumeration value="text/xml"/>
+  </cl>
+  <cl id="13">
+    <enumeration value="AAA"/>
+    <enumeration value="AAB"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAG"/>
+    <enumeration value="AAH"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAJ"/>
+    <enumeration value="AAK"/>
+    <enumeration value="AAL"/>
+    <enumeration value="AAM"/>
+    <enumeration value="AAN"/>
+    <enumeration value="AAO"/>
+    <enumeration value="AAP"/>
+    <enumeration value="AAQ"/>
+    <enumeration value="AAR"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAU"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAW"/>
+    <enumeration value="AAX"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABE"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABG"/>
+    <enumeration value="ABH"/>
+    <enumeration value="ABI"/>
+    <enumeration value="ABJ"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABM"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABO"/>
+    <enumeration value="ABP"/>
+    <enumeration value="ABQ"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ABV"/>
+    <enumeration value="ABW"/>
+    <enumeration value="ABX"/>
+    <enumeration value="ABY"/>
+    <enumeration value="ABZ"/>
+    <enumeration value="AC"/>
+    <enumeration value="ACA"/>
+    <enumeration value="ACB"/>
+    <enumeration value="ACC"/>
+    <enumeration value="ACD"/>
+    <enumeration value="ACE"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACN"/>
+    <enumeration value="ACO"/>
+    <enumeration value="ACP"/>
+    <enumeration value="ACQ"/>
+    <enumeration value="ACR"/>
+    <enumeration value="ACT"/>
+    <enumeration value="ACU"/>
+    <enumeration value="ACV"/>
+    <enumeration value="ACW"/>
+    <enumeration value="ACX"/>
+    <enumeration value="ACY"/>
+    <enumeration value="ACZ"/>
+    <enumeration value="ADA"/>
+    <enumeration value="ADB"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADD"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADF"/>
+    <enumeration value="ADG"/>
+    <enumeration value="ADI"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADU"/>
+    <enumeration value="ADV"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADX"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AE"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEE"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEG"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AEQ"/>
+    <enumeration value="AER"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AF"/>
+    <enumeration value="AFA"/>
+    <enumeration value="AFB"/>
+    <enumeration value="AFC"/>
+    <enumeration value="AFD"/>
+    <enumeration value="AFE"/>
+    <enumeration value="AFF"/>
+    <enumeration value="AFG"/>
+    <enumeration value="AFH"/>
+    <enumeration value="AFI"/>
+    <enumeration value="AFJ"/>
+    <enumeration value="AFK"/>
+    <enumeration value="AFL"/>
+    <enumeration value="AFM"/>
+    <enumeration value="AFN"/>
+    <enumeration value="AFO"/>
+    <enumeration value="AFP"/>
+    <enumeration value="AFQ"/>
+    <enumeration value="AFR"/>
+    <enumeration value="AFS"/>
+    <enumeration value="AFT"/>
+    <enumeration value="AFU"/>
+    <enumeration value="AFV"/>
+    <enumeration value="AFW"/>
+    <enumeration value="AFX"/>
+    <enumeration value="AFY"/>
+    <enumeration value="AFZ"/>
+    <enumeration value="AGA"/>
+    <enumeration value="AGB"/>
+    <enumeration value="AGC"/>
+    <enumeration value="AGD"/>
+    <enumeration value="AGE"/>
+    <enumeration value="AGF"/>
+    <enumeration value="AGG"/>
+    <enumeration value="AGH"/>
+    <enumeration value="AGI"/>
+    <enumeration value="AGJ"/>
+    <enumeration value="AGK"/>
+    <enumeration value="AGL"/>
+    <enumeration value="AGM"/>
+    <enumeration value="AGN"/>
+    <enumeration value="AGO"/>
+    <enumeration value="AGP"/>
+    <enumeration value="AGQ"/>
+    <enumeration value="AGR"/>
+    <enumeration value="AGS"/>
+    <enumeration value="AGT"/>
+    <enumeration value="AGU"/>
+    <enumeration value="AGV"/>
+    <enumeration value="AGW"/>
+    <enumeration value="AGX"/>
+    <enumeration value="AGY"/>
+    <enumeration value="AGZ"/>
+    <enumeration value="AHA"/>
+    <enumeration value="AHB"/>
+    <enumeration value="AHC"/>
+    <enumeration value="AHD"/>
+    <enumeration value="AHE"/>
+    <enumeration value="AHF"/>
+    <enumeration value="AHG"/>
+    <enumeration value="AHH"/>
+    <enumeration value="AHI"/>
+    <enumeration value="AHJ"/>
+    <enumeration value="AHK"/>
+    <enumeration value="AHL"/>
+    <enumeration value="AHM"/>
+    <enumeration value="AHN"/>
+    <enumeration value="AHO"/>
+    <enumeration value="AHP"/>
+    <enumeration value="AHQ"/>
+    <enumeration value="AHR"/>
+    <enumeration value="AHS"/>
+    <enumeration value="AHT"/>
+    <enumeration value="AHU"/>
+    <enumeration value="AHV"/>
+    <enumeration value="AHX"/>
+    <enumeration value="AHY"/>
+    <enumeration value="AHZ"/>
+    <enumeration value="AIA"/>
+    <enumeration value="AIB"/>
+    <enumeration value="AIC"/>
+    <enumeration value="AID"/>
+    <enumeration value="AIE"/>
+    <enumeration value="AIF"/>
+    <enumeration value="AIG"/>
+    <enumeration value="AIH"/>
+    <enumeration value="AII"/>
+    <enumeration value="AIJ"/>
+    <enumeration value="AIK"/>
+    <enumeration value="AIL"/>
+    <enumeration value="AIM"/>
+    <enumeration value="AIN"/>
+    <enumeration value="AIO"/>
+    <enumeration value="AIP"/>
+    <enumeration value="AIQ"/>
+    <enumeration value="AIR"/>
+    <enumeration value="AIS"/>
+    <enumeration value="AIT"/>
+    <enumeration value="AIU"/>
+    <enumeration value="AIV"/>
+    <enumeration value="AIW"/>
+    <enumeration value="AIX"/>
+    <enumeration value="AIY"/>
+    <enumeration value="AIZ"/>
+    <enumeration value="AJA"/>
+    <enumeration value="AJB"/>
+    <enumeration value="AJC"/>
+    <enumeration value="AJD"/>
+    <enumeration value="AJE"/>
+    <enumeration value="AJF"/>
+    <enumeration value="AJG"/>
+    <enumeration value="AJH"/>
+    <enumeration value="AJI"/>
+    <enumeration value="AJJ"/>
+    <enumeration value="AJK"/>
+    <enumeration value="AJL"/>
+    <enumeration value="AJM"/>
+    <enumeration value="AJN"/>
+    <enumeration value="AJO"/>
+    <enumeration value="AJP"/>
+    <enumeration value="AJQ"/>
+    <enumeration value="AJR"/>
+    <enumeration value="AJS"/>
+    <enumeration value="AJT"/>
+    <enumeration value="AJU"/>
+    <enumeration value="AJV"/>
+    <enumeration value="AJW"/>
+    <enumeration value="AJX"/>
+    <enumeration value="AJY"/>
+    <enumeration value="AJZ"/>
+    <enumeration value="AKA"/>
+    <enumeration value="AKB"/>
+    <enumeration value="AKC"/>
+    <enumeration value="AKD"/>
+    <enumeration value="AKE"/>
+    <enumeration value="AKF"/>
+    <enumeration value="AKG"/>
+    <enumeration value="AKH"/>
+    <enumeration value="AKI"/>
+    <enumeration value="AKJ"/>
+    <enumeration value="AKK"/>
+    <enumeration value="AKL"/>
+    <enumeration value="AKM"/>
+    <enumeration value="AKN"/>
+    <enumeration value="AKO"/>
+    <enumeration value="AKP"/>
+    <enumeration value="AKQ"/>
+    <enumeration value="AKR"/>
+    <enumeration value="AKS"/>
+    <enumeration value="AKT"/>
+    <enumeration value="AKU"/>
+    <enumeration value="AKV"/>
+    <enumeration value="AKW"/>
+    <enumeration value="AKX"/>
+    <enumeration value="AKY"/>
+    <enumeration value="AKZ"/>
+    <enumeration value="ALA"/>
+    <enumeration value="ALB"/>
+    <enumeration value="ALC"/>
+    <enumeration value="ALD"/>
+    <enumeration value="ALE"/>
+    <enumeration value="ALF"/>
+    <enumeration value="ALG"/>
+    <enumeration value="ALH"/>
+    <enumeration value="ALI"/>
+    <enumeration value="ALJ"/>
+    <enumeration value="ALK"/>
+    <enumeration value="ALL"/>
+    <enumeration value="ALM"/>
+    <enumeration value="ALN"/>
+    <enumeration value="ALO"/>
+    <enumeration value="ALP"/>
+    <enumeration value="ALQ"/>
+    <enumeration value="ALR"/>
+    <enumeration value="ALS"/>
+    <enumeration value="ALT"/>
+    <enumeration value="ALU"/>
+    <enumeration value="ALV"/>
+    <enumeration value="ALW"/>
+    <enumeration value="ALX"/>
+    <enumeration value="ALY"/>
+    <enumeration value="ALZ"/>
+    <enumeration value="AMA"/>
+    <enumeration value="AMB"/>
+    <enumeration value="AMC"/>
+    <enumeration value="AMD"/>
+    <enumeration value="AME"/>
+    <enumeration value="AMF"/>
+    <enumeration value="AMG"/>
+    <enumeration value="AMH"/>
+    <enumeration value="AMI"/>
+    <enumeration value="AMJ"/>
+    <enumeration value="AMK"/>
+    <enumeration value="AML"/>
+    <enumeration value="AMM"/>
+    <enumeration value="AMN"/>
+    <enumeration value="AMO"/>
+    <enumeration value="AMP"/>
+    <enumeration value="AMQ"/>
+    <enumeration value="AMR"/>
+    <enumeration value="AMS"/>
+    <enumeration value="AMT"/>
+    <enumeration value="AMU"/>
+    <enumeration value="AMV"/>
+    <enumeration value="AMW"/>
+    <enumeration value="AMX"/>
+    <enumeration value="AMY"/>
+    <enumeration value="AMZ"/>
+    <enumeration value="ANA"/>
+    <enumeration value="ANB"/>
+    <enumeration value="ANC"/>
+    <enumeration value="AND"/>
+    <enumeration value="ANE"/>
+    <enumeration value="ANF"/>
+    <enumeration value="ANG"/>
+    <enumeration value="ANH"/>
+    <enumeration value="ANI"/>
+    <enumeration value="ANJ"/>
+    <enumeration value="ANK"/>
+    <enumeration value="ANL"/>
+    <enumeration value="ANM"/>
+    <enumeration value="ANN"/>
+    <enumeration value="ANO"/>
+    <enumeration value="ANP"/>
+    <enumeration value="ANQ"/>
+    <enumeration value="ANR"/>
+    <enumeration value="ANS"/>
+    <enumeration value="ANT"/>
+    <enumeration value="ANU"/>
+    <enumeration value="ANV"/>
+    <enumeration value="ANW"/>
+    <enumeration value="ANX"/>
+    <enumeration value="ANY"/>
+    <enumeration value="AOA"/>
+    <enumeration value="AOD"/>
+    <enumeration value="AOE"/>
+    <enumeration value="AOF"/>
+    <enumeration value="AOG"/>
+    <enumeration value="AOH"/>
+    <enumeration value="AOI"/>
+    <enumeration value="AOJ"/>
+    <enumeration value="AOK"/>
+    <enumeration value="AOL"/>
+    <enumeration value="AOM"/>
+    <enumeration value="AON"/>
+    <enumeration value="AOO"/>
+    <enumeration value="AOP"/>
+    <enumeration value="AOQ"/>
+    <enumeration value="AOR"/>
+    <enumeration value="AOS"/>
+    <enumeration value="AOT"/>
+    <enumeration value="AOU"/>
+    <enumeration value="AOV"/>
+    <enumeration value="AOW"/>
+    <enumeration value="AOX"/>
+    <enumeration value="AOY"/>
+    <enumeration value="AOZ"/>
+    <enumeration value="AP"/>
+    <enumeration value="APA"/>
+    <enumeration value="APB"/>
+    <enumeration value="APC"/>
+    <enumeration value="APD"/>
+    <enumeration value="APE"/>
+    <enumeration value="APF"/>
+    <enumeration value="APG"/>
+    <enumeration value="APH"/>
+    <enumeration value="API"/>
+    <enumeration value="APJ"/>
+    <enumeration value="APK"/>
+    <enumeration value="APL"/>
+    <enumeration value="APM"/>
+    <enumeration value="APN"/>
+    <enumeration value="APO"/>
+    <enumeration value="APP"/>
+    <enumeration value="APQ"/>
+    <enumeration value="APR"/>
+    <enumeration value="APS"/>
+    <enumeration value="APT"/>
+    <enumeration value="APU"/>
+    <enumeration value="APV"/>
+    <enumeration value="APW"/>
+    <enumeration value="APX"/>
+    <enumeration value="APY"/>
+    <enumeration value="APZ"/>
+    <enumeration value="AQA"/>
+    <enumeration value="AQB"/>
+    <enumeration value="AQC"/>
+    <enumeration value="AQD"/>
+    <enumeration value="AQE"/>
+    <enumeration value="AQF"/>
+    <enumeration value="AQG"/>
+    <enumeration value="AQH"/>
+    <enumeration value="AQI"/>
+    <enumeration value="AQJ"/>
+    <enumeration value="AQK"/>
+    <enumeration value="AQL"/>
+    <enumeration value="AQM"/>
+    <enumeration value="AQN"/>
+    <enumeration value="AQO"/>
+    <enumeration value="AQP"/>
+    <enumeration value="AQQ"/>
+    <enumeration value="AQR"/>
+    <enumeration value="AQS"/>
+    <enumeration value="AQT"/>
+    <enumeration value="AQU"/>
+    <enumeration value="AQV"/>
+    <enumeration value="AQW"/>
+    <enumeration value="AQX"/>
+    <enumeration value="AQY"/>
+    <enumeration value="AQZ"/>
+    <enumeration value="ARA"/>
+    <enumeration value="ARB"/>
+    <enumeration value="ARC"/>
+    <enumeration value="ARD"/>
+    <enumeration value="ARE"/>
+    <enumeration value="ARF"/>
+    <enumeration value="ARG"/>
+    <enumeration value="ARH"/>
+    <enumeration value="ARI"/>
+    <enumeration value="ARJ"/>
+    <enumeration value="ARK"/>
+    <enumeration value="ARL"/>
+    <enumeration value="ARM"/>
+    <enumeration value="ARN"/>
+    <enumeration value="ARO"/>
+    <enumeration value="ARP"/>
+    <enumeration value="ARQ"/>
+    <enumeration value="ARR"/>
+    <enumeration value="ARS"/>
+    <enumeration value="ART"/>
+    <enumeration value="ARU"/>
+    <enumeration value="ARV"/>
+    <enumeration value="ARW"/>
+    <enumeration value="ARX"/>
+    <enumeration value="ARY"/>
+    <enumeration value="ARZ"/>
+    <enumeration value="ASA"/>
+    <enumeration value="ASB"/>
+    <enumeration value="ASC"/>
+    <enumeration value="ASD"/>
+    <enumeration value="ASE"/>
+    <enumeration value="ASF"/>
+    <enumeration value="ASG"/>
+    <enumeration value="ASH"/>
+    <enumeration value="ASI"/>
+    <enumeration value="ASJ"/>
+    <enumeration value="ASK"/>
+    <enumeration value="ASL"/>
+    <enumeration value="ASM"/>
+    <enumeration value="ASN"/>
+    <enumeration value="ASO"/>
+    <enumeration value="ASP"/>
+    <enumeration value="ASQ"/>
+    <enumeration value="ASR"/>
+    <enumeration value="ASS"/>
+    <enumeration value="AST"/>
+    <enumeration value="ASU"/>
+    <enumeration value="ASV"/>
+    <enumeration value="ASW"/>
+    <enumeration value="ASX"/>
+    <enumeration value="ASY"/>
+    <enumeration value="ASZ"/>
+    <enumeration value="ATA"/>
+    <enumeration value="ATB"/>
+    <enumeration value="ATC"/>
+    <enumeration value="ATD"/>
+    <enumeration value="ATE"/>
+    <enumeration value="ATF"/>
+    <enumeration value="ATG"/>
+    <enumeration value="ATH"/>
+    <enumeration value="ATI"/>
+    <enumeration value="ATJ"/>
+    <enumeration value="ATK"/>
+    <enumeration value="ATL"/>
+    <enumeration value="ATM"/>
+    <enumeration value="ATN"/>
+    <enumeration value="ATO"/>
+    <enumeration value="ATP"/>
+    <enumeration value="ATQ"/>
+    <enumeration value="ATR"/>
+    <enumeration value="ATS"/>
+    <enumeration value="ATT"/>
+    <enumeration value="ATU"/>
+    <enumeration value="ATV"/>
+    <enumeration value="ATW"/>
+    <enumeration value="ATX"/>
+    <enumeration value="ATY"/>
+    <enumeration value="ATZ"/>
+    <enumeration value="AU"/>
+    <enumeration value="AUA"/>
+    <enumeration value="AUB"/>
+    <enumeration value="AUC"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AUE"/>
+    <enumeration value="AUF"/>
+    <enumeration value="AUG"/>
+    <enumeration value="AUH"/>
+    <enumeration value="AUI"/>
+    <enumeration value="AUJ"/>
+    <enumeration value="AUK"/>
+    <enumeration value="AUL"/>
+    <enumeration value="AUM"/>
+    <enumeration value="AUN"/>
+    <enumeration value="AUO"/>
+    <enumeration value="AUP"/>
+    <enumeration value="AUQ"/>
+    <enumeration value="AUR"/>
+    <enumeration value="AUS"/>
+    <enumeration value="AUT"/>
+    <enumeration value="AUU"/>
+    <enumeration value="AUV"/>
+    <enumeration value="AUW"/>
+    <enumeration value="AUX"/>
+    <enumeration value="AUY"/>
+    <enumeration value="AUZ"/>
+    <enumeration value="AV"/>
+    <enumeration value="AVA"/>
+    <enumeration value="AVB"/>
+    <enumeration value="AVC"/>
+    <enumeration value="AVD"/>
+    <enumeration value="AVE"/>
+    <enumeration value="AVF"/>
+    <enumeration value="AVG"/>
+    <enumeration value="AVH"/>
+    <enumeration value="AVI"/>
+    <enumeration value="AVJ"/>
+    <enumeration value="AVK"/>
+    <enumeration value="AVL"/>
+    <enumeration value="AVM"/>
+    <enumeration value="AVN"/>
+    <enumeration value="AVO"/>
+    <enumeration value="AVP"/>
+    <enumeration value="AVQ"/>
+    <enumeration value="AVR"/>
+    <enumeration value="AVS"/>
+    <enumeration value="AVT"/>
+    <enumeration value="AVU"/>
+    <enumeration value="AVV"/>
+    <enumeration value="AVW"/>
+    <enumeration value="AVX"/>
+    <enumeration value="AVY"/>
+    <enumeration value="AVZ"/>
+    <enumeration value="AWA"/>
+    <enumeration value="AWB"/>
+    <enumeration value="AWC"/>
+    <enumeration value="AWD"/>
+    <enumeration value="AWE"/>
+    <enumeration value="AWF"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AWH"/>
+    <enumeration value="AWI"/>
+    <enumeration value="AWJ"/>
+    <enumeration value="AWK"/>
+    <enumeration value="AWL"/>
+    <enumeration value="AWM"/>
+    <enumeration value="AWN"/>
+    <enumeration value="AWO"/>
+    <enumeration value="AWP"/>
+    <enumeration value="AWQ"/>
+    <enumeration value="AWR"/>
+    <enumeration value="AWS"/>
+    <enumeration value="AWT"/>
+    <enumeration value="AWU"/>
+    <enumeration value="AWV"/>
+    <enumeration value="AWW"/>
+    <enumeration value="AWX"/>
+    <enumeration value="AWY"/>
+    <enumeration value="AWZ"/>
+    <enumeration value="AXA"/>
+    <enumeration value="AXB"/>
+    <enumeration value="AXC"/>
+    <enumeration value="AXD"/>
+    <enumeration value="AXE"/>
+    <enumeration value="AXF"/>
+    <enumeration value="AXG"/>
+    <enumeration value="AXH"/>
+    <enumeration value="AXI"/>
+    <enumeration value="AXJ"/>
+    <enumeration value="AXK"/>
+    <enumeration value="AXL"/>
+    <enumeration value="AXM"/>
+    <enumeration value="AXN"/>
+    <enumeration value="AXO"/>
+    <enumeration value="AXP"/>
+    <enumeration value="AXQ"/>
+    <enumeration value="AXR"/>
+    <enumeration value="AXS"/>
+    <enumeration value="BA"/>
+    <enumeration value="BC"/>
+    <enumeration value="BD"/>
+    <enumeration value="BE"/>
+    <enumeration value="BH"/>
+    <enumeration value="BM"/>
+    <enumeration value="BN"/>
+    <enumeration value="BO"/>
+    <enumeration value="BR"/>
+    <enumeration value="BT"/>
+    <enumeration value="BTP"/>
+    <enumeration value="BW"/>
+    <enumeration value="CAS"/>
+    <enumeration value="CAT"/>
+    <enumeration value="CAU"/>
+    <enumeration value="CAV"/>
+    <enumeration value="CAW"/>
+    <enumeration value="CAX"/>
+    <enumeration value="CAY"/>
+    <enumeration value="CAZ"/>
+    <enumeration value="CBA"/>
+    <enumeration value="CBB"/>
+    <enumeration value="CD"/>
+    <enumeration value="CEC"/>
+    <enumeration value="CED"/>
+    <enumeration value="CFE"/>
+    <enumeration value="CFF"/>
+    <enumeration value="CFO"/>
+    <enumeration value="CG"/>
+    <enumeration value="CH"/>
+    <enumeration value="CK"/>
+    <enumeration value="CKN"/>
+    <enumeration value="CM"/>
+    <enumeration value="CMR"/>
+    <enumeration value="CN"/>
+    <enumeration value="CNO"/>
+    <enumeration value="COF"/>
+    <enumeration value="CP"/>
+    <enumeration value="CR"/>
+    <enumeration value="CRN"/>
+    <enumeration value="CS"/>
+    <enumeration value="CST"/>
+    <enumeration value="CT"/>
+    <enumeration value="CU"/>
+    <enumeration value="CV"/>
+    <enumeration value="CW"/>
+    <enumeration value="CZ"/>
+    <enumeration value="DA"/>
+    <enumeration value="DAN"/>
+    <enumeration value="DB"/>
+    <enumeration value="DI"/>
+    <enumeration value="DL"/>
+    <enumeration value="DM"/>
+    <enumeration value="DQ"/>
+    <enumeration value="DR"/>
+    <enumeration value="EA"/>
+    <enumeration value="EB"/>
+    <enumeration value="ED"/>
+    <enumeration value="EE"/>
+    <enumeration value="EEP"/>
+    <enumeration value="EI"/>
+    <enumeration value="EN"/>
+    <enumeration value="EQ"/>
+    <enumeration value="ER"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ET"/>
+    <enumeration value="EX"/>
+    <enumeration value="FC"/>
+    <enumeration value="FF"/>
+    <enumeration value="FI"/>
+    <enumeration value="FLW"/>
+    <enumeration value="FN"/>
+    <enumeration value="FO"/>
+    <enumeration value="FS"/>
+    <enumeration value="FT"/>
+    <enumeration value="FV"/>
+    <enumeration value="FX"/>
+    <enumeration value="GA"/>
+    <enumeration value="GC"/>
+    <enumeration value="GD"/>
+    <enumeration value="GDN"/>
+    <enumeration value="GN"/>
+    <enumeration value="HS"/>
+    <enumeration value="HWB"/>
+    <enumeration value="IA"/>
+    <enumeration value="IB"/>
+    <enumeration value="ICA"/>
+    <enumeration value="ICE"/>
+    <enumeration value="ICO"/>
+    <enumeration value="II"/>
+    <enumeration value="IL"/>
+    <enumeration value="INB"/>
+    <enumeration value="INN"/>
+    <enumeration value="INO"/>
+    <enumeration value="IP"/>
+    <enumeration value="IS"/>
+    <enumeration value="IT"/>
+    <enumeration value="IV"/>
+    <enumeration value="JB"/>
+    <enumeration value="JE"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAN"/>
+    <enumeration value="LAR"/>
+    <enumeration value="LB"/>
+    <enumeration value="LC"/>
+    <enumeration value="LI"/>
+    <enumeration value="LO"/>
+    <enumeration value="LRC"/>
+    <enumeration value="LS"/>
+    <enumeration value="MA"/>
+    <enumeration value="MB"/>
+    <enumeration value="MF"/>
+    <enumeration value="MG"/>
+    <enumeration value="MH"/>
+    <enumeration value="MR"/>
+    <enumeration value="MRN"/>
+    <enumeration value="MS"/>
+    <enumeration value="MSS"/>
+    <enumeration value="MWB"/>
+    <enumeration value="NA"/>
+    <enumeration value="NF"/>
+    <enumeration value="OH"/>
+    <enumeration value="OI"/>
+    <enumeration value="ON"/>
+    <enumeration value="OP"/>
+    <enumeration value="OR"/>
+    <enumeration value="PB"/>
+    <enumeration value="PC"/>
+    <enumeration value="PD"/>
+    <enumeration value="PE"/>
+    <enumeration value="PF"/>
+    <enumeration value="PI"/>
+    <enumeration value="PK"/>
+    <enumeration value="PL"/>
+    <enumeration value="POR"/>
+    <enumeration value="PP"/>
+    <enumeration value="PQ"/>
+    <enumeration value="PR"/>
+    <enumeration value="PS"/>
+    <enumeration value="PW"/>
+    <enumeration value="PY"/>
+    <enumeration value="RA"/>
+    <enumeration value="RC"/>
+    <enumeration value="RCN"/>
+    <enumeration value="RE"/>
+    <enumeration value="REN"/>
+    <enumeration value="RF"/>
+    <enumeration value="RR"/>
+    <enumeration value="RT"/>
+    <enumeration value="SA"/>
+    <enumeration value="SB"/>
+    <enumeration value="SD"/>
+    <enumeration value="SE"/>
+    <enumeration value="SEA"/>
+    <enumeration value="SF"/>
+    <enumeration value="SH"/>
+    <enumeration value="SI"/>
+    <enumeration value="SM"/>
+    <enumeration value="SN"/>
+    <enumeration value="SP"/>
+    <enumeration value="SQ"/>
+    <enumeration value="SRN"/>
+    <enumeration value="SS"/>
+    <enumeration value="STA"/>
+    <enumeration value="SW"/>
+    <enumeration value="SZ"/>
+    <enumeration value="TB"/>
+    <enumeration value="TCR"/>
+    <enumeration value="TE"/>
+    <enumeration value="TF"/>
+    <enumeration value="TI"/>
+    <enumeration value="TIN"/>
+    <enumeration value="TL"/>
+    <enumeration value="TN"/>
+    <enumeration value="TP"/>
+    <enumeration value="UAR"/>
+    <enumeration value="UC"/>
+    <enumeration value="UCN"/>
+    <enumeration value="UN"/>
+    <enumeration value="UO"/>
+    <enumeration value="URI"/>
+    <enumeration value="VA"/>
+    <enumeration value="VC"/>
+    <enumeration value="VGR"/>
+    <enumeration value="VM"/>
+    <enumeration value="VN"/>
+    <enumeration value="VON"/>
+    <enumeration value="VOR"/>
+    <enumeration value="VP"/>
+    <enumeration value="VR"/>
+    <enumeration value="VS"/>
+    <enumeration value="VT"/>
+    <enumeration value="VV"/>
+    <enumeration value="WE"/>
+    <enumeration value="WM"/>
+    <enumeration value="WN"/>
+    <enumeration value="WR"/>
+    <enumeration value="WS"/>
+    <enumeration value="WY"/>
+    <enumeration value="XA"/>
+    <enumeration value="XC"/>
+    <enumeration value="XP"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="14">
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="60"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="70"/>
+    <enumeration value="71"/>
+    <enumeration value="88"/>
+    <enumeration value="95"/>
+    <enumeration value="100"/>
+    <enumeration value="102"/>
+    <enumeration value="103"/>
+    <enumeration value="104"/>
+    <enumeration value="105"/>
+  </cl>
+  <cl id="15">
+    <enumeration value="AA"/>
+    <enumeration value="AAA"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAH"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AJ"/>
+    <enumeration value="AU"/>
+    <enumeration value="CA"/>
+    <enumeration value="CAB"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CAE"/>
+    <enumeration value="CAF"/>
+    <enumeration value="CAI"/>
+    <enumeration value="CAJ"/>
+    <enumeration value="CAK"/>
+    <enumeration value="CAL"/>
+    <enumeration value="CAM"/>
+    <enumeration value="CAN"/>
+    <enumeration value="CAO"/>
+    <enumeration value="CAP"/>
+    <enumeration value="CAQ"/>
+    <enumeration value="CAR"/>
+    <enumeration value="CAS"/>
+    <enumeration value="CAT"/>
+    <enumeration value="CAU"/>
+    <enumeration value="CAV"/>
+    <enumeration value="CAW"/>
+    <enumeration value="CAX"/>
+    <enumeration value="CAY"/>
+    <enumeration value="CAZ"/>
+    <enumeration value="CD"/>
+    <enumeration value="CG"/>
+    <enumeration value="CS"/>
+    <enumeration value="CT"/>
+    <enumeration value="DAB"/>
+    <enumeration value="DAC"/>
+    <enumeration value="DAD"/>
+    <enumeration value="DAF"/>
+    <enumeration value="DAG"/>
+    <enumeration value="DAH"/>
+    <enumeration value="DAI"/>
+    <enumeration value="DAJ"/>
+    <enumeration value="DAK"/>
+    <enumeration value="DAL"/>
+    <enumeration value="DAM"/>
+    <enumeration value="DAN"/>
+    <enumeration value="DAO"/>
+    <enumeration value="DAP"/>
+    <enumeration value="DAQ"/>
+    <enumeration value="DL"/>
+    <enumeration value="EG"/>
+    <enumeration value="EP"/>
+    <enumeration value="ER"/>
+    <enumeration value="FAA"/>
+    <enumeration value="FAB"/>
+    <enumeration value="FAC"/>
+    <enumeration value="FC"/>
+    <enumeration value="FH"/>
+    <enumeration value="FI"/>
+    <enumeration value="GAA"/>
+    <enumeration value="HAA"/>
+    <enumeration value="HD"/>
+    <enumeration value="HH"/>
+    <enumeration value="IAA"/>
+    <enumeration value="IAB"/>
+    <enumeration value="ID"/>
+    <enumeration value="IF"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="KO"/>
+    <enumeration value="L1"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAA"/>
+    <enumeration value="LAB"/>
+    <enumeration value="LF"/>
+    <enumeration value="MAE"/>
+    <enumeration value="MI"/>
+    <enumeration value="ML"/>
+    <enumeration value="NAA"/>
+    <enumeration value="OA"/>
+    <enumeration value="PA"/>
+    <enumeration value="PAA"/>
+    <enumeration value="PC"/>
+    <enumeration value="PL"/>
+    <enumeration value="PRV"/>
+    <enumeration value="RAB"/>
+    <enumeration value="RAC"/>
+    <enumeration value="RAD"/>
+    <enumeration value="RAF"/>
+    <enumeration value="RE"/>
+    <enumeration value="RF"/>
+    <enumeration value="RH"/>
+    <enumeration value="RV"/>
+    <enumeration value="SA"/>
+    <enumeration value="SAA"/>
+    <enumeration value="SAD"/>
+    <enumeration value="SAE"/>
+    <enumeration value="SAI"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SM"/>
+    <enumeration value="SU"/>
+    <enumeration value="TAB"/>
+    <enumeration value="TAC"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="V1"/>
+    <enumeration value="V2"/>
+    <enumeration value="WH"/>
+    <enumeration value="XAA"/>
+    <enumeration value="YY"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="16">
+    <enumeration value="VAT"/>
+  </cl>
+  <cl id="17">
+    <enumeration value="AE"/>
+    <enumeration value="B"/>
+    <enumeration value="E"/>
+    <enumeration value="G"/>
+    <enumeration value="K"/>
+    <enumeration value="L"/>
+    <enumeration value="M"/>
+    <enumeration value="O"/>
+    <enumeration value="S"/>
+    <enumeration value="Z"/>
+  </cl>
+  <cl id="18">
+    <enumeration value="VATEX-EU-132"/>
+    <enumeration value="VATEX-EU-132-1A"/>
+    <enumeration value="VATEX-EU-132-1B"/>
+    <enumeration value="VATEX-EU-132-1C"/>
+    <enumeration value="VATEX-EU-132-1D"/>
+    <enumeration value="VATEX-EU-132-1E"/>
+    <enumeration value="VATEX-EU-132-1F"/>
+    <enumeration value="VATEX-EU-132-1G"/>
+    <enumeration value="VATEX-EU-132-1H"/>
+    <enumeration value="VATEX-EU-132-1I"/>
+    <enumeration value="VATEX-EU-132-1J"/>
+    <enumeration value="VATEX-EU-132-1K"/>
+    <enumeration value="VATEX-EU-132-1L"/>
+    <enumeration value="VATEX-EU-132-1M"/>
+    <enumeration value="VATEX-EU-132-1N"/>
+    <enumeration value="VATEX-EU-132-1O"/>
+    <enumeration value="VATEX-EU-132-1P"/>
+    <enumeration value="VATEX-EU-132-1Q"/>
+    <enumeration value="VATEX-EU-143"/>
+    <enumeration value="VATEX-EU-143-1A"/>
+    <enumeration value="VATEX-EU-143-1B"/>
+    <enumeration value="VATEX-EU-143-1C"/>
+    <enumeration value="VATEX-EU-143-1D"/>
+    <enumeration value="VATEX-EU-143-1E"/>
+    <enumeration value="VATEX-EU-143-1F"/>
+    <enumeration value="VATEX-EU-143-1FA"/>
+    <enumeration value="VATEX-EU-143-1G"/>
+    <enumeration value="VATEX-EU-143-1H"/>
+    <enumeration value="VATEX-EU-143-1I"/>
+    <enumeration value="VATEX-EU-143-1J"/>
+    <enumeration value="VATEX-EU-143-1K"/>
+    <enumeration value="VATEX-EU-143-1L"/>
+    <enumeration value="VATEX-EU-148"/>
+    <enumeration value="VATEX-EU-148-A"/>
+    <enumeration value="VATEX-EU-148-B"/>
+    <enumeration value="VATEX-EU-148-C"/>
+    <enumeration value="VATEX-EU-148-D"/>
+    <enumeration value="VATEX-EU-148-E"/>
+    <enumeration value="VATEX-EU-148-F"/>
+    <enumeration value="VATEX-EU-148-G"/>
+    <enumeration value="VATEX-EU-151"/>
+    <enumeration value="VATEX-EU-151-1A"/>
+    <enumeration value="VATEX-EU-151-1AA"/>
+    <enumeration value="VATEX-EU-151-1B"/>
+    <enumeration value="VATEX-EU-151-1C"/>
+    <enumeration value="VATEX-EU-151-1D"/>
+    <enumeration value="VATEX-EU-151-1E"/>
+    <enumeration value="VATEX-EU-309"/>
+    <enumeration value="VATEX-EU-79-C"/>
+    <enumeration value="VATEX-EU-AE"/>
+    <enumeration value="VATEX-EU-D"/>
+    <enumeration value="VATEX-EU-F"/>
+    <enumeration value="VATEX-EU-G"/>
+    <enumeration value="VATEX-EU-I"/>
+    <enumeration value="VATEX-EU-IC"/>
+    <enumeration value="VATEX-EU-J"/>
+    <enumeration value="VATEX-EU-O"/>
+    <enumeration value="VATEX-FR-CNWVAT"/>
+    <enumeration value="VATEX-FR-FRANCHISE"/>
+  </cl>
+  <cl id="19">
+    <enumeration value="0002"/>
+    <enumeration value="0003"/>
+    <enumeration value="0004"/>
+    <enumeration value="0005"/>
+    <enumeration value="0006"/>
+    <enumeration value="0007"/>
+    <enumeration value="0008"/>
+    <enumeration value="0009"/>
+    <enumeration value="0010"/>
+    <enumeration value="0011"/>
+    <enumeration value="0012"/>
+    <enumeration value="0013"/>
+    <enumeration value="0014"/>
+    <enumeration value="0015"/>
+    <enumeration value="0016"/>
+    <enumeration value="0017"/>
+    <enumeration value="0018"/>
+    <enumeration value="0019"/>
+    <enumeration value="0020"/>
+    <enumeration value="0021"/>
+    <enumeration value="0022"/>
+    <enumeration value="0023"/>
+    <enumeration value="0024"/>
+    <enumeration value="0025"/>
+    <enumeration value="0026"/>
+    <enumeration value="0027"/>
+    <enumeration value="0028"/>
+    <enumeration value="0029"/>
+    <enumeration value="0030"/>
+    <enumeration value="0031"/>
+    <enumeration value="0032"/>
+    <enumeration value="0033"/>
+    <enumeration value="0034"/>
+    <enumeration value="0035"/>
+    <enumeration value="0036"/>
+    <enumeration value="0037"/>
+    <enumeration value="0038"/>
+    <enumeration value="0039"/>
+    <enumeration value="0040"/>
+    <enumeration value="0041"/>
+    <enumeration value="0042"/>
+    <enumeration value="0043"/>
+    <enumeration value="0044"/>
+    <enumeration value="0045"/>
+    <enumeration value="0046"/>
+    <enumeration value="0047"/>
+    <enumeration value="0048"/>
+    <enumeration value="0049"/>
+    <enumeration value="0050"/>
+    <enumeration value="0051"/>
+    <enumeration value="0052"/>
+    <enumeration value="0053"/>
+    <enumeration value="0054"/>
+    <enumeration value="0055"/>
+    <enumeration value="0056"/>
+    <enumeration value="0057"/>
+    <enumeration value="0058"/>
+    <enumeration value="0059"/>
+    <enumeration value="0060"/>
+    <enumeration value="0061"/>
+    <enumeration value="0062"/>
+    <enumeration value="0063"/>
+    <enumeration value="0064"/>
+    <enumeration value="0065"/>
+    <enumeration value="0066"/>
+    <enumeration value="0067"/>
+    <enumeration value="0068"/>
+    <enumeration value="0069"/>
+    <enumeration value="0070"/>
+    <enumeration value="0071"/>
+    <enumeration value="0072"/>
+    <enumeration value="0073"/>
+    <enumeration value="0074"/>
+    <enumeration value="0075"/>
+    <enumeration value="0076"/>
+    <enumeration value="0077"/>
+    <enumeration value="0078"/>
+    <enumeration value="0079"/>
+    <enumeration value="0080"/>
+    <enumeration value="0081"/>
+    <enumeration value="0082"/>
+    <enumeration value="0083"/>
+    <enumeration value="0084"/>
+    <enumeration value="0085"/>
+    <enumeration value="0086"/>
+    <enumeration value="0087"/>
+    <enumeration value="0088"/>
+    <enumeration value="0089"/>
+    <enumeration value="0090"/>
+    <enumeration value="0091"/>
+    <enumeration value="0093"/>
+    <enumeration value="0094"/>
+    <enumeration value="0095"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0098"/>
+    <enumeration value="0099"/>
+    <enumeration value="0100"/>
+    <enumeration value="0101"/>
+    <enumeration value="0102"/>
+    <enumeration value="0104"/>
+    <enumeration value="0105"/>
+    <enumeration value="0106"/>
+    <enumeration value="0107"/>
+    <enumeration value="0108"/>
+    <enumeration value="0109"/>
+    <enumeration value="0110"/>
+    <enumeration value="0111"/>
+    <enumeration value="0112"/>
+    <enumeration value="0113"/>
+    <enumeration value="0114"/>
+    <enumeration value="0115"/>
+    <enumeration value="0116"/>
+    <enumeration value="0117"/>
+    <enumeration value="0118"/>
+    <enumeration value="0119"/>
+    <enumeration value="0120"/>
+    <enumeration value="0121"/>
+    <enumeration value="0122"/>
+    <enumeration value="0123"/>
+    <enumeration value="0124"/>
+    <enumeration value="0125"/>
+    <enumeration value="0126"/>
+    <enumeration value="0127"/>
+    <enumeration value="0128"/>
+    <enumeration value="0129"/>
+    <enumeration value="0130"/>
+    <enumeration value="0131"/>
+    <enumeration value="0132"/>
+    <enumeration value="0133"/>
+    <enumeration value="0134"/>
+    <enumeration value="0135"/>
+    <enumeration value="0136"/>
+    <enumeration value="0137"/>
+    <enumeration value="0138"/>
+    <enumeration value="0139"/>
+    <enumeration value="0140"/>
+    <enumeration value="0141"/>
+    <enumeration value="0142"/>
+    <enumeration value="0143"/>
+    <enumeration value="0144"/>
+    <enumeration value="0145"/>
+    <enumeration value="0146"/>
+    <enumeration value="0147"/>
+    <enumeration value="0148"/>
+    <enumeration value="0149"/>
+    <enumeration value="0150"/>
+    <enumeration value="0151"/>
+    <enumeration value="0152"/>
+    <enumeration value="0153"/>
+    <enumeration value="0154"/>
+    <enumeration value="0155"/>
+    <enumeration value="0156"/>
+    <enumeration value="0157"/>
+    <enumeration value="0158"/>
+    <enumeration value="0159"/>
+    <enumeration value="0160"/>
+    <enumeration value="0161"/>
+    <enumeration value="0162"/>
+    <enumeration value="0163"/>
+    <enumeration value="0164"/>
+    <enumeration value="0165"/>
+    <enumeration value="0166"/>
+    <enumeration value="0167"/>
+    <enumeration value="0168"/>
+    <enumeration value="0169"/>
+    <enumeration value="0170"/>
+    <enumeration value="0171"/>
+    <enumeration value="0172"/>
+    <enumeration value="0173"/>
+    <enumeration value="0174"/>
+    <enumeration value="0175"/>
+    <enumeration value="0176"/>
+    <enumeration value="0177"/>
+    <enumeration value="0178"/>
+    <enumeration value="0179"/>
+    <enumeration value="0180"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0185"/>
+    <enumeration value="0186"/>
+    <enumeration value="0187"/>
+    <enumeration value="0188"/>
+    <enumeration value="0189"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0197"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
+  </cl>
+  <cl id="20">
+    <enumeration value="0002"/>
+    <enumeration value="0003"/>
+    <enumeration value="0004"/>
+    <enumeration value="0005"/>
+    <enumeration value="0006"/>
+    <enumeration value="0007"/>
+    <enumeration value="0008"/>
+    <enumeration value="0009"/>
+    <enumeration value="0010"/>
+    <enumeration value="0011"/>
+    <enumeration value="0012"/>
+    <enumeration value="0013"/>
+    <enumeration value="0014"/>
+    <enumeration value="0015"/>
+    <enumeration value="0016"/>
+    <enumeration value="0017"/>
+    <enumeration value="0018"/>
+    <enumeration value="0019"/>
+    <enumeration value="0020"/>
+    <enumeration value="0021"/>
+    <enumeration value="0022"/>
+    <enumeration value="0023"/>
+    <enumeration value="0024"/>
+    <enumeration value="0025"/>
+    <enumeration value="0026"/>
+    <enumeration value="0027"/>
+    <enumeration value="0028"/>
+    <enumeration value="0029"/>
+    <enumeration value="0030"/>
+    <enumeration value="0031"/>
+    <enumeration value="0032"/>
+    <enumeration value="0033"/>
+    <enumeration value="0034"/>
+    <enumeration value="0035"/>
+    <enumeration value="0036"/>
+    <enumeration value="0037"/>
+    <enumeration value="0038"/>
+    <enumeration value="0039"/>
+    <enumeration value="0040"/>
+    <enumeration value="0041"/>
+    <enumeration value="0042"/>
+    <enumeration value="0043"/>
+    <enumeration value="0044"/>
+    <enumeration value="0045"/>
+    <enumeration value="0046"/>
+    <enumeration value="0047"/>
+    <enumeration value="0048"/>
+    <enumeration value="0049"/>
+    <enumeration value="0050"/>
+    <enumeration value="0051"/>
+    <enumeration value="0052"/>
+    <enumeration value="0053"/>
+    <enumeration value="0054"/>
+    <enumeration value="0055"/>
+    <enumeration value="0056"/>
+    <enumeration value="0057"/>
+    <enumeration value="0058"/>
+    <enumeration value="0059"/>
+    <enumeration value="0060"/>
+    <enumeration value="0061"/>
+    <enumeration value="0062"/>
+    <enumeration value="0063"/>
+    <enumeration value="0064"/>
+    <enumeration value="0065"/>
+    <enumeration value="0066"/>
+    <enumeration value="0067"/>
+    <enumeration value="0068"/>
+    <enumeration value="0069"/>
+    <enumeration value="0070"/>
+    <enumeration value="0071"/>
+    <enumeration value="0072"/>
+    <enumeration value="0073"/>
+    <enumeration value="0074"/>
+    <enumeration value="0075"/>
+    <enumeration value="0076"/>
+    <enumeration value="0077"/>
+    <enumeration value="0078"/>
+    <enumeration value="0079"/>
+    <enumeration value="0080"/>
+    <enumeration value="0081"/>
+    <enumeration value="0082"/>
+    <enumeration value="0083"/>
+    <enumeration value="0084"/>
+    <enumeration value="0085"/>
+    <enumeration value="0086"/>
+    <enumeration value="0087"/>
+    <enumeration value="0088"/>
+    <enumeration value="0089"/>
+    <enumeration value="0090"/>
+    <enumeration value="0091"/>
+    <enumeration value="0093"/>
+    <enumeration value="0094"/>
+    <enumeration value="0095"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0098"/>
+    <enumeration value="0099"/>
+    <enumeration value="0100"/>
+    <enumeration value="0101"/>
+    <enumeration value="0102"/>
+    <enumeration value="0104"/>
+    <enumeration value="0105"/>
+    <enumeration value="0106"/>
+    <enumeration value="0107"/>
+    <enumeration value="0108"/>
+    <enumeration value="0109"/>
+    <enumeration value="0110"/>
+    <enumeration value="0111"/>
+    <enumeration value="0112"/>
+    <enumeration value="0113"/>
+    <enumeration value="0114"/>
+    <enumeration value="0115"/>
+    <enumeration value="0116"/>
+    <enumeration value="0117"/>
+    <enumeration value="0118"/>
+    <enumeration value="0119"/>
+    <enumeration value="0120"/>
+    <enumeration value="0121"/>
+    <enumeration value="0122"/>
+    <enumeration value="0123"/>
+    <enumeration value="0124"/>
+    <enumeration value="0125"/>
+    <enumeration value="0126"/>
+    <enumeration value="0127"/>
+    <enumeration value="0128"/>
+    <enumeration value="0129"/>
+    <enumeration value="0130"/>
+    <enumeration value="0131"/>
+    <enumeration value="0132"/>
+    <enumeration value="0133"/>
+    <enumeration value="0134"/>
+    <enumeration value="0135"/>
+    <enumeration value="0136"/>
+    <enumeration value="0137"/>
+    <enumeration value="0138"/>
+    <enumeration value="0139"/>
+    <enumeration value="0140"/>
+    <enumeration value="0141"/>
+    <enumeration value="0142"/>
+    <enumeration value="0143"/>
+    <enumeration value="0144"/>
+    <enumeration value="0145"/>
+    <enumeration value="0146"/>
+    <enumeration value="0147"/>
+    <enumeration value="0148"/>
+    <enumeration value="0149"/>
+    <enumeration value="0150"/>
+    <enumeration value="0151"/>
+    <enumeration value="0152"/>
+    <enumeration value="0153"/>
+    <enumeration value="0154"/>
+    <enumeration value="0155"/>
+    <enumeration value="0156"/>
+    <enumeration value="0157"/>
+    <enumeration value="0158"/>
+    <enumeration value="0159"/>
+    <enumeration value="0160"/>
+    <enumeration value="0161"/>
+    <enumeration value="0162"/>
+    <enumeration value="0163"/>
+    <enumeration value="0164"/>
+    <enumeration value="0165"/>
+    <enumeration value="0166"/>
+    <enumeration value="0167"/>
+    <enumeration value="0168"/>
+    <enumeration value="0169"/>
+    <enumeration value="0170"/>
+    <enumeration value="0171"/>
+    <enumeration value="0172"/>
+    <enumeration value="0173"/>
+    <enumeration value="0174"/>
+    <enumeration value="0175"/>
+    <enumeration value="0176"/>
+    <enumeration value="0177"/>
+    <enumeration value="0178"/>
+    <enumeration value="0179"/>
+    <enumeration value="0180"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0185"/>
+    <enumeration value="0186"/>
+    <enumeration value="0187"/>
+    <enumeration value="0188"/>
+    <enumeration value="0189"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0197"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
+  </cl>
+  <cl id="21">
+    <enumeration value="0002"/>
+    <enumeration value="0007"/>
+    <enumeration value="0009"/>
+    <enumeration value="0037"/>
+    <enumeration value="0060"/>
+    <enumeration value="0088"/>
+    <enumeration value="0096"/>
+    <enumeration value="0097"/>
+    <enumeration value="0106"/>
+    <enumeration value="0130"/>
+    <enumeration value="0135"/>
+    <enumeration value="0142"/>
+    <enumeration value="0147"/>
+    <enumeration value="0151"/>
+    <enumeration value="0170"/>
+    <enumeration value="0183"/>
+    <enumeration value="0184"/>
+    <enumeration value="0188"/>
+    <enumeration value="0190"/>
+    <enumeration value="0191"/>
+    <enumeration value="0192"/>
+    <enumeration value="0193"/>
+    <enumeration value="0194"/>
+    <enumeration value="0195"/>
+    <enumeration value="0196"/>
+    <enumeration value="0198"/>
+    <enumeration value="0199"/>
+    <enumeration value="0200"/>
+    <enumeration value="0201"/>
+    <enumeration value="0202"/>
+    <enumeration value="0203"/>
+    <enumeration value="0204"/>
+    <enumeration value="0205"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0221"/>
+    <enumeration value="0225"/>
+    <enumeration value="0230"/>
+    <enumeration value="9901"/>
+    <enumeration value="9910"/>
+    <enumeration value="9913"/>
+    <enumeration value="9914"/>
+    <enumeration value="9915"/>
+    <enumeration value="9918"/>
+    <enumeration value="9919"/>
+    <enumeration value="9920"/>
+    <enumeration value="9922"/>
+    <enumeration value="9923"/>
+    <enumeration value="9924"/>
+    <enumeration value="9925"/>
+    <enumeration value="9926"/>
+    <enumeration value="9927"/>
+    <enumeration value="9928"/>
+    <enumeration value="9929"/>
+    <enumeration value="9930"/>
+    <enumeration value="9931"/>
+    <enumeration value="9932"/>
+    <enumeration value="9933"/>
+    <enumeration value="9934"/>
+    <enumeration value="9935"/>
+    <enumeration value="9936"/>
+    <enumeration value="9937"/>
+    <enumeration value="9938"/>
+    <enumeration value="9939"/>
+    <enumeration value="9940"/>
+    <enumeration value="9941"/>
+    <enumeration value="9942"/>
+    <enumeration value="9943"/>
+    <enumeration value="9944"/>
+    <enumeration value="9945"/>
+    <enumeration value="9946"/>
+    <enumeration value="9947"/>
+    <enumeration value="9948"/>
+    <enumeration value="9949"/>
+    <enumeration value="9950"/>
+    <enumeration value="9951"/>
+    <enumeration value="9952"/>
+    <enumeration value="9953"/>
+    <enumeration value="9957"/>
+    <enumeration value="9959"/>
+    <enumeration value="AN"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AS"/>
+    <enumeration value="AU"/>
+    <enumeration value="EM"/>
+  </cl>
+  <cl id="22">
+    <enumeration value="AAA"/>
+    <enumeration value="AAB"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAG"/>
+    <enumeration value="AAH"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAJ"/>
+    <enumeration value="AAK"/>
+    <enumeration value="AAL"/>
+    <enumeration value="AAM"/>
+    <enumeration value="AAO"/>
+    <enumeration value="AAP"/>
+    <enumeration value="ADD"/>
+    <enumeration value="BOL"/>
+    <enumeration value="CAP"/>
+    <enumeration value="CAR"/>
+    <enumeration value="COC"/>
+    <enumeration value="CST"/>
+    <enumeration value="CUD"/>
+    <enumeration value="CVD"/>
+    <enumeration value="ENV"/>
+    <enumeration value="EXC"/>
+    <enumeration value="EXP"/>
+    <enumeration value="FET"/>
+    <enumeration value="FRE"/>
+    <enumeration value="GCN"/>
+    <enumeration value="GST"/>
+    <enumeration value="ILL"/>
+    <enumeration value="IMP"/>
+    <enumeration value="IND"/>
+    <enumeration value="LAC"/>
+    <enumeration value="LCN"/>
+    <enumeration value="LDP"/>
+    <enumeration value="LOC"/>
+    <enumeration value="LST"/>
+    <enumeration value="MCA"/>
+    <enumeration value="MCD"/>
+    <enumeration value="OTH"/>
+    <enumeration value="PDB"/>
+    <enumeration value="PDC"/>
+    <enumeration value="PRF"/>
+    <enumeration value="SCN"/>
+    <enumeration value="SSS"/>
+    <enumeration value="STT"/>
+    <enumeration value="SUP"/>
+    <enumeration value="SUR"/>
+    <enumeration value="SWT"/>
+    <enumeration value="TAC"/>
+    <enumeration value="TOT"/>
+    <enumeration value="TOX"/>
+    <enumeration value="TTA"/>
+    <enumeration value="VAD"/>
+    <enumeration value="VAT"/>
+  </cl>
+  <cl id="23">
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="60"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="70"/>
+    <enumeration value="71"/>
+    <enumeration value="88"/>
+    <enumeration value="95"/>
+    <enumeration value="100"/>
+    <enumeration value="102"/>
+    <enumeration value="103"/>
+    <enumeration value="104"/>
+    <enumeration value="105"/>
+  </cl>
+  <cl id="24">
+    <enumeration value="AA"/>
+    <enumeration value="AAA"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAH"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AJ"/>
+    <enumeration value="AU"/>
+    <enumeration value="CA"/>
+    <enumeration value="CAB"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CAE"/>
+    <enumeration value="CAF"/>
+    <enumeration value="CAI"/>
+    <enumeration value="CAJ"/>
+    <enumeration value="CAK"/>
+    <enumeration value="CAL"/>
+    <enumeration value="CAM"/>
+    <enumeration value="CAN"/>
+    <enumeration value="CAO"/>
+    <enumeration value="CAP"/>
+    <enumeration value="CAQ"/>
+    <enumeration value="CAR"/>
+    <enumeration value="CAS"/>
+    <enumeration value="CAT"/>
+    <enumeration value="CAU"/>
+    <enumeration value="CAV"/>
+    <enumeration value="CAW"/>
+    <enumeration value="CAX"/>
+    <enumeration value="CAY"/>
+    <enumeration value="CAZ"/>
+    <enumeration value="CD"/>
+    <enumeration value="CG"/>
+    <enumeration value="CS"/>
+    <enumeration value="CT"/>
+    <enumeration value="DAB"/>
+    <enumeration value="DAC"/>
+    <enumeration value="DAD"/>
+    <enumeration value="DAF"/>
+    <enumeration value="DAG"/>
+    <enumeration value="DAH"/>
+    <enumeration value="DAI"/>
+    <enumeration value="DAJ"/>
+    <enumeration value="DAK"/>
+    <enumeration value="DAL"/>
+    <enumeration value="DAM"/>
+    <enumeration value="DAN"/>
+    <enumeration value="DAO"/>
+    <enumeration value="DAP"/>
+    <enumeration value="DAQ"/>
+    <enumeration value="DL"/>
+    <enumeration value="EG"/>
+    <enumeration value="EP"/>
+    <enumeration value="ER"/>
+    <enumeration value="FAA"/>
+    <enumeration value="FAB"/>
+    <enumeration value="FAC"/>
+    <enumeration value="FC"/>
+    <enumeration value="FH"/>
+    <enumeration value="FI"/>
+    <enumeration value="GAA"/>
+    <enumeration value="HAA"/>
+    <enumeration value="HD"/>
+    <enumeration value="HH"/>
+    <enumeration value="IAA"/>
+    <enumeration value="IAB"/>
+    <enumeration value="ID"/>
+    <enumeration value="IF"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="KO"/>
+    <enumeration value="L1"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAA"/>
+    <enumeration value="LAB"/>
+    <enumeration value="LF"/>
+    <enumeration value="MAE"/>
+    <enumeration value="MI"/>
+    <enumeration value="ML"/>
+    <enumeration value="NAA"/>
+    <enumeration value="OA"/>
+    <enumeration value="PA"/>
+    <enumeration value="PAA"/>
+    <enumeration value="PC"/>
+    <enumeration value="PL"/>
+    <enumeration value="PRV"/>
+    <enumeration value="RAB"/>
+    <enumeration value="RAC"/>
+    <enumeration value="RAD"/>
+    <enumeration value="RAF"/>
+    <enumeration value="RE"/>
+    <enumeration value="RF"/>
+    <enumeration value="RH"/>
+    <enumeration value="RV"/>
+    <enumeration value="SA"/>
+    <enumeration value="SAA"/>
+    <enumeration value="SAD"/>
+    <enumeration value="SAE"/>
+    <enumeration value="SAI"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SM"/>
+    <enumeration value="SU"/>
+    <enumeration value="TAB"/>
+    <enumeration value="TAC"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="V1"/>
+    <enumeration value="V2"/>
+    <enumeration value="WH"/>
+    <enumeration value="XAA"/>
+    <enumeration value="YY"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="25">
+    <enumeration value="71"/>
+    <enumeration value="80"/>
+    <enumeration value="81"/>
+    <enumeration value="82"/>
+    <enumeration value="83"/>
+    <enumeration value="84"/>
+    <enumeration value="102"/>
+    <enumeration value="130"/>
+    <enumeration value="202"/>
+    <enumeration value="203"/>
+    <enumeration value="204"/>
+    <enumeration value="211"/>
+    <enumeration value="218"/>
+    <enumeration value="219"/>
+    <enumeration value="261"/>
+    <enumeration value="262"/>
+    <enumeration value="295"/>
+    <enumeration value="296"/>
+    <enumeration value="308"/>
+    <enumeration value="325"/>
+    <enumeration value="326"/>
+    <enumeration value="331"/>
+    <enumeration value="380"/>
+    <enumeration value="381"/>
+    <enumeration value="382"/>
+    <enumeration value="383"/>
+    <enumeration value="384"/>
+    <enumeration value="385"/>
+    <enumeration value="386"/>
+    <enumeration value="387"/>
+    <enumeration value="388"/>
+    <enumeration value="389"/>
+    <enumeration value="390"/>
+    <enumeration value="393"/>
+    <enumeration value="394"/>
+    <enumeration value="395"/>
+    <enumeration value="396"/>
+    <enumeration value="420"/>
+    <enumeration value="456"/>
+    <enumeration value="457"/>
+    <enumeration value="458"/>
+    <enumeration value="527"/>
+    <enumeration value="532"/>
+    <enumeration value="553"/>
+    <enumeration value="575"/>
+    <enumeration value="623"/>
+    <enumeration value="633"/>
+    <enumeration value="751"/>
+    <enumeration value="780"/>
+    <enumeration value="817"/>
+    <enumeration value="870"/>
+    <enumeration value="875"/>
+    <enumeration value="876"/>
+    <enumeration value="877"/>
+    <enumeration value="935"/>
+  </cl>
+  <cl id="26">
+    <enumeration value="VA"/>
+  </cl>
+  <cl id="27">
+    <enumeration value="VA"/>
+  </cl>
+  <cl id="28">
+    <enumeration value="916"/>
+  </cl>
+  <cl id="29">
+    <enumeration value="50"/>
+  </cl>
+  <cl id="30">
+    <enumeration value="130"/>
+  </cl>
+  <cl id="31">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="32">
+    <enumeration value="1"/>
+    <enumeration value="2"/>
+    <enumeration value="3"/>
+    <enumeration value="4"/>
+    <enumeration value="5"/>
+    <enumeration value="6"/>
+    <enumeration value="7"/>
+    <enumeration value="8"/>
+    <enumeration value="9"/>
+    <enumeration value="10"/>
+    <enumeration value="11"/>
+    <enumeration value="12"/>
+    <enumeration value="13"/>
+    <enumeration value="14"/>
+    <enumeration value="15"/>
+    <enumeration value="16"/>
+    <enumeration value="17"/>
+    <enumeration value="18"/>
+    <enumeration value="19"/>
+    <enumeration value="20"/>
+    <enumeration value="21"/>
+    <enumeration value="22"/>
+    <enumeration value="23"/>
+    <enumeration value="24"/>
+    <enumeration value="25"/>
+    <enumeration value="26"/>
+    <enumeration value="27"/>
+    <enumeration value="28"/>
+    <enumeration value="29"/>
+    <enumeration value="30"/>
+    <enumeration value="31"/>
+    <enumeration value="32"/>
+    <enumeration value="33"/>
+    <enumeration value="34"/>
+    <enumeration value="35"/>
+    <enumeration value="36"/>
+    <enumeration value="37"/>
+    <enumeration value="38"/>
+    <enumeration value="39"/>
+    <enumeration value="40"/>
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="43"/>
+    <enumeration value="44"/>
+    <enumeration value="45"/>
+    <enumeration value="46"/>
+    <enumeration value="47"/>
+    <enumeration value="48"/>
+    <enumeration value="49"/>
+    <enumeration value="50"/>
+    <enumeration value="51"/>
+    <enumeration value="52"/>
+    <enumeration value="53"/>
+    <enumeration value="54"/>
+    <enumeration value="55"/>
+    <enumeration value="56"/>
+    <enumeration value="57"/>
+    <enumeration value="58"/>
+    <enumeration value="59"/>
+    <enumeration value="60"/>
+    <enumeration value="61"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="69"/>
+    <enumeration value="70"/>
+    <enumeration value="74"/>
+    <enumeration value="75"/>
+    <enumeration value="76"/>
+    <enumeration value="77"/>
+    <enumeration value="78"/>
+    <enumeration value="91"/>
+    <enumeration value="92"/>
+    <enumeration value="93"/>
+    <enumeration value="94"/>
+    <enumeration value="95"/>
+    <enumeration value="96"/>
+    <enumeration value="97"/>
+    <enumeration value="98"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="33">
+    <enumeration value="102"/>
+  </cl>
+  <cl id="34">
+    <enumeration value="5"/>
+    <enumeration value="29"/>
+    <enumeration value="72"/>
+  </cl>
+  <cl id="35">
+    <enumeration value="41"/>
+    <enumeration value="42"/>
+    <enumeration value="60"/>
+    <enumeration value="62"/>
+    <enumeration value="63"/>
+    <enumeration value="64"/>
+    <enumeration value="65"/>
+    <enumeration value="66"/>
+    <enumeration value="67"/>
+    <enumeration value="68"/>
+    <enumeration value="70"/>
+    <enumeration value="71"/>
+    <enumeration value="88"/>
+    <enumeration value="95"/>
+    <enumeration value="100"/>
+    <enumeration value="102"/>
+    <enumeration value="103"/>
+    <enumeration value="104"/>
+    <enumeration value="105"/>
+  </cl>
+  <cl id="36">
+    <enumeration value="AA"/>
+    <enumeration value="AAA"/>
+    <enumeration value="AAC"/>
+    <enumeration value="AAD"/>
+    <enumeration value="AAE"/>
+    <enumeration value="AAF"/>
+    <enumeration value="AAH"/>
+    <enumeration value="AAI"/>
+    <enumeration value="AAS"/>
+    <enumeration value="AAT"/>
+    <enumeration value="AAV"/>
+    <enumeration value="AAY"/>
+    <enumeration value="AAZ"/>
+    <enumeration value="ABA"/>
+    <enumeration value="ABB"/>
+    <enumeration value="ABC"/>
+    <enumeration value="ABD"/>
+    <enumeration value="ABF"/>
+    <enumeration value="ABK"/>
+    <enumeration value="ABL"/>
+    <enumeration value="ABN"/>
+    <enumeration value="ABR"/>
+    <enumeration value="ABS"/>
+    <enumeration value="ABT"/>
+    <enumeration value="ABU"/>
+    <enumeration value="ACF"/>
+    <enumeration value="ACG"/>
+    <enumeration value="ACH"/>
+    <enumeration value="ACI"/>
+    <enumeration value="ACJ"/>
+    <enumeration value="ACK"/>
+    <enumeration value="ACL"/>
+    <enumeration value="ACM"/>
+    <enumeration value="ACS"/>
+    <enumeration value="ADC"/>
+    <enumeration value="ADE"/>
+    <enumeration value="ADJ"/>
+    <enumeration value="ADK"/>
+    <enumeration value="ADL"/>
+    <enumeration value="ADM"/>
+    <enumeration value="ADN"/>
+    <enumeration value="ADO"/>
+    <enumeration value="ADP"/>
+    <enumeration value="ADQ"/>
+    <enumeration value="ADR"/>
+    <enumeration value="ADT"/>
+    <enumeration value="ADW"/>
+    <enumeration value="ADY"/>
+    <enumeration value="ADZ"/>
+    <enumeration value="AEA"/>
+    <enumeration value="AEB"/>
+    <enumeration value="AEC"/>
+    <enumeration value="AED"/>
+    <enumeration value="AEF"/>
+    <enumeration value="AEH"/>
+    <enumeration value="AEI"/>
+    <enumeration value="AEJ"/>
+    <enumeration value="AEK"/>
+    <enumeration value="AEL"/>
+    <enumeration value="AEM"/>
+    <enumeration value="AEN"/>
+    <enumeration value="AEO"/>
+    <enumeration value="AEP"/>
+    <enumeration value="AES"/>
+    <enumeration value="AET"/>
+    <enumeration value="AEU"/>
+    <enumeration value="AEV"/>
+    <enumeration value="AEW"/>
+    <enumeration value="AEX"/>
+    <enumeration value="AEY"/>
+    <enumeration value="AEZ"/>
+    <enumeration value="AJ"/>
+    <enumeration value="AU"/>
+    <enumeration value="CA"/>
+    <enumeration value="CAB"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CAE"/>
+    <enumeration value="CAF"/>
+    <enumeration value="CAI"/>
+    <enumeration value="CAJ"/>
+    <enumeration value="CAK"/>
+    <enumeration value="CAL"/>
+    <enumeration value="CAM"/>
+    <enumeration value="CAN"/>
+    <enumeration value="CAO"/>
+    <enumeration value="CAP"/>
+    <enumeration value="CAQ"/>
+    <enumeration value="CAR"/>
+    <enumeration value="CAS"/>
+    <enumeration value="CAT"/>
+    <enumeration value="CAU"/>
+    <enumeration value="CAV"/>
+    <enumeration value="CAW"/>
+    <enumeration value="CAX"/>
+    <enumeration value="CAY"/>
+    <enumeration value="CAZ"/>
+    <enumeration value="CD"/>
+    <enumeration value="CG"/>
+    <enumeration value="CS"/>
+    <enumeration value="CT"/>
+    <enumeration value="DAB"/>
+    <enumeration value="DAC"/>
+    <enumeration value="DAD"/>
+    <enumeration value="DAF"/>
+    <enumeration value="DAG"/>
+    <enumeration value="DAH"/>
+    <enumeration value="DAI"/>
+    <enumeration value="DAJ"/>
+    <enumeration value="DAK"/>
+    <enumeration value="DAL"/>
+    <enumeration value="DAM"/>
+    <enumeration value="DAN"/>
+    <enumeration value="DAO"/>
+    <enumeration value="DAP"/>
+    <enumeration value="DAQ"/>
+    <enumeration value="DL"/>
+    <enumeration value="EG"/>
+    <enumeration value="EP"/>
+    <enumeration value="ER"/>
+    <enumeration value="FAA"/>
+    <enumeration value="FAB"/>
+    <enumeration value="FAC"/>
+    <enumeration value="FC"/>
+    <enumeration value="FH"/>
+    <enumeration value="FI"/>
+    <enumeration value="GAA"/>
+    <enumeration value="HAA"/>
+    <enumeration value="HD"/>
+    <enumeration value="HH"/>
+    <enumeration value="IAA"/>
+    <enumeration value="IAB"/>
+    <enumeration value="ID"/>
+    <enumeration value="IF"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="KO"/>
+    <enumeration value="L1"/>
+    <enumeration value="LA"/>
+    <enumeration value="LAA"/>
+    <enumeration value="LAB"/>
+    <enumeration value="LF"/>
+    <enumeration value="MAE"/>
+    <enumeration value="MI"/>
+    <enumeration value="ML"/>
+    <enumeration value="NAA"/>
+    <enumeration value="OA"/>
+    <enumeration value="PA"/>
+    <enumeration value="PAA"/>
+    <enumeration value="PC"/>
+    <enumeration value="PL"/>
+    <enumeration value="PRV"/>
+    <enumeration value="RAB"/>
+    <enumeration value="RAC"/>
+    <enumeration value="RAD"/>
+    <enumeration value="RAF"/>
+    <enumeration value="RE"/>
+    <enumeration value="RF"/>
+    <enumeration value="RH"/>
+    <enumeration value="RV"/>
+    <enumeration value="SA"/>
+    <enumeration value="SAA"/>
+    <enumeration value="SAD"/>
+    <enumeration value="SAE"/>
+    <enumeration value="SAI"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SM"/>
+    <enumeration value="SU"/>
+    <enumeration value="TAB"/>
+    <enumeration value="TAC"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="V1"/>
+    <enumeration value="V2"/>
+    <enumeration value="WH"/>
+    <enumeration value="XAA"/>
+    <enumeration value="YY"/>
+    <enumeration value="ZZZ"/>
+  </cl>
+  <cl id="37">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="38">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="39">
+    <enumeration value="71"/>
+    <enumeration value="80"/>
+    <enumeration value="81"/>
+    <enumeration value="82"/>
+    <enumeration value="83"/>
+    <enumeration value="84"/>
+    <enumeration value="102"/>
+    <enumeration value="130"/>
+    <enumeration value="202"/>
+    <enumeration value="203"/>
+    <enumeration value="204"/>
+    <enumeration value="211"/>
+    <enumeration value="218"/>
+    <enumeration value="219"/>
+    <enumeration value="261"/>
+    <enumeration value="262"/>
+    <enumeration value="295"/>
+    <enumeration value="296"/>
+    <enumeration value="308"/>
+    <enumeration value="325"/>
+    <enumeration value="326"/>
+    <enumeration value="331"/>
+    <enumeration value="380"/>
+    <enumeration value="381"/>
+    <enumeration value="382"/>
+    <enumeration value="383"/>
+    <enumeration value="384"/>
+    <enumeration value="385"/>
+    <enumeration value="386"/>
+    <enumeration value="387"/>
+    <enumeration value="388"/>
+    <enumeration value="389"/>
+    <enumeration value="390"/>
+    <enumeration value="393"/>
+    <enumeration value="394"/>
+    <enumeration value="395"/>
+    <enumeration value="396"/>
+    <enumeration value="420"/>
+    <enumeration value="456"/>
+    <enumeration value="457"/>
+    <enumeration value="458"/>
+    <enumeration value="527"/>
+    <enumeration value="532"/>
+    <enumeration value="553"/>
+    <enumeration value="575"/>
+    <enumeration value="623"/>
+    <enumeration value="633"/>
+    <enumeration value="751"/>
+    <enumeration value="780"/>
+    <enumeration value="817"/>
+    <enumeration value="870"/>
+    <enumeration value="875"/>
+    <enumeration value="876"/>
+    <enumeration value="877"/>
+    <enumeration value="935"/>
+  </cl>
+  <cl id="40">
+    <enumeration value="1"/>
+    <enumeration value="2"/>
+    <enumeration value="3"/>
+    <enumeration value="4"/>
+    <enumeration value="5"/>
+    <enumeration value="6"/>
+    <enumeration value="7"/>
+  </cl>
+  <cl id="41">
+    <enumeration value="71"/>
+    <enumeration value="80"/>
+    <enumeration value="81"/>
+    <enumeration value="82"/>
+    <enumeration value="83"/>
+    <enumeration value="84"/>
+    <enumeration value="102"/>
+    <enumeration value="130"/>
+    <enumeration value="202"/>
+    <enumeration value="203"/>
+    <enumeration value="204"/>
+    <enumeration value="211"/>
+    <enumeration value="218"/>
+    <enumeration value="219"/>
+    <enumeration value="261"/>
+    <enumeration value="262"/>
+    <enumeration value="295"/>
+    <enumeration value="296"/>
+    <enumeration value="308"/>
+    <enumeration value="325"/>
+    <enumeration value="326"/>
+    <enumeration value="331"/>
+    <enumeration value="380"/>
+    <enumeration value="381"/>
+    <enumeration value="382"/>
+    <enumeration value="383"/>
+    <enumeration value="384"/>
+    <enumeration value="385"/>
+    <enumeration value="386"/>
+    <enumeration value="387"/>
+    <enumeration value="388"/>
+    <enumeration value="389"/>
+    <enumeration value="390"/>
+    <enumeration value="393"/>
+    <enumeration value="394"/>
+    <enumeration value="395"/>
+    <enumeration value="396"/>
+    <enumeration value="420"/>
+    <enumeration value="456"/>
+    <enumeration value="457"/>
+    <enumeration value="458"/>
+    <enumeration value="527"/>
+    <enumeration value="532"/>
+    <enumeration value="553"/>
+    <enumeration value="575"/>
+    <enumeration value="623"/>
+    <enumeration value="633"/>
+    <enumeration value="751"/>
+    <enumeration value="780"/>
+    <enumeration value="817"/>
+    <enumeration value="870"/>
+    <enumeration value="875"/>
+    <enumeration value="876"/>
+    <enumeration value="877"/>
+    <enumeration value="935"/>
+  </cl>
 </codedb>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_MINIMUM.sch
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_MINIMUM.sch	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_MINIMUM.sch	(revision 8504)
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<schema xmlns="http://purl.oclc.org/dsdl/schematron" schemaVersion="iso">
-  <title>Schema for FACTUR-X; 1.0; ACCOUNTING INFORMATION, No XML Invoice, (MINIMUM)</title>
+<schema xmlns="http://purl.oclc.org/dsdl/schematron"
+    queryBinding="xslt2"
+    schemaVersion="iso">
+  <title>Schema for Factur-X; 1.0.07; Accounting, MINIMUM</title>
   <ns uri="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" prefix="rsm"/>
   <ns uri="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" prefix="qdt"/>
@@ -7,345 +9,13 @@
   <ns uri="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" prefix="udt"/>
   <pattern>
-    <rule context="//ram:AdditionalReferencedDocument">
-      <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
-	Each Additional supporting document (BG-24) shall contain a Supporting document reference (BT-122).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-      <assert test="(ram:BasisAmount)">
-	Each VAT breakdown (BG-23) shall have a VAT category taxable amount (BT-116).</assert>
-      <assert test="(ram:CalculatedAmount)">
-	Each VAT breakdown (BG-23) shall have a VAT category tax amount (BT-117).</assert>
-      <assert test="(ram:CategoryCode)">
-	Each VAT breakdown (BG-23) shall be defined through a VAT category code (BT-118).</assert>
-      <assert test="(ram:RateApplicablePercent) or (ram:CategoryCode = &apos;O&apos;)">
-	Each VAT breakdown (BG-23) shall have a VAT category rate (BT-119), except if the Invoice is not subject to VAT.</assert>
-      <assert test="((ram:TaxPointDate) and not (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and (ram:DueDateTypeCode)) or (not (ram:TaxPointDate) and not (ram:DueDateTypeCode))">
-	Value added tax point date (BT-7) and Value added tax point date code (BT-8) are mutually exclusive.</assert>
-      <assert test="ram:CalculatedAmount = round(ram:BasisAmount * ram:RateApplicablePercent) div 100 +0 or not (ram:RateApplicablePercent)">
-	VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals.</assert>
-      <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the VAT category taxable amount (BT-116) is 2.</assert>
-      <assert test="string-length(substring-after(ram:CalculatedAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the VAT category tax amount (BT-117) is 2.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;Z&apos;]">
-      <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;Z&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;Z&apos;]/ram:ActualAmount)*10*10)div 100)">
-	In a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amount (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âZero rated".</assert>
-      <assert test="../ram:CalculatedAmount = 0">
-	The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Zero rated" shall equal 0 (zero).</assert>
-      <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
-	A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.=&apos;S&apos;]">
-      <assert test="../ram:CalculatedAmount = round(../ram:BasisAmount * ../ram:RateApplicablePercent) div 100 +0">
-	The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "Standard rated" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-      <assert test="not(../ram:ExemptionReason) and not (../ram:ExemptionReasonCode)">
-	A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
-      <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
-	If both Invoicing period start date (BT-73) and Invoicing period end date (BT-74) are given then the Invoicing period end date (BT-74) shall be later or equal to the Invoicing period start date (BT-73).</assert>
-      <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
-	If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]">
-      <assert test="(ram:ActualAmount)">
-	Each Document level allowance (BG-20) shall have a Document level allowance amount (BT-92).</assert>
-      <assert test="(ram:CategoryTradeTax/ram:CategoryCode)">
-	Each Document level allowance (BG-20) shall have a Document level allowance VAT category code (BT-95).</assert>
-      <assert test="(ram:Reason) or (ram:ReasonCode)">
-	Each Document level allowance (BG-20) shall have a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98).</assert>
-      <assert test="true()">
-	Document level allowance reason code (BT-98) and Document level allowance reason (BT-97) shall indicate the same type of allowance.</assert>
-      <assert test="(ram:Reason) or (ram:ReasonCode)">
-	Each Document level allowance (BG-20) shall contain a Document level allowance reason (BT-97) or a Document level allowance reason code (BT-98), or both.</assert>
-      <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Document level allowance amount (BT-92) is 2.</assert>
-      <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Document level allowance base amount (BT-93) is 2.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]">
-      <assert test="(ram:ActualAmount)">
-	Each Document level charge (BG-21) shall have a Document level charge amount (BT-99).</assert>
-      <assert test="(ram:CategoryTradeTax/ram:CategoryCode)">
-	Each Document level charge (BG-21) shall have a Document level charge VAT category code (BT-102).</assert>
-      <assert test="(ram:Reason) or (ram:ReasonCode)">
-	Each Document level charge (BG-21) shall have a Document level charge reason (BT-104) or a Document level charge reason code (BT-105).</assert>
-      <assert test="true()">
-	Document level charge reason code (BT-105) and Document level charge reason (BT-104) shall indicate the same type of charge.</assert>
-      <assert test="(ram:Reason) or (ram:ReasonCode)">
-	Each Document level charge (BG-21) shall contain a Document level charge reason (BT-104) or a Document level charge reason code (BT-105), or both.</assert>
-      <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Document level charge amount (BT-92) is 2.</assert>
-      <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Document level charge base amount (BT-93) is 2.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:ApplicableProductCharacteristic">
-      <assert test="(ram:Description) and (ram:Value)">
-	Each Item attribute (BG-32) shall contain an Item attribute name (BT-160) and an Item attribute value (BT-161).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:ApplicableTradeSettlementFinancialCard">
-      <assert test="string-length(ram:ID)&lt;=6 and string-length(ram:ID)&gt;=4">
-	The last 4 to 6 digits of the Payment card primary account number (BT-87) shall be present if Payment card information (BG-18) is provided in the Invoice.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:IncludedSupplyChainTradeLineItem">
-      <assert test="(ram:AssociatedDocumentLineDocument/ram:LineID!=&apos;&apos;)">
-	Each Invoice line (BG-25) shall have an Invoice line identifier (BT-126).</assert>
-      <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)">
-	Each Invoice line (BG-25) shall have an Invoiced quantity (BT-129).</assert>
-      <assert test="(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)">
-	An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).</assert>
-      <assert test="(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)">
-	Each Invoice line (BG-25) shall have an Invoice line net amount (BT-131).</assert>
-      <assert test="(ram:SpecifiedTradeProduct/ram:Name!=&apos;&apos;)">
-	Each Invoice line (BG-25) shall contain the Item name (BT-153).</assert>
-      <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)">
-	Each Invoice line (BG-25) shall contain the Item net price (BT-146).</assert>
-      <assert test="(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount) &gt;= 0">
-	The Item net price (BT-146) shall NOT be negative.</assert>
-      <assert test="(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount &gt;= 0) or not(ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount)">
-	The Item gross price (BT-148) shall NOT be negative.</assert>
-      <assert test="ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID!=&apos;&apos; or not (ram:SpecifiedTradeProduct/ram:GlobalID)">
-	The Item standard identifier (BT-157) shall have a Scheme identifier</assert>
-      <assert test="(ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode/@listID!=&apos;&apos;) or not (ram:SpecifiedTradeProduct/ram:DesignatedProductClassification)">
-	The Item classification identifier (BT-158) shall have a Scheme identifier</assert>
-      <assert test="(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode)">
-	Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).</assert>
-      <assert test="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-	An Invoice shall at least have one VAT breakdown group (BG-23).</assert>
-      <assert test="string-length(substring-after(ram:SpecifiedTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Invoice line net amount (BT-131) is 2.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:PayeeTradeParty">
-      <assert test="(ram:Name) and (not(ram:Name = ../ram:SellerTradeParty/ram:Name) and not(ram:ID = ../ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))">
-	The Payee name (BT-59) shall be provided in the Invoice, if the Payee (BG-10) is different from the Seller (BG-4).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SellerTaxRepresentativeTradeParty">
-      <assert test="(ram:Name)">
-	The Seller tax representative name (BT-62) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-      <assert test="(ram:PostalTradeAddress)">
-	The Seller tax representative postal address (BG-12) shall be provided in the Invoice, if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-      <assert test="(ram:PostalTradeAddress/ram:CountryID)">
-	The Seller tax representative postal address (BG-12) shall contain a Tax representative country code (BT-69), if the Seller (BG-4) has a Seller tax representative party (BG-11).</assert>
-      <assert test="(ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]!=&apos;&apos;)">
-	Each Seller tax representative party (BG-11) shall have a Seller tax representative VAT identifier (BT-63).</assert>
-    </rule>
-  </pattern>
-  <pattern>
     <rule context="//ram:SellerTradeParty">
       <assert test="(ram:ID) or (ram:GlobalID) or (ram:SpecifiedLegalOrganization/ram:ID) or (ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;])">
-	In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedLineTradeSettlement/ram:BillingSpecifiedPeriod">
-      <assert test="(ram:EndDateTime/udt:DateTimeString[@format = &apos;102&apos;]) &gt;= (ram:StartDateTime/udt:DateTimeString[@format = &apos;102&apos;]) or not (ram:EndDateTime) or not (ram:StartDateTime)">
-	If both Invoice line period start date (BT-134) and Invoice line period end date (BT-135) are given then the Invoice line period end date (BT-135) shall be later or equal to the Invoice line period start date (BT-134).</assert>
-      <assert test="(ram:StartDateTime) or (ram:EndDateTime)">
-	If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = &apos;false&apos;]">
-      <assert test="(ram:ActualAmount)">
-	Each Invoice line allowance (BG-27) shall have an Invoice line allowance amount (BT-136).</assert>
-      <assert test="(ram:Reason) or (ram:ReasonCode)">
-	Each Invoice line allowance (BG-27) shall have an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140).</assert>
-      <assert test="true()">
-	Invoice line allowance reason code (BT-140) and Invoice line allowance reason (BT-139) shall indicate the same type of allowance reason.</assert>
-      <assert test="(ram:Reason) or (ram:ReasonCode)">
-	Each Invoice line allowance (BG-27) shall contain an Invoice line allowance reason (BT-139) or an Invoice line allowance reason code (BT-140), or both.</assert>
-      <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Invoice line allowance amount (BT-136) is 2.</assert>
-      <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Invoice line allowance base amount (BT-137) is 2.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator = &apos;true&apos;]">
-      <assert test="(ram:ActualAmount)">
-	Each Invoice line charge (BG-28) shall have an Invoice line charge amount (BT-141).</assert>
-      <assert test="(ram:Reason) or (ram:ReasonCode)">
-	Each Invoice line charge (BG-28) shall have an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145).</assert>
-      <assert test="true()">
-	Invoice line charge reason code (BT-145) and Invoice line charge reason (BT144) shall indicate the same type of charge reason.</assert>
-      <assert test="(ram:Reason) or (ram:ReasonCode)">
-	Each Invoice line charge (BG-28) shall contain an Invoice line charge reason (BT-144) or an Invoice line charge reason code (BT-145), or both.</assert>
-      <assert test="string-length(substring-after(ram:ActualAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Invoice line charge amount (BT-141) is 2.</assert>
-      <assert test="string-length(substring-after(ram:BasisAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Invoice line charge base amount (BT-142) is 2.</assert>
+	[BR-CO-26]-In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.</assert>
     </rule>
   </pattern>
   <pattern>
     <rule context="//ram:SpecifiedTaxRegistration/ram:ID[@schemeID=&apos;VA&apos;]">
-      <assert test="contains(&apos; EL AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CX CY CZ DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW &apos;, concat(&apos; &apos;, substring(.,1,2), &apos; &apos;))">
-	The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix âELâ.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-	An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Reverse charge" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Exempt from VAT", the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
-      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-	An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Export outside the EU" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
-      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent &gt; 0">
-	In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IGIC" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent &gt; 0">
-	In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "IPSI" the Document level allowance VAT rate (BT-96) shall be 0 (zero) or greater than zero.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
-      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-	An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
-      <assert test="not(ram:RateApplicablePercent)">
-	A Document level allowance (BG-20) where VAT category code (BT-95) is "Not subject to VAT" shall not contain a Document level allowance VAT rate (BT-96).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent &gt; 0">
-	In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Standard rated" the Document level allowance VAT rate (BT-96) shall be greater than zero.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In a Document level allowance (BG-20) where the Document level allowance VAT category code (BT-95) is "Zero rated" the Document level allowance VAT rate (BT-96) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-	An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Reverse charge" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;E&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Exempt from VAT", the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;G&apos;]">
-      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-	An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Export outside the EU" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;K&apos;]">
-      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Intra-community supply" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;L&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent &gt; 0">
-	In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IGIC" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;M&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent &gt; 0">
-	In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "IPSI" the Document level charge VAT rate (BT-103) shall be 0 (zero) or greater than zero.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;O&apos;]">
-      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-	An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-48).</assert>
-      <assert test="not(ram:RateApplicablePercent)">
-	A Document level charge (BG-21) where the VAT category code (BT-102) is "Not subject to VAT" shall not contain a Document level charge VAT rate (BT-103).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;S&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent &gt; 0">
-	In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Standard rated" the Document level charge VAT rate (BT-103) shall be greater than zero.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:CategoryTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains a Document level charge where the Document level charge VAT category code (BT-102) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In a Document level charge (BG-21) where the Document level charge VAT category code (BT-102) is "Zero rated" the Document level charge VAT rate (BT-103) shall be 0 (zero).</assert>
+      <assert test="contains(&apos; 1A AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH EL ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS XI YE YT ZA ZM ZW &apos;, concat(&apos; &apos;, substring(.,1,2), &apos; &apos;))">
+	[BR-CO-09]-The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix âELâ.</assert>
     </rule>
   </pattern>
@@ -353,209 +23,17 @@
     <rule context="//ram:SpecifiedTradeSettlementHeaderMonetarySummation">
       <assert test="(ram:TaxBasisTotalAmount)">
-	An Invoice shall have the Invoice total amount without VAT (BT-109).</assert>
+	[BR-13]-An Invoice shall have the Invoice total amount without VAT (BT-109).</assert>
       <assert test="(ram:GrandTotalAmount)">
-	An Invoice shall have the Invoice total amount with VAT (BT-112).</assert>
+	[BR-14]-An Invoice shall have the Invoice total amount with VAT (BT-112).</assert>
       <assert test="(ram:DuePayableAmount)">
-	An Invoice shall have the Amount due for payment (BT-115).</assert>
-      <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos;]/ram:ActualAmount)* 10 * 10 ) div 100)">
-	Sum of allowances on document level (BT-107) = S Document level allowance amount (BT-92).</assert>
-      <assert test="(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;])and not (ram:ChargeTotalAmount)) or ram:ChargeTotalAmount = &#13;&#10;((round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos;]/ram:ActualAmount)* 10 * 10 ) div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount)* 10 * 10 ) div 100))">
-	Sum of charges on document level (BT-108) = S Document level charge amount (BT-99).</assert>
-      <assert test="(ram:GrandTotalAmount = round(ram:TaxBasisTotalAmount*100 + ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]*100 +0) div 100) or ((ram:GrandTotalAmount = ram:TaxBasisTotalAmount) and not (ram:TaxTotalAmount[@currencyID=/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode]))">
-	Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).</assert>
-      <assert test="string-length(substring-after(ram:LineTotalAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Sum of Invoice line net amount (BT-106) is 2.</assert>
-      <assert test="string-length(substring-after(ram:AllowanceTotalAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Sum of allowanced on document level (BT-107) is 2.</assert>
-      <assert test="string-length(substring-after(ram:ChargeTotalAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Sum of charges on document level (BT-108) is 2.</assert>
+	[BR-15]-An Invoice shall have the Amount due for payment (BT-115).</assert>
       <assert test="string-length(substring-after(ram:TaxBasisTotalAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.</assert>
+	[BR-DEC-12]-The allowed maximum number of decimals for the Invoice total amount without VAT (BT-109) is 2.</assert>
       <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]">
-	The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.</assert>
+	[BR-DEC-13]-The allowed maximum number of decimals for the Invoice total VAT amount (BT-110) is 2.</assert>
       <assert test="string-length(substring-after(ram:GrandTotalAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.</assert>
-      <assert test="not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]">
-	The allowed maximum number of decimals for the Invoice total VAT amount in accounting currency (BT-111) is 2.</assert>
-      <assert test="string-length(substring-after(ram:TotalPrepaidAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Paid amount (BT-113) is 2.</assert>
-      <assert test="string-length(substring-after(ram:RoundingAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Rounding amount (BT-114) is 2.</assert>
+	[BR-DEC-14]-The allowed maximum number of decimals for the Invoice total amount with VAT (BT-112) is 2.</assert>
       <assert test="string-length(substring-after(ram:DuePayableAmount,&apos;.&apos;))&lt;=2">
-	The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.</assert>
-      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))">
-	If the VAT accounting currency code (BT-6) is present, then the Invoice total VAT amount in accounting currency (BT-111) shall be provided.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeSettlementPaymentMeans">
-      <assert test="(ram:TypeCode)">
-	A Payment instruction (BG-16) shall specify the Payment means type code (BT-81).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//ram:SpecifiedTradeSettlementPaymentMeans[ram:TypeCode=&apos;30&apos; or ram:TypeCode=&apos;58&apos;]/ram:PayerPartyDebtorFinancialAccount">
-      <assert test="(ram:IBANID) or (ram:ProprietaryID)">
-	A Payment account identifier (BT-84) shall be present if Credit transfer (BG-16) information is provided in the Invoice.</assert>
-      <assert test="(ram:IBANID) or (ram:ProprietaryID)">
-	If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID">
-      <assert test="(((//*[local-name()=&quot;CrossIndustryInvoice&quot;]/*[local-name()=&quot;ExchangedDocument&quot;]/*[local-name()=&quot;TypeCode&quot;]/text()=&quot;751&quot;) and (//*[local-name()=&quot;CrossIndustryInvoice&quot;]/*[local-name()=&quot;SupplyChainTradeTransaction&quot;]/*[local-name()=&quot;ApplicableHeaderTradeAgreement&quot;]/*[local-name()=&quot;BuyerTradeParty&quot;]/*[local-name()=&quot;PostalTradeAddress&quot;]/*[local-name()=&quot;CountryID&quot;]/text()=&quot;DE&quot;)) or ((//*[local-name()=&quot;CrossIndustryInvoice&quot;]/*[local-name()=&quot;ExchangedDocument&quot;]/*[local-name()=&quot;TypeCode&quot;]/text()!=&quot;&quot;) and (//*[local-name()=&quot;CrossIndustryInvoice&quot;]/*[local-name()=&quot;SupplyChainTradeTransaction&quot;]/*[local-name()=&quot;ApplicableHeaderTradeAgreement&quot;]/*[local-name()=&quot;BuyerTradeParty&quot;]/*[local-name()=&quot;PostalTradeAddress&quot;]/*[local-name()=&quot;CountryID&quot;]/text()!=&quot;DE&quot;)))">
-	In Deutschland sind die Profile MINIMUM und BASIC WL nur als Buchungshilfe (TypeCode: 751) zugelassen.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;AE&apos;]">
-      <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;AE&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;AE&apos;]/ram:ActualAmount)*10*10)div 100)">
-	In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Reverse charge" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âReverse charge".</assert>
-      <assert test="../ram:CalculatedAmount = 0">
-	The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âReverse chargeâ shall be 0 (zero).</assert>
-      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-	A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;E&apos;]">
-      <assert test="../ram:CalculatedAmount = 0">
-	The VAT category tax amount (BT-117) In a VAT breakdown (BG-23) where the VAT category code (BT-118) equals "Exempt from VAT" shall equal 0 (zero).</assert>
-      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-	A VAT Breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[. = &apos;G&apos;]">
-      <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;G&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;G&apos;]/ram:ActualAmount)*10*10)div 100)">
-	In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Export outside the EU" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âExport outside the EU".</assert>
-      <assert test="../ram:CalculatedAmount = 0">
-	The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âExport outside the EUâ shall be 0 (zero).</assert>
-      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-	A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode[.= &apos;K&apos;]">
-      <assert test="../ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;K&apos;]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;K&apos;]/ram:ActualAmount)*10*10)div 100)">
-	In a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âIntra-community supply".</assert>
-      <assert test="../ram:CalculatedAmount = 0">
-	The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-      <assert test="(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)">
-	A VAT Breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).</assert>
-      <assert test="(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent/ram:OccurrenceDateTime/udt:DateTimeString) or (../../ram:BillingSpecifiedPeriod/ram:StartDateTime) or (../../ram:BillingSpecifiedPeriod/ram:EndDateTime)">
-	In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Actual delivery date (BT-72) or the Invoicing period (BG-14) shall not be blank.</assert>
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID">
-	In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is "Intra-community supply" the Deliver to country code (BT-80) shall not be blank.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
-      <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;L&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;L&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100)">
-	For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IGIC", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is âIGICâ and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
-      <assert test="true()">
-	The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IGIC" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-      <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
-	A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IGIC" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
-      <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;M&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;M&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10) div 100)">
-	For each different value of VAT category rate (BT-119) where the VAT category code (BT-118) is "IPSI", the VAT category taxable amount (BT-116) in a VAT breakdown (BG-23) shall equal the sum of Invoice line net amounts (BT-131) plus the sum of document level charge amounts (BT-99) minus the sum of document level allowance amounts (BT-92) where the VAT category code (BT-151, BT-102, BT-95) is âIPSIâ and the VAT rate (BT-152, BT-103, BT-96) equals the VAT category rate (BT-119).</assert>
-      <assert test="true()">
-	The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is "IPSI" shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119).</assert>
-      <assert test="not(ram:ExemptionReason) and not (ram:ExemptionReasonCode)">
-	A VAT Breakdown (BG-23) with VAT Category code (BT-118) "IPSI" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
-      <assert test="ram:BasisAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement[ram:ApplicableTradeTax/ram:CategoryCode = &apos;O&apos; and ram:RateApplicablePercent=ram:ApplicableTradeTax/ram:RateApplicablePercent]/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)*10*10)div 100) + (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;true&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos; and ram:RateApplicablePercent=ram:CategoryTradeTax/ram:RateApplicablePercent]/ram:ActualAmount)*10*10)div 100) - (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=&apos;false&apos; and ram:CategoryTradeTax/ram:CategoryCode=&apos;O&apos;]/ram:ActualAmount)*10*10)div 100)">
-	In a VAT breakdown (BG-23) where the VAT category code (BT-118) is " Not subject to VAT" the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus the sum of Document level allowance amounts (BT-92) plus the sum of Document level charge amounts (BT-99) where the VAT category codes (BT-151, BT-95, BT-102) are âNot subject to VAT".</assert>
-      <assert test="ram:CalculatedAmount = 0">
-	The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where the VAT category code (BT-118) is âNot subject to VATâ shall be 0 (zero).</assert>
-      <assert test="(ram:ExemptionReason) or (ram:ExemptionReasonCode)">
-	A VAT Breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).</assert>
-      <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
-	An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain other VAT breakdown groups (BG-23).</assert>
-      <assert test="not(//ram:ApplicableTradeTax[ram:CategoryCode != &apos;O&apos;])">
-	An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is not "Not subject to VAT".</assert>
-      <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
-	An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level allowances (BG-20) where Document level allowance VAT category code (BT-95) is not "Not subject to VAT".</assert>
-      <assert test="not(//ram:CategoryTradeTax[ram:CategoryCode != &apos;O&apos;])">
-	An Invoice that contains a VAT breakdown group (BG-23) with a VAT category code (BT-118) "Not subject to VAT" shall not contain Document level charges (BG-21) where Document level charge VAT category code (BT-102) is not "Not subject to VAT".</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;AE&apos;]">
-      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)">
-	An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âReverse chargeâ shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;E&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âExempt from VATâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Exempt from VAT", the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;G&apos;]">
-      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-	An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âExport outside the EUâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Export outside the EU" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;K&apos;]">
-      <assert test="(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIntra-community supplyâ shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intracommunity supply" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;L&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIGICâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent &gt; 0">
-	In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IGIC" the invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;M&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âIPSIâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent &gt; 0">
-	In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "IPSI" the Invoiced item VAT rate (BT-152) shall be 0 (zero) or greater than zero.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;O&apos;]">
-      <assert test="not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]) and not (/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;])">
-	An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âNot subject to VATâ shall not contain the Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) or the Buyer VAT identifier (BT-46).</assert>
-      <assert test="not(ram:RateApplicablePercent)">
-	An Invoice line (BG-25) where the VAT category code (BT-151) is "Not subject to VAT" shall not contain an Invoiced item VAT rate (BT-152).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;S&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is âStandard ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent &gt; 0">
-	In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" the Invoiced item VAT rate (BT-152) shall be greater than zero.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="//rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode = &apos;Z&apos;]">
-      <assert test="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos; or @schemeID = &apos;FC&apos;] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = &apos;VA&apos;]">
-	An Invoice that contains an Invoice line where the Invoiced item VAT category code (BT-151) is âZero ratedâ shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63).</assert>
-      <assert test="ram:RateApplicablePercent = 0">
-	In an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Zero rated" the Invoiced item VAT rate (BT-152) shall be 0 (zero).</assert>
+	[BR-DEC-18]-The allowed maximum number of decimals for the Amount due for payment (BT-115) is 2.</assert>
     </rule>
   </pattern>
@@ -563,47 +41,27 @@
     <rule context="/rsm:CrossIndustryInvoice">
       <assert test="(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID != &apos;&apos;)">
-	An Invoice shall have a Specification identifier (BT-24).</assert>
+	[BR-01]-An Invoice shall have a Specification identifier (BT-24).</assert>
       <assert test="(rsm:ExchangedDocument/ram:ID !=&apos;&apos;)">
-	An Invoice shall have an Invoice number (BT-1).</assert>
+	[BR-02]-An Invoice shall have an Invoice number (BT-1).</assert>
       <assert test="(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format=&apos;102&apos;]!=&apos;&apos;)">
-	An Invoice shall have an Invoice issue date (BT-2).</assert>
+	[BR-03]-An Invoice shall have an Invoice issue date (BT-2).</assert>
       <assert test="(rsm:ExchangedDocument/ram:TypeCode!=&apos;&apos;)">
-	An Invoice shall have an Invoice type code (BT-3).</assert>
+	[BR-04]-An Invoice shall have an Invoice type code (BT-3).</assert>
       <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode!=&apos;&apos;)">
-	An Invoice shall have an Invoice currency code (BT-5).</assert>
+	[BR-05]-An Invoice shall have an Invoice currency code (BT-5).</assert>
       <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name!=&apos;&apos;)">
-	An Invoice shall contain the Seller name (BT-27).</assert>
+	[BR-06]-An Invoice shall contain the Seller name (BT-27).</assert>
       <assert test="(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name!=&apos;&apos;)">
-	An Invoice shall contain the Buyer name (BT-44).</assert>
+	[BR-07]-An Invoice shall contain the Buyer name (BT-44).</assert>
       <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress">
-	An Invoice shall contain the Seller postal address (BG-5).</assert>
+	[BR-08]-An Invoice shall contain the Seller postal address (BG-5).</assert>
       <assert test="//ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;">
-	The Seller postal address (BG-5) shall contain a Seller country code (BT-40).</assert>
-      <assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication/ram:URIID/@schemeID!=&apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)">
-	The Seller electronic address (BT-34) shall have a Scheme identifier.</assert>
-      <assert test="rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication/ram:URIID/@schemeID!=&apos;&apos; or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)">
-	The Buyer electronic address (BT-49) shall have a Scheme identifier.</assert>
-      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) and ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;S&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;S&apos;]))">
-	An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âStandard ratedâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "Standard rated".</assert>
-      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;Z&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;Z&apos;]))">
-	An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âZero ratedâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Zero rated".</assert>
-      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;E&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;E&apos;]))">
-	An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExempt from VATâ shall contain exactly one VAT breakdown (BG-23) with the VAT category code (BT-118) equal to "Exempt from VAT".</assert>
-      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;AE&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;AE&apos;]))">
-	An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âReverse chargeâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "VAT reverse charge".</assert>
-      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;K&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;K&apos;]))">
-	An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIntra-community supplyâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Intra-community supply".</assert>
-      <assert test="(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;G&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;G&apos;]))">
-	An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âExport outside the EUâ shall contain in the VAT breakdown (BG-23) exactly one VAT category code (BT-118) equal with "Export outside the EU".</assert>
-      <assert test="not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;]) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;])=1 and (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;O&apos;] or //ram:CategoryTradeTax[ram:CategoryCode=&apos;O&apos;]))">
-	An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âNot subject to VATâ shall contain exactly one VAT breakdown group (BG-23) with the VAT category code (BT-118) equal to "Not subject to VAT".</assert>
-      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) and ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;L&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;L&apos;]))">
-	An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIGICâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IGIC".</assert>
-      <assert test="((count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) and ((count(//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]) + count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode=&apos;M&apos;])) &gt;=2 or not (//ram:CategoryTradeTax[ram:CategoryCode=&apos;M&apos;]))">
-	An Invoice that contains an Invoice line (BG-25), a Document level allowance (BG-20) or a Document level charge (BG-21) where the VAT category code (BT-151, BT-95 or BT-102) is âIPSIâ shall contain in the VAT breakdown (BG-23) at least one VAT category code (BT-118) equal with "IPSI".</assert>
+	[BR-09]-The Seller postal address (BG-5) shall contain a Seller country code (BT-40).</assert>
     </rule>
   </pattern>
   <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
       <assert test="count(ram:TypeCode)=1">
 	Element 'ram:TypeCode' must occur exactly 1 times.</assert>
@@ -611,52 +69,4 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:CategoryCode">
-      <report test="true()">
-	Element 'ram:CategoryCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ControlRequirementIndicator">
-      <report test="true()">
-	Element 'ram:ControlRequirementIndicator' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:CopyIndicator">
-      <report test="true()">
-	Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:EffectiveSpecifiedPeriod">
-      <report test="true()">
-	Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:GlobalID">
-      <report test="true()">
-	Element 'ram:GlobalID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeAgencyID]">
-      <report test="true()">
-	Attribute @schemeAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeAgencyName]">
-      <report test="true()">
-	Attribute @schemeAgencyName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeDataURI]">
-      <report test="true()">
-	Attribute @schemeDataURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeID]">
       <report test="true()">
@@ -665,129 +75,21 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeName]">
-      <report test="true()">
-	Attribute @schemeName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeURI]">
-      <report test="true()">
-	Attribute @schemeURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID[@schemeVersionID]">
-      <report test="true()">
-	Attribute @schemeVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IncludedNote">
-      <report test="true()">
-	Element 'ram:IncludedNote' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTime">
-      <report test="true()">
-	Element 'udt:DateTime' is marked as not used in the given context.</report>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString">
+      <assert test="@format">
+	Attribute '@format' is required in this context.</assert>
     </rule>
   </pattern>
   <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format]">
-      <let name="codeValue2" value="@format"/>
+      <let name="codeValue3" value="@format"/>
+      <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
+	Value of '@format' is not allowed.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
+      <let name="codeValue2" value="."/>
       <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=2]/enumeration[@value=$codeValue2]">
-	Value of '@format' is not allowed.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssuerTradeParty">
-      <report test="true()">
-	Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:LanguageID">
-      <report test="true()">
-	Element 'ram:LanguageID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Name">
-      <report test="true()">
-	Element 'ram:Name' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:PreviousRevisionID">
-      <report test="true()">
-	Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:Purpose">
-      <report test="true()">
-	Element 'ram:Purpose' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:PurposeCode">
-      <report test="true()">
-	Element 'ram:PurposeCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:RevisionDateTime">
-      <report test="true()">
-	Element 'ram:RevisionDateTime' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:RevisionID">
-      <report test="true()">
-	Element 'ram:RevisionID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode">
-      <let name="codeValue1" value="."/>
-      <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=1]/enumeration[@value=$codeValue1]">
 	Value of 'ram:TypeCode' is not allowed.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listAgencyID]">
-      <report test="true()">
-	Attribute @listAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listID]">
-      <report test="true()">
-	Attribute @listID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listURI]">
-      <report test="true()">
-	Attribute @listURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@listVersionID]">
-      <report test="true()">
-	Attribute @listVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode[@name]">
-      <report test="true()">
-	Attribute @name' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:VersionID">
-      <report test="true()">
-	Element 'ram:VersionID' is marked as not used in the given context.</report>
     </rule>
   </pattern>
@@ -801,31 +103,7 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:ApplicationSpecifiedDocumentContextParameter">
-      <report test="true()">
-	Element 'ram:ApplicationSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BIMSpecifiedDocumentContextParameter">
-      <report test="true()">
-	Element 'ram:BIMSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyID]">
-      <report test="true()">
-	Attribute @schemeAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyName]">
-      <report test="true()">
-	Attribute @schemeAgencyName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeDataURI]">
-      <report test="true()">
-	Attribute @schemeDataURI' marked as not used in the given context.</report>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
     </rule>
   </pattern>
@@ -837,34 +115,4 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeName]">
-      <report test="true()">
-	Attribute @schemeName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeURI]">
-      <report test="true()">
-	Attribute @schemeURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID[@schemeVersionID]">
-      <report test="true()">
-	Attribute @schemeVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:SpecifiedDocumentVersion">
-      <report test="true()">
-	Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:Value">
-      <report test="true()">
-	Element 'ram:Value' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter">
       <assert test="count(ram:ID)=1">
@@ -873,19 +121,8 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyID]">
-      <report test="true()">
-	Attribute @schemeAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeAgencyName]">
-      <report test="true()">
-	Attribute @schemeAgencyName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeDataURI]">
-      <report test="true()">
-	Attribute @schemeDataURI' marked as not used in the given context.</report>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID">
+      <let name="codeValue1" value="."/>
+      <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=1]/enumeration[@value=$codeValue1]">
+	Value of 'ram:ID' is not allowed.</assert>
     </rule>
   </pattern>
@@ -894,64 +131,4 @@
       <report test="true()">
 	Attribute @schemeID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeName]">
-      <report test="true()">
-	Attribute @schemeName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeURI]">
-      <report test="true()">
-	Attribute @schemeURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID[@schemeVersionID]">
-      <report test="true()">
-	Attribute @schemeVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:SpecifiedDocumentVersion">
-      <report test="true()">
-	Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:Value">
-      <report test="true()">
-	Element 'ram:Value' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:MessageStandardSpecifiedDocumentContextParameter">
-      <report test="true()">
-	Element 'ram:MessageStandardSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:ScenarioSpecifiedDocumentContextParameter">
-      <report test="true()">
-	Element 'ram:ScenarioSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:SpecifiedTransactionID">
-      <report test="true()">
-	Element 'ram:SpecifiedTransactionID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:SubsetSpecifiedDocumentContextParameter">
-      <report test="true()">
-	Element 'ram:SubsetSpecifiedDocumentContextParameter' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:TestIndicator">
-      <report test="true()">
-	Element 'ram:TestIndicator' is marked as not used in the given context.</report>
     </rule>
   </pattern>
@@ -965,28 +142,4 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument">
-      <report test="true()">
-	Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ApplicableTradeDeliveryTerms">
-      <report test="true()">
-	Element 'ram:ApplicableTradeDeliveryTerms' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAgentTradeParty">
-      <report test="true()">
-	Element 'ram:BuyerAgentTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerAssignedAccountantTradeParty">
-      <report test="true()">
-	Element 'ram:BuyerAssignedAccountantTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument">
       <assert test="count(ram:IssuerAssignedID)=1">
@@ -995,169 +148,7 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachedSpecifiedBinaryFile">
-      <report test="true()">
-	Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:AttachmentBinaryObject">
-      <report test="true()">
-	Element 'ram:AttachmentBinaryObject' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:CopyIndicator">
-      <report test="true()">
-	Element 'ram:CopyIndicator' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:EffectiveSpecifiedPeriod">
-      <report test="true()">
-	Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime">
-      <report test="true()">
-	Element 'ram:FormattedIssueDateTime' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:GlobalID">
-      <report test="true()">
-	Element 'ram:GlobalID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Information">
-      <report test="true()">
-	Element 'ram:Information' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyID]">
-      <report test="true()">
-	Attribute @schemeAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeAgencyName]">
-      <report test="true()">
-	Attribute @schemeAgencyName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeDataURI]">
-      <report test="true()">
-	Attribute @schemeDataURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
     <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>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeName]">
-      <report test="true()">
-	Attribute @schemeName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeURI]">
-      <report test="true()">
-	Attribute @schemeURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID[@schemeVersionID]">
-      <report test="true()">
-	Attribute @schemeVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerTradeParty">
-      <report test="true()">
-	Element 'ram:IssuerTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID">
-      <report test="true()">
-	Element 'ram:LineID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:Name">
-      <report test="true()">
-	Element 'ram:Name' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:PreviousRevisionID">
-      <report test="true()">
-	Element 'ram:PreviousRevisionID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:ReferenceTypeCode">
-      <report test="true()">
-	Element 'ram:ReferenceTypeCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:RevisionID">
-      <report test="true()">
-	Element 'ram:RevisionID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:SectionName">
-      <report test="true()">
-	Element 'ram:SectionName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:StatusCode">
-      <report test="true()">
-	Element 'ram:StatusCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:TypeCode">
-      <report test="true()">
-	Element 'ram:TypeCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:URIID">
-      <report test="true()">
-	Element 'ram:URIID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerRequisitionerTradeParty">
-      <report test="true()">
-	Element 'ram:BuyerRequisitionerTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTaxRepresentativeTradeParty">
-      <report test="true()">
-	Element 'ram:BuyerTaxRepresentativeTradeParty' is marked as not used in the given context.</report>
     </rule>
   </pattern>
@@ -1169,448 +160,26 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:DefinedTradeContact">
-      <report test="true()">
-	Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Description">
-      <report test="true()">
-	Element 'ram:Description' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:EndPointURIUniversalCommunication">
-      <report test="true()">
-	Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:GlobalID">
-      <report test="true()">
-	Element 'ram:GlobalID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:ID">
-      <report test="true()">
-	Element 'ram:ID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-      <report test="true()">
-	Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress">
-      <assert test="count(ram:CountryID)=1">
-	Element 'ram:CountryID' must occur exactly 1 times.</assert>
-      <assert test="count(ram:CountrySubDivisionName)&lt;=1">
-	Element 'ram:CountrySubDivisionName' may occur at maximum 1 times.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-      <report test="true()">
-	Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-      <report test="true()">
-	Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-      <report test="true()">
-	Element 'ram:BuildingName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-      <report test="true()">
-	Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-      <report test="true()">
-	Element 'ram:CareOf' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-      <report test="true()">
-	Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-      <report test="true()">
-	Attribute @schemeAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-      <report test="true()">
-	Attribute @schemeID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-      <report test="true()">
-	Attribute @schemeVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-      <report test="true()">
-	Element 'ram:CountryName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-      <report test="true()">
-	Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-      <report test="true()">
-	Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:ID">
-      <report test="true()">
-	Element 'ram:ID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-      <report test="true()">
-	Element 'ram:LineFive' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-      <report test="true()">
-	Element 'ram:LineFour' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-      <report test="true()">
-	Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-      <report test="true()">
-	Attribute @listAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-      <report test="true()">
-	Attribute @listAgencyName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-      <report test="true()">
-	Attribute @listID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-      <report test="true()">
-	Attribute @listName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-      <report test="true()">
-	Attribute @listSchemeURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-      <report test="true()">
-	Attribute @listURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-      <report test="true()">
-	Attribute @listVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-      <report test="true()">
-	Attribute @name' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-      <report test="true()">
-	Element 'ram:StreetName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:RoleCode">
-      <report test="true()">
-	Element 'ram:RoleCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-      <report test="true()">
-	Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-      <report test="true()">
-	Attribute @schemeAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-      <report test="true()">
-	Attribute @schemeAgencyName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-      <report test="true()">
-	Attribute @schemeDataURI' marked as not used in the given context.</report>
+      <report test="true()">
+	Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
     </rule>
   </pattern>
   <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-      <let name="codeValue5" value="@schemeID"/>
-      <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
+      <let name="codeValue4" value="@schemeID"/>
+      <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
 	Value of '@schemeID' is not allowed.</assert>
     </rule>
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-      <report test="true()">
-	Attribute @schemeName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-      <report test="true()">
-	Attribute @schemeURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-      <report test="true()">
-	Attribute @schemeVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-      <report test="true()">
-	Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-      <report test="true()">
-	Element 'ram:Name' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-      <report test="true()">
-	Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
-      <report test="true()">
-	Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:SpecifiedTaxRegistration">
       <report test="true()">
 	Element 'ram:SpecifiedTaxRegistration' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication">
-      <report test="true()">
-	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument">
-      <report test="true()">
-	Element 'ram:ContractReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:DemandForecastReferencedDocument">
-      <report test="true()">
-	Element 'ram:DemandForecastReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:OrderResponseReferencedDocument">
-      <report test="true()">
-	Element 'ram:OrderResponseReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PriceListReferencedDocument">
-      <report test="true()">
-	Element 'ram:PriceListReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ProductEndUserTradeParty">
-      <report test="true()">
-	Element 'ram:ProductEndUserTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PromotionalDealReferencedDocument">
-      <report test="true()">
-	Element 'ram:PromotionalDealReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:PurchaseConditionsReferencedDocument">
-      <report test="true()">
-	Element 'ram:PurchaseConditionsReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument">
-      <report test="true()">
-	Element 'ram:QuotationReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:Reference">
-      <report test="true()">
-	Element 'ram:Reference' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:RequisitionerReferencedDocument">
-      <report test="true()">
-	Element 'ram:RequisitionerReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SalesAgentTradeParty">
-      <report test="true()">
-	Element 'ram:SalesAgentTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerAssignedAccountantTradeParty">
-      <report test="true()">
-	Element 'ram:SellerAssignedAccountantTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument">
-      <report test="true()">
-	Element 'ram:SellerOrderReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty">
-      <report test="true()">
-	Element 'ram:SellerTaxRepresentativeTradeParty' is marked as not used in the given context.</report>
     </rule>
   </pattern>
@@ -1621,52 +190,8 @@
       <assert test="count(ram:PostalTradeAddress)=1">
 	Element 'ram:PostalTradeAddress' must occur exactly 1 times.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:DefinedTradeContact">
-      <report test="true()">
-	Element 'ram:DefinedTradeContact' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Description">
-      <report test="true()">
-	Element 'ram:Description' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:EndPointURIUniversalCommunication">
-      <report test="true()">
-	Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:GlobalID">
-      <report test="true()">
-	Element 'ram:GlobalID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID">
-      <report test="true()">
-	Element 'ram:ID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:LogoAssociatedSpecifiedBinaryFile">
-      <report test="true()">
-	Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
+      <assert test="count(ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;])&lt;=1">
+	Element variant 'ram:SpecifiedTaxRegistration[ram:ID/@schemeID="VA"]' may occur at maximum 1 times.</assert>
+      <assert 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>
     </rule>
   </pattern>
@@ -1678,330 +203,12 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:AdditionalStreetName">
-      <report test="true()">
-	Element 'ram:AdditionalStreetName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:AttentionOf">
-      <report test="true()">
-	Element 'ram:AttentionOf' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:BuildingName">
-      <report test="true()">
-	Element 'ram:BuildingName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:BuildingNumber">
-      <report test="true()">
-	Element 'ram:BuildingNumber' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CareOf">
-      <report test="true()">
-	Element 'ram:CareOf' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CitySubDivisionName">
-      <report test="true()">
-	Element 'ram:CitySubDivisionName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeAgencyID]">
-      <report test="true()">
-	Attribute @schemeAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeID]">
-      <report test="true()">
-	Attribute @schemeID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID[@schemeVersionID]">
-      <report test="true()">
-	Attribute @schemeVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryName">
-      <report test="true()">
-	Element 'ram:CountryName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionID">
-      <report test="true()">
-	Element 'ram:CountrySubDivisionID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountrySubDivisionName">
-      <report test="true()">
-	Element 'ram:CountrySubDivisionName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:DepartmentName">
-      <report test="true()">
-	Element 'ram:DepartmentName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:ID">
-      <report test="true()">
-	Element 'ram:ID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineFive">
-      <report test="true()">
-	Element 'ram:LineFive' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineFour">
-      <report test="true()">
-	Element 'ram:LineFour' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo[@languageLocaleID]">
-      <report test="true()">
-	Attribute @languageLocaleID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostOfficeBox">
-      <report test="true()">
-	Element 'ram:PostOfficeBox' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@languageID]">
-      <report test="true()">
-	Attribute @languageID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyID]">
-      <report test="true()">
-	Attribute @listAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listAgencyName]">
-      <report test="true()">
-	Attribute @listAgencyName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listID]">
-      <report test="true()">
-	Attribute @listID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listName]">
-      <report test="true()">
-	Attribute @listName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listSchemeURI]">
-      <report test="true()">
-	Attribute @listSchemeURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listURI]">
-      <report test="true()">
-	Attribute @listURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@listVersionID]">
-      <report test="true()">
-	Attribute @listVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode[@name]">
-      <report test="true()">
-	Attribute @name' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:StreetName">
-      <report test="true()">
-	Element 'ram:StreetName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:RoleCode">
-      <report test="true()">
-	Element 'ram:RoleCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:AuthorizedLegalRegistration">
-      <report test="true()">
-	Element 'ram:AuthorizedLegalRegistration' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyID]">
-      <report test="true()">
-	Attribute @schemeAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeAgencyName]">
-      <report test="true()">
-	Attribute @schemeAgencyName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeDataURI]">
-      <report test="true()">
-	Attribute @schemeDataURI' marked as not used in the given context.</report>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID">
+      <let name="codeValue5" value="."/>
+      <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=5]/enumeration[@value=$codeValue5]">
+	Value of 'ram:CountryID' is not allowed.</assert>
     </rule>
   </pattern>
   <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeID]">
-      <let name="codeValue3" value="@schemeID"/>
-      <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=3]/enumeration[@value=$codeValue3]">
-	Value of '@schemeID' is not allowed.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeName]">
-      <report test="true()">
-	Attribute @schemeName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeURI]">
-      <report test="true()">
-	Attribute @schemeURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID[@schemeVersionID]">
-      <report test="true()">
-	Attribute @schemeVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:LegalClassificationCode">
-      <report test="true()">
-	Element 'ram:LegalClassificationCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:Name">
-      <report test="true()">
-	Element 'ram:Name' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:PostalTradeAddress">
-      <report test="true()">
-	Element 'ram:PostalTradeAddress' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:TradingBusinessName">
-      <report test="true()">
-	Element 'ram:TradingBusinessName' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration">
-      <assert test="count(ram:ID)=1">
-	Element 'ram:ID' must occur exactly 1 times.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:AssociatedRegisteredTax">
-      <report test="true()">
-	Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID">
-      <assert test="@schemeID">
-	Attribute '@schemeID' is required in this context.</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyID]">
-      <report test="true()">
-	Attribute @schemeAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeAgencyName]">
-      <report test="true()">
-	Attribute @schemeAgencyName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeDataURI]">
-      <report test="true()">
-	Attribute @schemeDataURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID]">
       <let name="codeValue4" value="@schemeID"/>
       <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=4]/enumeration[@value=$codeValue4]">
@@ -2010,139 +217,31 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeName]">
-      <report test="true()">
-	Attribute @schemeName' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeURI]">
-      <report test="true()">
-	Attribute @schemeURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeVersionID]">
-      <report test="true()">
-	Attribute @schemeVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication">
-      <report test="true()">
-	Element 'ram:URIUniversalCommunication' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SpecifiedProcuringProject">
-      <report test="true()">
-	Element 'ram:SpecifiedProcuringProject' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SupplyInstructionReferencedDocument">
-      <report test="true()">
-	Element 'ram:SupplyInstructionReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument">
-      <report test="true()">
-	Element 'ram:UltimateCustomerOrderReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery">
-      <assert test="(ram:ShipToTradeParty/ram:PostalTradeAddress and ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID!=&apos;&apos;) or not (ram:ShipToTradeParty/ram:PostalTradeAddress)">
-	Each Deliver to address (BG-15) shall contain a Deliver to country code (BT-80).</assert>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDeliverySupplyChainEvent">
-      <report test="true()">
-	Element 'ram:ActualDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualDespatchSupplyChainEvent">
-      <report test="true()">
-	Element 'ram:ActualDespatchSupplyChainEvent' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualPickUpSupplyChainEvent">
-      <report test="true()">
-	Element 'ram:ActualPickUpSupplyChainEvent' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ActualReceiptSupplyChainEvent">
-      <report test="true()">
-	Element 'ram:ActualReceiptSupplyChainEvent' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:AdditionalReferencedDocument">
-      <report test="true()">
-	Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ConsumptionReportReferencedDocument">
-      <report test="true()">
-	Element 'ram:ConsumptionReportReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument">
-      <report test="true()">
-	Element 'ram:DeliveryNoteReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument">
-      <report test="true()">
-	Element 'ram:DespatchAdviceReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:PackingListReferencedDocument">
-      <report test="true()">
-	Element 'ram:PackingListReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:PreviousDeliverySupplyChainEvent">
-      <report test="true()">
-	Element 'ram:PreviousDeliverySupplyChainEvent' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument">
-      <report test="true()">
-	Element 'ram:ReceivingAdviceReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:RelatedSupplyChainConsignment">
-      <report test="true()">
-	Element 'ram:RelatedSupplyChainConsignment' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipFromTradeParty">
-      <report test="true()">
-	Element 'ram:ShipFromTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty">
-      <report test="true()">
-	Element 'ram:ShipToTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:UltimateShipToTradeParty">
-      <report test="true()">
-	Element 'ram:UltimateShipToTradeParty' is marked as not used in the given context.</report>
+    <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()">
+	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>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;FC&quot;]/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]">
+      <assert test="count(ram:ID)=1">
+	Element 'ram:ID' must occur exactly 1 times.</assert>
+    </rule>
+  </pattern>
+  <pattern>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration[ram:ID/@schemeID=&quot;VA&quot;]/ram:ID">
+      <assert test="@schemeID">
+	Attribute '@schemeID' is required in this context.</assert>
     </rule>
   </pattern>
@@ -2156,237 +255,8 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax">
-      <report test="true()">
-	Element 'ram:ApplicableTradeTax' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:BillingSpecifiedPeriod">
-      <report test="true()">
-	Element 'ram:BillingSpecifiedPeriod' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditReason">
-      <report test="true()">
-	Element 'ram:CreditReason' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditReasonCode">
-      <report test="true()">
-	Element 'ram:CreditReasonCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID">
-      <report test="true()">
-	Element 'ram:CreditorReferenceID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceIssuerID">
-      <report test="true()">
-	Element 'ram:CreditorReferenceIssuerID' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceType">
-      <report test="true()">
-	Element 'ram:CreditorReferenceType' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceTypeCode">
-      <report test="true()">
-	Element 'ram:CreditorReferenceTypeCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:DuePayableAmount">
-      <report test="true()">
-	Element 'ram:DuePayableAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:FactoringAgreementReferencedDocument">
-      <report test="true()">
-	Element 'ram:FactoringAgreementReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:FactoringListReferencedDocument">
-      <report test="true()">
-	Element 'ram:FactoringListReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceApplicableTradeCurrencyExchange">
-      <report test="true()">
-	Element 'ram:InvoiceApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listAgencyID]">
-      <report test="true()">
-	Attribute @listAgencyID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listID]">
-      <report test="true()">
-	Attribute @listID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listURI]">
-      <report test="true()">
-	Attribute @listURI' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode[@listVersionID]">
-      <report test="true()">
-	Attribute @listVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceDateTime">
-      <report test="true()">
-	Element 'ram:InvoiceDateTime' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceIssuerReference">
-      <report test="true()">
-	Element 'ram:InvoiceIssuerReference' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument">
-      <assert test="(ram:IssuerAssignedID!=&apos;&apos;)">
-	Each Preceding Invoice reference (BG-3) shall contain a Preceding Invoice reference (BT-25).</assert>
-      <report test="true()">
-	Element 'ram:InvoiceReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceeTradeParty">
-      <report test="true()">
-	Element 'ram:InvoiceeTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoicerTradeParty">
-      <report test="true()">
-	Element 'ram:InvoicerTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:LetterOfCreditReferencedDocument">
-      <report test="true()">
-	Element 'ram:LetterOfCreditReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:NextInvoiceDateTime">
-      <report test="true()">
-	Element 'ram:NextInvoiceDateTime' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayableSpecifiedTradeAccountingAccount">
-      <report test="true()">
-	Element 'ram:PayableSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayeeTradeParty">
-      <report test="true()">
-	Element 'ram:PayeeTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PayerTradeParty">
-      <report test="true()">
-	Element 'ram:PayerTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentApplicableTradeCurrencyExchange">
-      <report test="true()">
-	Element 'ram:PaymentApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentCurrencyCode">
-      <report test="true()">
-	Element 'ram:PaymentCurrencyCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PaymentReference">
-      <report test="true()">
-	Element 'ram:PaymentReference' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ProFormaInvoiceReferencedDocument">
-      <report test="true()">
-	Element 'ram:ProFormaInvoiceReferencedDocument' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:PurchaseSpecifiedTradeAccountingAccount">
-      <report test="true()">
-	Element 'ram:PurchaseSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount">
-      <report test="true()">
-	Element 'ram:ReceivableSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SalesSpecifiedTradeAccountingAccount">
-      <report test="true()">
-	Element 'ram:SalesSpecifiedTradeAccountingAccount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedAdvancePayment">
-      <report test="true()">
-	Element 'ram:SpecifiedAdvancePayment' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedFinancialAdjustment">
-      <report test="true()">
-	Element 'ram:SpecifiedFinancialAdjustment' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge">
-      <report test="true()">
-	Element 'ram:SpecifiedLogisticsServiceCharge' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge">
-      <report test="true()">
-	Element 'ram:SpecifiedTradeAllowanceCharge' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms">
-      <report test="true()">
-	Element 'ram:SpecifiedTradePaymentTerms' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementFinancialCard">
-      <report test="true()">
-	Element 'ram:SpecifiedTradeSettlementFinancialCard' is marked as not used in the given context.</report>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode">
+      <let name="codeValue6" value="."/>
+      <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
+	Value of 'ram:InvoiceCurrencyCode' is not allowed.</assert>
     </rule>
   </pattern>
@@ -2395,6 +265,6 @@
       <assert test="count(ram:TaxBasisTotalAmount)=1">
 	Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times.</assert>
-      <assert test="count(ram:TaxTotalAmount)&lt;=1">
-	Element 'ram:TaxTotalAmount' may occur at maximum 1 times.</assert>
+      <assert test="count(ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode])&lt;=1">
+	Element variant 'ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode]' may occur at maximum 1 times.</assert>
       <assert test="count(ram:GrandTotalAmount)=1">
 	Element 'ram:GrandTotalAmount' must occur exactly 1 times.</assert>
@@ -2404,22 +274,4 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:AllowanceTotalAmount">
-      <report test="true()">
-	Element 'ram:AllowanceTotalAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ChargeTotalAmount">
-      <report test="true()">
-	Element 'ram:ChargeTotalAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:DuePayableAmount[@currencyCodeListVersionID]">
-      <report test="true()">
-	Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:DuePayableAmount[@currencyID]">
       <report test="true()">
@@ -2428,10 +280,4 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount[@currencyCodeListVersionID]">
-      <report test="true()">
-	Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount[@currencyID]">
       <report test="true()">
@@ -2440,58 +286,4 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrossLineTotalAmount">
-      <report test="true()">
-	Element 'ram:GrossLineTotalAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:InformationAmount">
-      <report test="true()">
-	Element 'ram:InformationAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:LineTotalAmount">
-      <report test="true()">
-	Element 'ram:LineTotalAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:NetIncludingTaxesLineTotalAmount">
-      <report test="true()">
-	Element 'ram:NetIncludingTaxesLineTotalAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:NetLineTotalAmount">
-      <report test="true()">
-	Element 'ram:NetLineTotalAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:ProductValueExcludingTobaccoTaxInformationAmount">
-      <report test="true()">
-	Element 'ram:ProductValueExcludingTobaccoTaxInformationAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RetailValueExcludingTaxInformationAmount">
-      <report test="true()">
-	Element 'ram:RetailValueExcludingTaxInformationAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:RoundingAmount">
-      <report test="true()">
-	Element 'ram:RoundingAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount[@currencyCodeListVersionID]">
-      <report test="true()">
-	Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
     <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxBasisTotalAmount[@currencyID]">
       <report test="true()">
@@ -2500,86 +292,20 @@
   </pattern>
   <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyCodeListVersionID]">
-      <report test="true()">
-	Attribute @currencyCodeListVersionID' marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID]">
-      <let name="codeValue6" value="@currencyID"/>
-      <assert test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//cl[@id=6]/enumeration[@value=$codeValue6]">
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[ not(@currencyID=../../ram:InvoiceCurrencyCode) and  not(@currencyID=../../ram:TaxCurrencyCode)]">
+      <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>
+    </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 test="document(&apos;FACTUR-X_MINIMUM_codedb.xml&apos;)//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:TotalAllowanceChargeAmount">
-      <report test="true()">
-	Element 'ram:TotalAllowanceChargeAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalDepositFeeInformationAmount">
-      <report test="true()">
-	Element 'ram:TotalDepositFeeInformationAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalDiscountAmount">
-      <report test="true()">
-	Element 'ram:TotalDiscountAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalPrepaidAmount">
-      <report test="true()">
-	Element 'ram:TotalPrepaidAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TotalRetailValueInformationAmount">
-      <report test="true()">
-	Element 'ram:TotalRetailValueInformationAmount' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans">
-      <report test="true()">
-	Element 'ram:SpecifiedTradeSettlementPaymentMeans' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SubtotalCalculatedTradeTax">
-      <report test="true()">
-	Element 'ram:SubtotalCalculatedTradeTax' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange">
-      <report test="true()">
-	Element 'ram:TaxApplicableTradeCurrencyExchange' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode">
-      <report test="true()">
-	Element 'ram:TaxCurrencyCode' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:UltimatePayeeTradeParty">
-      <report test="true()">
-	Element 'ram:UltimatePayeeTradeParty' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem">
-      <report test="true()">
-	Element 'ram:IncludedSupplyChainTradeLineItem' is marked as not used in the given context.</report>
-    </rule>
-  </pattern>
-  <pattern>
-    <rule context="/rsm:CrossIndustryInvoice/rsm:ValuationBreakdownStatement">
-      <report test="true()">
-	Element 'rsm:ValuationBreakdownStatement' is marked as not used in the given context.</report>
+    <rule context="/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../../ram:InvoiceCurrencyCode]">
+      <assert test="@currencyID">
+	Attribute '@currencyID' is required in this context.</assert>
     </rule>
   </pattern>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_MINIMUM_codedb.xml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_MINIMUM_codedb.xml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/schema/schematron/FACTUR-X_MINIMUM_codedb.xml	(revision 8504)
@@ -2,4 +2,8 @@
 <codedb>
   <cl id="1">
+    <enumeration value="urn:factur-x.eu:1p0:minimum"/>
+  </cl>
+  <cl id="2">
+    <enumeration value="71"/>
     <enumeration value="80"/>
     <enumeration value="81"/>
@@ -7,4 +11,5 @@
     <enumeration value="83"/>
     <enumeration value="84"/>
+    <enumeration value="102"/>
     <enumeration value="130"/>
     <enumeration value="202"/>
@@ -12,4 +17,6 @@
     <enumeration value="204"/>
     <enumeration value="211"/>
+    <enumeration value="218"/>
+    <enumeration value="219"/>
     <enumeration value="261"/>
     <enumeration value="262"/>
@@ -19,6 +26,8 @@
     <enumeration value="325"/>
     <enumeration value="326"/>
+    <enumeration value="331"/>
     <enumeration value="380"/>
     <enumeration value="381"/>
+    <enumeration value="382"/>
     <enumeration value="383"/>
     <enumeration value="384"/>
@@ -38,4 +47,6 @@
     <enumeration value="458"/>
     <enumeration value="527"/>
+    <enumeration value="532"/>
+    <enumeration value="553"/>
     <enumeration value="575"/>
     <enumeration value="623"/>
@@ -43,10 +54,15 @@
     <enumeration value="751"/>
     <enumeration value="780"/>
+    <enumeration value="817"/>
+    <enumeration value="870"/>
+    <enumeration value="875"/>
+    <enumeration value="876"/>
+    <enumeration value="877"/>
     <enumeration value="935"/>
   </cl>
-  <cl id="2">
+  <cl id="3">
     <enumeration value="102"/>
   </cl>
-  <cl id="3">
+  <cl id="4">
     <enumeration value="0002"/>
     <enumeration value="0003"/>
@@ -248,209 +264,283 @@
     <enumeration value="0203"/>
     <enumeration value="0204"/>
-  </cl>
-  <cl id="4">
-    <enumeration value="FC"/>
-    <enumeration value="VA"/>
+    <enumeration value="0205"/>
+    <enumeration value="0206"/>
+    <enumeration value="0207"/>
+    <enumeration value="0208"/>
+    <enumeration value="0209"/>
+    <enumeration value="0210"/>
+    <enumeration value="0211"/>
+    <enumeration value="0212"/>
+    <enumeration value="0213"/>
+    <enumeration value="0214"/>
+    <enumeration value="0215"/>
+    <enumeration value="0216"/>
+    <enumeration value="0217"/>
+    <enumeration value="0218"/>
+    <enumeration value="0219"/>
+    <enumeration value="0220"/>
+    <enumeration value="0221"/>
+    <enumeration value="0222"/>
+    <enumeration value="0223"/>
+    <enumeration value="0224"/>
+    <enumeration value="0225"/>
+    <enumeration value="0226"/>
+    <enumeration value="0227"/>
+    <enumeration value="0228"/>
+    <enumeration value="0229"/>
+    <enumeration value="0230"/>
   </cl>
   <cl id="5">
-    <enumeration value="0002"/>
-    <enumeration value="0003"/>
-    <enumeration value="0004"/>
-    <enumeration value="0005"/>
-    <enumeration value="0006"/>
-    <enumeration value="0007"/>
-    <enumeration value="0008"/>
-    <enumeration value="0009"/>
-    <enumeration value="0010"/>
-    <enumeration value="0011"/>
-    <enumeration value="0012"/>
-    <enumeration value="0013"/>
-    <enumeration value="0014"/>
-    <enumeration value="0015"/>
-    <enumeration value="0016"/>
-    <enumeration value="0017"/>
-    <enumeration value="0018"/>
-    <enumeration value="0019"/>
-    <enumeration value="0020"/>
-    <enumeration value="0021"/>
-    <enumeration value="0022"/>
-    <enumeration value="0023"/>
-    <enumeration value="0024"/>
-    <enumeration value="0025"/>
-    <enumeration value="0026"/>
-    <enumeration value="0027"/>
-    <enumeration value="0028"/>
-    <enumeration value="0029"/>
-    <enumeration value="0030"/>
-    <enumeration value="0031"/>
-    <enumeration value="0032"/>
-    <enumeration value="0033"/>
-    <enumeration value="0034"/>
-    <enumeration value="0035"/>
-    <enumeration value="0036"/>
-    <enumeration value="0037"/>
-    <enumeration value="0038"/>
-    <enumeration value="0039"/>
-    <enumeration value="0040"/>
-    <enumeration value="0041"/>
-    <enumeration value="0042"/>
-    <enumeration value="0043"/>
-    <enumeration value="0044"/>
-    <enumeration value="0045"/>
-    <enumeration value="0046"/>
-    <enumeration value="0047"/>
-    <enumeration value="0048"/>
-    <enumeration value="0049"/>
-    <enumeration value="0050"/>
-    <enumeration value="0051"/>
-    <enumeration value="0052"/>
-    <enumeration value="0053"/>
-    <enumeration value="0054"/>
-    <enumeration value="0055"/>
-    <enumeration value="0056"/>
-    <enumeration value="0057"/>
-    <enumeration value="0058"/>
-    <enumeration value="0059"/>
-    <enumeration value="0060"/>
-    <enumeration value="0061"/>
-    <enumeration value="0062"/>
-    <enumeration value="0063"/>
-    <enumeration value="0064"/>
-    <enumeration value="0065"/>
-    <enumeration value="0066"/>
-    <enumeration value="0067"/>
-    <enumeration value="0068"/>
-    <enumeration value="0069"/>
-    <enumeration value="0070"/>
-    <enumeration value="0071"/>
-    <enumeration value="0072"/>
-    <enumeration value="0073"/>
-    <enumeration value="0074"/>
-    <enumeration value="0075"/>
-    <enumeration value="0076"/>
-    <enumeration value="0077"/>
-    <enumeration value="0078"/>
-    <enumeration value="0079"/>
-    <enumeration value="0080"/>
-    <enumeration value="0081"/>
-    <enumeration value="0082"/>
-    <enumeration value="0083"/>
-    <enumeration value="0084"/>
-    <enumeration value="0085"/>
-    <enumeration value="0086"/>
-    <enumeration value="0087"/>
-    <enumeration value="0088"/>
-    <enumeration value="0089"/>
-    <enumeration value="0090"/>
-    <enumeration value="0091"/>
-    <enumeration value="0093"/>
-    <enumeration value="0094"/>
-    <enumeration value="0095"/>
-    <enumeration value="0096"/>
-    <enumeration value="0097"/>
-    <enumeration value="0098"/>
-    <enumeration value="0099"/>
-    <enumeration value="0100"/>
-    <enumeration value="0101"/>
-    <enumeration value="0102"/>
-    <enumeration value="0104"/>
-    <enumeration value="0105"/>
-    <enumeration value="0106"/>
-    <enumeration value="0107"/>
-    <enumeration value="0108"/>
-    <enumeration value="0109"/>
-    <enumeration value="0110"/>
-    <enumeration value="0111"/>
-    <enumeration value="0112"/>
-    <enumeration value="0113"/>
-    <enumeration value="0114"/>
-    <enumeration value="0115"/>
-    <enumeration value="0116"/>
-    <enumeration value="0117"/>
-    <enumeration value="0118"/>
-    <enumeration value="0119"/>
-    <enumeration value="0120"/>
-    <enumeration value="0121"/>
-    <enumeration value="0122"/>
-    <enumeration value="0123"/>
-    <enumeration value="0124"/>
-    <enumeration value="0125"/>
-    <enumeration value="0126"/>
-    <enumeration value="0127"/>
-    <enumeration value="0128"/>
-    <enumeration value="0129"/>
-    <enumeration value="0130"/>
-    <enumeration value="0131"/>
-    <enumeration value="0132"/>
-    <enumeration value="0133"/>
-    <enumeration value="0134"/>
-    <enumeration value="0135"/>
-    <enumeration value="0136"/>
-    <enumeration value="0137"/>
-    <enumeration value="0138"/>
-    <enumeration value="0139"/>
-    <enumeration value="0140"/>
-    <enumeration value="0141"/>
-    <enumeration value="0142"/>
-    <enumeration value="0143"/>
-    <enumeration value="0144"/>
-    <enumeration value="0145"/>
-    <enumeration value="0146"/>
-    <enumeration value="0147"/>
-    <enumeration value="0148"/>
-    <enumeration value="0149"/>
-    <enumeration value="0150"/>
-    <enumeration value="0151"/>
-    <enumeration value="0152"/>
-    <enumeration value="0153"/>
-    <enumeration value="0154"/>
-    <enumeration value="0155"/>
-    <enumeration value="0156"/>
-    <enumeration value="0157"/>
-    <enumeration value="0158"/>
-    <enumeration value="0159"/>
-    <enumeration value="0160"/>
-    <enumeration value="0161"/>
-    <enumeration value="0162"/>
-    <enumeration value="0163"/>
-    <enumeration value="0164"/>
-    <enumeration value="0165"/>
-    <enumeration value="0166"/>
-    <enumeration value="0167"/>
-    <enumeration value="0168"/>
-    <enumeration value="0169"/>
-    <enumeration value="0170"/>
-    <enumeration value="0171"/>
-    <enumeration value="0172"/>
-    <enumeration value="0173"/>
-    <enumeration value="0174"/>
-    <enumeration value="0175"/>
-    <enumeration value="0176"/>
-    <enumeration value="0177"/>
-    <enumeration value="0178"/>
-    <enumeration value="0179"/>
-    <enumeration value="0180"/>
-    <enumeration value="0183"/>
-    <enumeration value="0184"/>
-    <enumeration value="0185"/>
-    <enumeration value="0186"/>
-    <enumeration value="0187"/>
-    <enumeration value="0188"/>
-    <enumeration value="0189"/>
-    <enumeration value="0190"/>
-    <enumeration value="0191"/>
-    <enumeration value="0192"/>
-    <enumeration value="0193"/>
-    <enumeration value="0194"/>
-    <enumeration value="0195"/>
-    <enumeration value="0196"/>
-    <enumeration value="0197"/>
-    <enumeration value="0198"/>
-    <enumeration value="0199"/>
-    <enumeration value="0200"/>
-    <enumeration value="0201"/>
-    <enumeration value="0202"/>
-    <enumeration value="0203"/>
-    <enumeration value="0204"/>
+    <enumeration value="AD"/>
+    <enumeration value="AE"/>
+    <enumeration value="AF"/>
+    <enumeration value="AG"/>
+    <enumeration value="AI"/>
+    <enumeration value="AL"/>
+    <enumeration value="AM"/>
+    <enumeration value="AO"/>
+    <enumeration value="AQ"/>
+    <enumeration value="AR"/>
+    <enumeration value="AS"/>
+    <enumeration value="AT"/>
+    <enumeration value="AU"/>
+    <enumeration value="AW"/>
+    <enumeration value="AX"/>
+    <enumeration value="AZ"/>
+    <enumeration value="BA"/>
+    <enumeration value="BB"/>
+    <enumeration value="BD"/>
+    <enumeration value="BE"/>
+    <enumeration value="BF"/>
+    <enumeration value="BG"/>
+    <enumeration value="BH"/>
+    <enumeration value="BI"/>
+    <enumeration value="BJ"/>
+    <enumeration value="BL"/>
+    <enumeration value="BM"/>
+    <enumeration value="BN"/>
+    <enumeration value="BO"/>
+    <enumeration value="BQ"/>
+    <enumeration value="BR"/>
+    <enumeration value="BS"/>
+    <enumeration value="BT"/>
+    <enumeration value="BV"/>
+    <enumeration value="BW"/>
+    <enumeration value="BY"/>
+    <enumeration value="BZ"/>
+    <enumeration value="CA"/>
+    <enumeration value="CC"/>
+    <enumeration value="CD"/>
+    <enumeration value="CF"/>
+    <enumeration value="CG"/>
+    <enumeration value="CH"/>
+    <enumeration value="CI"/>
+    <enumeration value="CK"/>
+    <enumeration value="CL"/>
+    <enumeration value="CM"/>
+    <enumeration value="CN"/>
+    <enumeration value="CO"/>
+    <enumeration value="CR"/>
+    <enumeration value="CU"/>
+    <enumeration value="CV"/>
+    <enumeration value="CW"/>
+    <enumeration value="CX"/>
+    <enumeration value="CY"/>
+    <enumeration value="CZ"/>
+    <enumeration value="DE"/>
+    <enumeration value="DJ"/>
+    <enumeration value="DK"/>
+    <enumeration value="DM"/>
+    <enumeration value="DO"/>
+    <enumeration value="DZ"/>
+    <enumeration value="EC"/>
+    <enumeration value="EE"/>
+    <enumeration value="EG"/>
+    <enumeration value="EH"/>
+    <enumeration value="ER"/>
+    <enumeration value="ES"/>
+    <enumeration value="ET"/>
+    <enumeration value="FI"/>
+    <enumeration value="FJ"/>
+    <enumeration value="FK"/>
+    <enumeration value="FM"/>
+    <enumeration value="FO"/>
+    <enumeration value="FR"/>
+    <enumeration value="GA"/>
+    <enumeration value="GB"/>
+    <enumeration value="GD"/>
+    <enumeration value="GE"/>
+    <enumeration value="GF"/>
+    <enumeration value="GG"/>
+    <enumeration value="GH"/>
+    <enumeration value="GI"/>
+    <enumeration value="GL"/>
+    <enumeration value="GM"/>
+    <enumeration value="GN"/>
+    <enumeration value="GP"/>
+    <enumeration value="GQ"/>
+    <enumeration value="GR"/>
+    <enumeration value="GS"/>
+    <enumeration value="GT"/>
+    <enumeration value="GU"/>
+    <enumeration value="GW"/>
+    <enumeration value="GY"/>
+    <enumeration value="HK"/>
+    <enumeration value="HM"/>
+    <enumeration value="HN"/>
+    <enumeration value="HR"/>
+    <enumeration value="HT"/>
+    <enumeration value="HU"/>
+    <enumeration value="ID"/>
+    <enumeration value="IE"/>
+    <enumeration value="IL"/>
+    <enumeration value="IM"/>
+    <enumeration value="IN"/>
+    <enumeration value="IO"/>
+    <enumeration value="IQ"/>
+    <enumeration value="IR"/>
+    <enumeration value="IS"/>
+    <enumeration value="IT"/>
+    <enumeration value="JE"/>
+    <enumeration value="JM"/>
+    <enumeration value="JO"/>
+    <enumeration value="JP"/>
+    <enumeration value="KE"/>
+    <enumeration value="KG"/>
+    <enumeration value="KH"/>
+    <enumeration value="KI"/>
+    <enumeration value="KM"/>
+    <enumeration value="KN"/>
+    <enumeration value="KP"/>
+    <enumeration value="KR"/>
+    <enumeration value="KW"/>
+    <enumeration value="KY"/>
+    <enumeration value="KZ"/>
+    <enumeration value="LA"/>
+    <enumeration value="LB"/>
+    <enumeration value="LC"/>
+    <enumeration value="LI"/>
+    <enumeration value="LK"/>
+    <enumeration value="LR"/>
+    <enumeration value="LS"/>
+    <enumeration value="LT"/>
+    <enumeration value="LU"/>
+    <enumeration value="LV"/>
+    <enumeration value="LY"/>
+    <enumeration value="MA"/>
+    <enumeration value="MC"/>
+    <enumeration value="MD"/>
+    <enumeration value="ME"/>
+    <enumeration value="MF"/>
+    <enumeration value="MG"/>
+    <enumeration value="MH"/>
+    <enumeration value="MK"/>
+    <enumeration value="ML"/>
+    <enumeration value="MM"/>
+    <enumeration value="MN"/>
+    <enumeration value="MO"/>
+    <enumeration value="MP"/>
+    <enumeration value="MQ"/>
+    <enumeration value="MR"/>
+    <enumeration value="MS"/>
+    <enumeration value="MT"/>
+    <enumeration value="MU"/>
+    <enumeration value="MV"/>
+    <enumeration value="MW"/>
+    <enumeration value="MX"/>
+    <enumeration value="MY"/>
+    <enumeration value="MZ"/>
+    <enumeration value="NA"/>
+    <enumeration value="NC"/>
+    <enumeration value="NE"/>
+    <enumeration value="NF"/>
+    <enumeration value="NG"/>
+    <enumeration value="NI"/>
+    <enumeration value="NL"/>
+    <enumeration value="NO"/>
+    <enumeration value="NP"/>
+    <enumeration value="NR"/>
+    <enumeration value="NU"/>
+    <enumeration value="NZ"/>
+    <enumeration value="OM"/>
+    <enumeration value="PA"/>
+    <enumeration value="PE"/>
+    <enumeration value="PF"/>
+    <enumeration value="PG"/>
+    <enumeration value="PH"/>
+    <enumeration value="PK"/>
+    <enumeration value="PL"/>
+    <enumeration value="PM"/>
+    <enumeration value="PN"/>
+    <enumeration value="PR"/>
+    <enumeration value="PS"/>
+    <enumeration value="PT"/>
+    <enumeration value="PW"/>
+    <enumeration value="PY"/>
+    <enumeration value="QA"/>
+    <enumeration value="RE"/>
+    <enumeration value="RO"/>
+    <enumeration value="RS"/>
+    <enumeration value="RU"/>
+    <enumeration value="RW"/>
+    <enumeration value="SA"/>
+    <enumeration value="SB"/>
+    <enumeration value="SC"/>
+    <enumeration value="SD"/>
+    <enumeration value="SE"/>
+    <enumeration value="SG"/>
+    <enumeration value="SH"/>
+    <enumeration value="SI"/>
+    <enumeration value="SJ"/>
+    <enumeration value="SK"/>
+    <enumeration value="SL"/>
+    <enumeration value="SM"/>
+    <enumeration value="SN"/>
+    <enumeration value="SO"/>
+    <enumeration value="SR"/>
+    <enumeration value="SS"/>
+    <enumeration value="ST"/>
+    <enumeration value="SV"/>
+    <enumeration value="SX"/>
+    <enumeration value="SY"/>
+    <enumeration value="SZ"/>
+    <enumeration value="TC"/>
+    <enumeration value="TD"/>
+    <enumeration value="TF"/>
+    <enumeration value="TG"/>
+    <enumeration value="TH"/>
+    <enumeration value="TJ"/>
+    <enumeration value="TK"/>
+    <enumeration value="TL"/>
+    <enumeration value="TM"/>
+    <enumeration value="TN"/>
+    <enumeration value="TO"/>
+    <enumeration value="TR"/>
+    <enumeration value="TT"/>
+    <enumeration value="TV"/>
+    <enumeration value="TW"/>
+    <enumeration value="TZ"/>
+    <enumeration value="UA"/>
+    <enumeration value="UG"/>
+    <enumeration value="UM"/>
+    <enumeration value="US"/>
+    <enumeration value="UY"/>
+    <enumeration value="UZ"/>
+    <enumeration value="VA"/>
+    <enumeration value="VC"/>
+    <enumeration value="VE"/>
+    <enumeration value="VG"/>
+    <enumeration value="VI"/>
+    <enumeration value="VN"/>
+    <enumeration value="VU"/>
+    <enumeration value="WF"/>
+    <enumeration value="WS"/>
+    <enumeration value="YE"/>
+    <enumeration value="YT"/>
+    <enumeration value="ZA"/>
+    <enumeration value="ZM"/>
+    <enumeration value="ZW"/>
+    <enumeration value="1A"/>
+    <enumeration value="XI"/>
   </cl>
   <cl id="6">
@@ -584,5 +674,186 @@
     <enumeration value="SGD"/>
     <enumeration value="SHP"/>
-    <enumeration value="SLL"/>
+    <enumeration value="SLE"/>
+    <enumeration value="SOS"/>
+    <enumeration value="SRD"/>
+    <enumeration value="SSP"/>
+    <enumeration value="STN"/>
+    <enumeration value="SVC"/>
+    <enumeration value="SYP"/>
+    <enumeration value="SZL"/>
+    <enumeration value="THB"/>
+    <enumeration value="TJS"/>
+    <enumeration value="TMT"/>
+    <enumeration value="TND"/>
+    <enumeration value="TOP"/>
+    <enumeration value="TRY"/>
+    <enumeration value="TTD"/>
+    <enumeration value="TWD"/>
+    <enumeration value="TZS"/>
+    <enumeration value="UAH"/>
+    <enumeration value="UGX"/>
+    <enumeration value="USD"/>
+    <enumeration value="USN"/>
+    <enumeration value="UYI"/>
+    <enumeration value="UYU"/>
+    <enumeration value="UYW"/>
+    <enumeration value="UZS"/>
+    <enumeration value="VES"/>
+    <enumeration value="VND"/>
+    <enumeration value="VUV"/>
+    <enumeration value="WST"/>
+    <enumeration value="XAF"/>
+    <enumeration value="XAG"/>
+    <enumeration value="XAU"/>
+    <enumeration value="XBA"/>
+    <enumeration value="XBB"/>
+    <enumeration value="XBC"/>
+    <enumeration value="XBD"/>
+    <enumeration value="XCD"/>
+    <enumeration value="XDR"/>
+    <enumeration value="XOF"/>
+    <enumeration value="XPD"/>
+    <enumeration value="XPF"/>
+    <enumeration value="XPT"/>
+    <enumeration value="XSU"/>
+    <enumeration value="XTS"/>
+    <enumeration value="XUA"/>
+    <enumeration value="XXX"/>
+    <enumeration value="YER"/>
+    <enumeration value="ZAR"/>
+    <enumeration value="ZMW"/>
+    <enumeration value="ZWL"/>
+  </cl>
+  <cl id="7">
+    <enumeration value="AED"/>
+    <enumeration value="AFN"/>
+    <enumeration value="ALL"/>
+    <enumeration value="AMD"/>
+    <enumeration value="ANG"/>
+    <enumeration value="AOA"/>
+    <enumeration value="ARS"/>
+    <enumeration value="AUD"/>
+    <enumeration value="AWG"/>
+    <enumeration value="AZN"/>
+    <enumeration value="BAM"/>
+    <enumeration value="BBD"/>
+    <enumeration value="BDT"/>
+    <enumeration value="BGN"/>
+    <enumeration value="BHD"/>
+    <enumeration value="BIF"/>
+    <enumeration value="BMD"/>
+    <enumeration value="BND"/>
+    <enumeration value="BOB"/>
+    <enumeration value="BOV"/>
+    <enumeration value="BRL"/>
+    <enumeration value="BSD"/>
+    <enumeration value="BTN"/>
+    <enumeration value="BWP"/>
+    <enumeration value="BYN"/>
+    <enumeration value="BZD"/>
+    <enumeration value="CAD"/>
+    <enumeration value="CDF"/>
+    <enumeration value="CHE"/>
+    <enumeration value="CHF"/>
+    <enumeration value="CHW"/>
+    <enumeration value="CLF"/>
+    <enumeration value="CLP"/>
+    <enumeration value="CNY"/>
+    <enumeration value="COP"/>
+    <enumeration value="COU"/>
+    <enumeration value="CRC"/>
+    <enumeration value="CUC"/>
+    <enumeration value="CUP"/>
+    <enumeration value="CVE"/>
+    <enumeration value="CZK"/>
+    <enumeration value="DJF"/>
+    <enumeration value="DKK"/>
+    <enumeration value="DOP"/>
+    <enumeration value="DZD"/>
+    <enumeration value="EGP"/>
+    <enumeration value="ERN"/>
+    <enumeration value="ETB"/>
+    <enumeration value="EUR"/>
+    <enumeration value="FJD"/>
+    <enumeration value="FKP"/>
+    <enumeration value="GBP"/>
+    <enumeration value="GEL"/>
+    <enumeration value="GHS"/>
+    <enumeration value="GIP"/>
+    <enumeration value="GMD"/>
+    <enumeration value="GNF"/>
+    <enumeration value="GTQ"/>
+    <enumeration value="GYD"/>
+    <enumeration value="HKD"/>
+    <enumeration value="HNL"/>
+    <enumeration value="HRK"/>
+    <enumeration value="HTG"/>
+    <enumeration value="HUF"/>
+    <enumeration value="IDR"/>
+    <enumeration value="ILS"/>
+    <enumeration value="INR"/>
+    <enumeration value="IQD"/>
+    <enumeration value="IRR"/>
+    <enumeration value="ISK"/>
+    <enumeration value="JMD"/>
+    <enumeration value="JOD"/>
+    <enumeration value="JPY"/>
+    <enumeration value="KES"/>
+    <enumeration value="KGS"/>
+    <enumeration value="KHR"/>
+    <enumeration value="KMF"/>
+    <enumeration value="KPW"/>
+    <enumeration value="KRW"/>
+    <enumeration value="KWD"/>
+    <enumeration value="KYD"/>
+    <enumeration value="KZT"/>
+    <enumeration value="LAK"/>
+    <enumeration value="LBP"/>
+    <enumeration value="LKR"/>
+    <enumeration value="LRD"/>
+    <enumeration value="LSL"/>
+    <enumeration value="LYD"/>
+    <enumeration value="MAD"/>
+    <enumeration value="MDL"/>
+    <enumeration value="MGA"/>
+    <enumeration value="MKD"/>
+    <enumeration value="MMK"/>
+    <enumeration value="MNT"/>
+    <enumeration value="MOP"/>
+    <enumeration value="MRU"/>
+    <enumeration value="MUR"/>
+    <enumeration value="MVR"/>
+    <enumeration value="MWK"/>
+    <enumeration value="MXN"/>
+    <enumeration value="MXV"/>
+    <enumeration value="MYR"/>
+    <enumeration value="MZN"/>
+    <enumeration value="NAD"/>
+    <enumeration value="NGN"/>
+    <enumeration value="NIO"/>
+    <enumeration value="NOK"/>
+    <enumeration value="NPR"/>
+    <enumeration value="NZD"/>
+    <enumeration value="OMR"/>
+    <enumeration value="PAB"/>
+    <enumeration value="PEN"/>
+    <enumeration value="PGK"/>
+    <enumeration value="PHP"/>
+    <enumeration value="PKR"/>
+    <enumeration value="PLN"/>
+    <enumeration value="PYG"/>
+    <enumeration value="QAR"/>
+    <enumeration value="RON"/>
+    <enumeration value="RSD"/>
+    <enumeration value="RUB"/>
+    <enumeration value="RWF"/>
+    <enumeration value="SAR"/>
+    <enumeration value="SBD"/>
+    <enumeration value="SCR"/>
+    <enumeration value="SDG"/>
+    <enumeration value="SEK"/>
+    <enumeration value="SGD"/>
+    <enumeration value="SHP"/>
+    <enumeration value="SLE"/>
     <enumeration value="SOS"/>
     <enumeration value="SRD"/>
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/AdvancePaymentType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/AdvancePaymentType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/AdvancePaymentType.yml	(revision 8504)
@@ -16,2 +16,5 @@
             -
                 Valid: null
+        invoiceSpecifiedReferencedDocument:
+            -
+                Valid: null
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/LineTradeAgreementType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/LineTradeAgreementType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/LineTradeAgreementType.yml	(revision 8504)
@@ -1,4 +1,7 @@
 horstoeko\zugferd\entities\extended\ram\LineTradeAgreementType:
     properties:
+        sellerOrderReferencedDocument:
+            -
+                Valid: null
         buyerOrderReferencedDocument:
             -
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/LogisticsServiceChargeType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/LogisticsServiceChargeType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/LogisticsServiceChargeType.yml	(revision 8504)
@@ -13,3 +13,7 @@
         appliedTradeTax:
             -
+                NotNull:
+                    groups:
+                        - xsd_rules
+            -
                 Valid: null
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/TradeTaxType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/TradeTaxType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/validation/extended/ram/TradeTaxType.yml	(revision 8504)
@@ -1,4 +1,9 @@
 horstoeko\zugferd\entities\extended\ram\TradeTaxType:
     properties:
+        typeCode:
+            -
+                NotNull:
+                    groups:
+                        - xsd_rules
         categoryCode:
             -
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basic/ram/HeaderTradeSettlementType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basic/ram/HeaderTradeSettlementType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basic/ram/HeaderTradeSettlementType.yml	(revision 8504)
@@ -66,5 +66,9 @@
                 getter: getSpecifiedTradeSettlementPaymentMeans
                 setter: setSpecifiedTradeSettlementPaymentMeans
-            type: horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType
+            xml_list:
+                inline: true
+                entry_name: SpecifiedTradeSettlementPaymentMeans
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            type: array<horstoeko\zugferd\entities\basic\ram\TradeSettlementPaymentMeansType>
         applicableTradeTax:
             expose: true
@@ -140,5 +144,9 @@
                 getter: getInvoiceReferencedDocument
                 setter: setInvoiceReferencedDocument
-            type: horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType
+            xml_list:
+                inline: true
+                entry_name: InvoiceReferencedDocument
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            type: array<horstoeko\zugferd\entities\basic\ram\ReferencedDocumentType>
         receivableSpecifiedTradeAccountingAccount:
             expose: true
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basic/rsm/CrossIndustryInvoice.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basic/rsm/CrossIndustryInvoice.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basic/rsm/CrossIndustryInvoice.yml	(revision 8504)
@@ -3,7 +3,6 @@
     xml_root_namespace: 'urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'
     xml_namespaces:
-        a: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         rsm: urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
-        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:10
+        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         ram: urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100
         xs: http://www.w3.org/2001/XMLSchema
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basic/rsm/CrossIndustryInvoiceType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basic/rsm/CrossIndustryInvoiceType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basic/rsm/CrossIndustryInvoiceType.yml	(revision 8504)
@@ -1,7 +1,6 @@
 horstoeko\zugferd\entities\basic\rsm\CrossIndustryInvoiceType:
     xml_namespaces:
-        a: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         rsm: urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
-        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:10
+        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         ram: urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100
         xs: http://www.w3.org/2001/XMLSchema
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basicwl/ram/HeaderTradeSettlementType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basicwl/ram/HeaderTradeSettlementType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basicwl/ram/HeaderTradeSettlementType.yml	(revision 8504)
@@ -66,5 +66,9 @@
                 getter: getSpecifiedTradeSettlementPaymentMeans
                 setter: setSpecifiedTradeSettlementPaymentMeans
-            type: horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType
+            xml_list:
+                inline: true
+                entry_name: SpecifiedTradeSettlementPaymentMeans
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            type: array<horstoeko\zugferd\entities\basicwl\ram\TradeSettlementPaymentMeansType>
         applicableTradeTax:
             expose: true
@@ -140,5 +144,9 @@
                 getter: getInvoiceReferencedDocument
                 setter: setInvoiceReferencedDocument
-            type: horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType
+            xml_list:
+                inline: true
+                entry_name: InvoiceReferencedDocument
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            type: array<horstoeko\zugferd\entities\basicwl\ram\ReferencedDocumentType>
         receivableSpecifiedTradeAccountingAccount:
             expose: true
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basicwl/rsm/CrossIndustryInvoice.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basicwl/rsm/CrossIndustryInvoice.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basicwl/rsm/CrossIndustryInvoice.yml	(revision 8504)
@@ -3,7 +3,6 @@
     xml_root_namespace: 'urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'
     xml_namespaces:
-        a: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         rsm: urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
-        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:10
+        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         ram: urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100
         xs: http://www.w3.org/2001/XMLSchema
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basicwl/rsm/CrossIndustryInvoiceType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basicwl/rsm/CrossIndustryInvoiceType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/basicwl/rsm/CrossIndustryInvoiceType.yml	(revision 8504)
@@ -1,7 +1,6 @@
 horstoeko\zugferd\entities\basicwl\rsm\CrossIndustryInvoiceType:
     xml_namespaces:
-        a: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         rsm: urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
-        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:10
+        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         ram: urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100
         xs: http://www.w3.org/2001/XMLSchema
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/en16931/ram/HeaderTradeSettlementType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/en16931/ram/HeaderTradeSettlementType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/en16931/ram/HeaderTradeSettlementType.yml	(revision 8504)
@@ -66,5 +66,9 @@
                 getter: getSpecifiedTradeSettlementPaymentMeans
                 setter: setSpecifiedTradeSettlementPaymentMeans
-            type: horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType
+            xml_list:
+                inline: true
+                entry_name: SpecifiedTradeSettlementPaymentMeans
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            type: array<horstoeko\zugferd\entities\en16931\ram\TradeSettlementPaymentMeansType>
         applicableTradeTax:
             expose: true
@@ -140,5 +144,9 @@
                 getter: getInvoiceReferencedDocument
                 setter: setInvoiceReferencedDocument
-            type: horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType
+            xml_list:
+                inline: true
+                entry_name: InvoiceReferencedDocument
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            type: array<horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType>
         receivableSpecifiedTradeAccountingAccount:
             expose: true
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/en16931/rsm/CrossIndustryInvoice.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/en16931/rsm/CrossIndustryInvoice.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/en16931/rsm/CrossIndustryInvoice.yml	(revision 8504)
@@ -3,7 +3,6 @@
     xml_root_namespace: 'urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'
     xml_namespaces:
-        a: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         rsm: urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
-        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:10
+        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         ram: urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100
         xs: http://www.w3.org/2001/XMLSchema
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/en16931/rsm/CrossIndustryInvoiceType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/en16931/rsm/CrossIndustryInvoiceType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/en16931/rsm/CrossIndustryInvoiceType.yml	(revision 8504)
@@ -1,7 +1,6 @@
 horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoiceType:
     xml_namespaces:
-        a: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         rsm: urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
-        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:10
+        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         ram: urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100
         xs: http://www.w3.org/2001/XMLSchema
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/AdvancePaymentType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/AdvancePaymentType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/AdvancePaymentType.yml	(revision 8504)
@@ -38,2 +38,13 @@
                 namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
             type: array<horstoeko\zugferd\entities\extended\ram\TradeTaxType>
+        invoiceSpecifiedReferencedDocument:
+            expose: true
+            access_type: public_method
+            serialized_name: InvoiceSpecifiedReferencedDocument
+            xml_element:
+                cdata: false
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            accessor:
+                getter: getInvoiceSpecifiedReferencedDocument
+                setter: setInvoiceSpecifiedReferencedDocument
+            type: horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/ExchangedDocumentType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/ExchangedDocumentType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/ExchangedDocumentType.yml	(revision 8504)
@@ -66,9 +66,5 @@
                 getter: getLanguageID
                 setter: setLanguageID
-            xml_list:
-                inline: true
-                entry_name: LanguageID
-                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
-            type: array<horstoeko\zugferd\entities\extended\udt\IDType>
+            type: horstoeko\zugferd\entities\extended\udt\IDType
         includedNote:
             expose: true
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/HeaderTradeSettlementType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/HeaderTradeSettlementType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/HeaderTradeSettlementType.yml	(revision 8504)
@@ -218,5 +218,9 @@
                 getter: getInvoiceReferencedDocument
                 setter: setInvoiceReferencedDocument
-            type: horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType
+            xml_list:
+                inline: true
+                entry_name: InvoiceReferencedDocument
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            type: array<horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType>
         receivableSpecifiedTradeAccountingAccount:
             expose: true
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/LineTradeAgreementType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/LineTradeAgreementType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/LineTradeAgreementType.yml	(revision 8504)
@@ -1,4 +1,15 @@
 horstoeko\zugferd\entities\extended\ram\LineTradeAgreementType:
     properties:
+        sellerOrderReferencedDocument:
+            expose: true
+            access_type: public_method
+            serialized_name: SellerOrderReferencedDocument
+            xml_element:
+                cdata: false
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            accessor:
+                getter: getSellerOrderReferencedDocument
+                setter: setSellerOrderReferencedDocument
+            type: horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType
         buyerOrderReferencedDocument:
             expose: true
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/ReferencedDocumentType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/ReferencedDocumentType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/ReferencedDocumentType.yml	(revision 8504)
@@ -55,9 +55,5 @@
                 getter: getName
                 setter: setName
-            xml_list:
-                inline: true
-                entry_name: Name
-                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
-            type: array<horstoeko\zugferd\entities\extended\udt\TextType>
+            type: horstoeko\zugferd\entities\extended\udt\TextType
         attachmentBinaryObject:
             expose: true
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/TradeAddressType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/TradeAddressType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/TradeAddressType.yml	(revision 8504)
@@ -77,7 +77,3 @@
                 getter: getCountrySubDivisionName
                 setter: setCountrySubDivisionName
-            xml_list:
-                inline: true
-                entry_name: CountrySubDivisionName
-                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
-            type: array<horstoeko\zugferd\entities\extended\udt\TextType>
+            type: horstoeko\zugferd\entities\extended\udt\TextType
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/TradeProductType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/TradeProductType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/TradeProductType.yml	(revision 8504)
@@ -45,4 +45,26 @@
                 setter: setBuyerAssignedID
             type: horstoeko\zugferd\entities\extended\udt\IDType
+        industryAssignedID:
+            expose: true
+            access_type: public_method
+            serialized_name: IndustryAssignedID
+            xml_element:
+                cdata: false
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            accessor:
+                getter: getIndustryAssignedID
+                setter: setIndustryAssignedID
+            type: horstoeko\zugferd\entities\extended\udt\IDType
+        modelID:
+            expose: true
+            access_type: public_method
+            serialized_name: ModelID
+            xml_element:
+                cdata: false
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            accessor:
+                getter: getModelID
+                setter: setModelID
+            type: horstoeko\zugferd\entities\extended\udt\IDType
         name:
             expose: true
@@ -66,4 +88,41 @@
                 getter: getDescription
                 setter: setDescription
+            type: horstoeko\zugferd\entities\extended\udt\TextType
+        batchID:
+            expose: true
+            access_type: public_method
+            serialized_name: BatchID
+            xml_element:
+                cdata: false
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            accessor:
+                getter: getBatchID
+                setter: setBatchID
+            xml_list:
+                inline: true
+                entry_name: BatchID
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            type: array<horstoeko\zugferd\entities\extended\udt\IDType>
+        brandName:
+            expose: true
+            access_type: public_method
+            serialized_name: BrandName
+            xml_element:
+                cdata: false
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            accessor:
+                getter: getBrandName
+                setter: setBrandName
+            type: horstoeko\zugferd\entities\extended\udt\TextType
+        modelName:
+            expose: true
+            access_type: public_method
+            serialized_name: ModelName
+            xml_element:
+                cdata: false
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            accessor:
+                getter: getModelName
+                setter: setModelName
             type: horstoeko\zugferd\entities\extended\udt\TextType
         applicableProductCharacteristic:
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/TradeSettlementHeaderMonetarySummationType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/TradeSettlementHeaderMonetarySummationType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/ram/TradeSettlementHeaderMonetarySummationType.yml	(revision 8504)
@@ -44,9 +44,5 @@
                 getter: getTaxBasisTotalAmount
                 setter: setTaxBasisTotalAmount
-            xml_list:
-                inline: true
-                entry_name: TaxBasisTotalAmount
-                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
-            type: array<horstoeko\zugferd\entities\extended\udt\AmountType>
+            type: horstoeko\zugferd\entities\extended\udt\AmountType
         taxTotalAmount:
             expose: true
@@ -85,9 +81,5 @@
                 getter: getGrandTotalAmount
                 setter: setGrandTotalAmount
-            xml_list:
-                inline: true
-                entry_name: GrandTotalAmount
-                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
-            type: array<horstoeko\zugferd\entities\extended\udt\AmountType>
+            type: horstoeko\zugferd\entities\extended\udt\AmountType
         totalPrepaidAmount:
             expose: true
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/rsm/CrossIndustryInvoice.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/rsm/CrossIndustryInvoice.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/rsm/CrossIndustryInvoice.yml	(revision 8504)
@@ -3,7 +3,6 @@
     xml_root_namespace: 'urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'
     xml_namespaces:
-        a: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         rsm: urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
-        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:10
+        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         ram: urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100
         xs: http://www.w3.org/2001/XMLSchema
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/rsm/CrossIndustryInvoiceType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/rsm/CrossIndustryInvoiceType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/extended/rsm/CrossIndustryInvoiceType.yml	(revision 8504)
@@ -1,7 +1,6 @@
 horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoiceType:
     xml_namespaces:
-        a: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         rsm: urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
-        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:10
+        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         ram: urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100
         xs: http://www.w3.org/2001/XMLSchema
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/minimum/ram/TradeSettlementHeaderMonetarySummationType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/minimum/ram/TradeSettlementHeaderMonetarySummationType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/minimum/ram/TradeSettlementHeaderMonetarySummationType.yml	(revision 8504)
@@ -22,5 +22,9 @@
                 getter: getTaxTotalAmount
                 setter: setTaxTotalAmount
-            type: horstoeko\zugferd\entities\minimum\udt\AmountType
+            xml_list:
+                inline: true
+                entry_name: TaxTotalAmount
+                namespace: 'urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100'
+            type: array<horstoeko\zugferd\entities\minimum\udt\AmountType>
         grandTotalAmount:
             expose: true
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/minimum/rsm/CrossIndustryInvoice.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/minimum/rsm/CrossIndustryInvoice.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/minimum/rsm/CrossIndustryInvoice.yml	(revision 8504)
@@ -3,7 +3,6 @@
     xml_root_namespace: 'urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100'
     xml_namespaces:
-        a: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         rsm: urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
-        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:10
+        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         ram: urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100
         xs: http://www.w3.org/2001/XMLSchema
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/minimum/rsm/CrossIndustryInvoiceType.yml
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/minimum/rsm/CrossIndustryInvoiceType.yml	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/src/yaml/minimum/rsm/CrossIndustryInvoiceType.yml	(revision 8504)
@@ -1,7 +1,6 @@
 horstoeko\zugferd\entities\minimum\rsm\CrossIndustryInvoiceType:
     xml_namespaces:
-        a: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         rsm: urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100
-        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:10
+        qdt: urn:un:unece:uncefact:data:standard:QualifiedDataType:100
         ram: urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100
         xs: http://www.w3.org/2001/XMLSchema
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/TestCase.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/TestCase.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/TestCase.php	(revision 8504)
@@ -6,8 +6,40 @@
 use ReflectionMethod;
 use ReflectionProperty;
-use \PHPUnit\Framework\TestCase as PhpUnitTestCase;
+use PHPUnit\Framework\TestCase as PhpUnitTestCase;
 
 class TestCase extends PhpUnitTestCase
 {
+    /**
+     * Registered files
+     *
+     * @var array<string>
+     */
+
+    private $registeredFiles = [];
+
+    /**
+     * @inheritDoc
+     */
+    protected function setUp(): void
+    {
+        parent::setUp();
+
+        $this->registeredFiles = [];
+    }
+
+    /**
+     * @inheritDoc
+     */
+    protected function tearDown(): void
+    {
+        foreach ($this->registeredFiles as $registeredFile) {
+            if (file_exists($registeredFile)) {
+                @unlink($registeredFile);
+            }
+        }
+
+        parent::tearDown();
+    }
+
     /**
      * Expect notice on php version smaller than 8
@@ -34,5 +66,5 @@
     {
         set_error_handler(
-            static function (int $errno, string $errstr): never {
+            static function (int $errno, string $errstr): void {
                 throw new \Exception($errstr, $errno);
             },
@@ -106,3 +138,28 @@
         return $method;
     }
+
+    /**
+     * Access to private method and invoke it
+     *
+     * @param  object $object
+     * @param  string $methodName
+     * @param  array  $args
+     * @return mixed
+     */
+    public function invokePrivateMethodFromObject($object, string $methodName, ...$args)
+    {
+        $method = $this->getPrivateMethodFromObject($object, $methodName);
+        return $method->invoke($object, ...$args);
+    }
+
+    /**
+     * Register a file for teardown
+     *
+     * @param  string $filename
+     * @return void
+     */
+    protected function registerFileForTeardown(string $filename): void
+    {
+        $this->registeredFiles[] = $filename;
+    }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/BuilderEn16931Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/BuilderEn16931Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/BuilderEn16931Test.php	(revision 8504)
@@ -4,8 +4,8 @@
 
 use DateTime;
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\tests\traits\HandlesXmlTests;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentBuilder;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\tests\traits\HandlesXmlTests;
+use horstoeko\zugferd\ZugferdProfiles;
+use horstoeko\zugferd\ZugferdDocumentBuilder;
 
 class BuilderEn16931Test extends TestCase
@@ -26,15 +26,12 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getInvoiceObject
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getSerializer
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getObjectHelper
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getProfileDefinitionParameter
-     */
     public function testDocumentGetters(): void
     {
-        $this->assertNotNull(self::$document->getInvoiceObject());
-        $this->assertNotNull(self::$document->getSerializer());
-        $this->assertNotNull(self::$document->getObjectHelper());
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertInstanceOf(\JMS\Serializer\Serializer::class, $this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
+        $this->assertInstanceOf('horstoeko\zugferd\ZugferdObjectHelper', $this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
         $this->assertEquals('en16931', self::$document->getProfileDefinitionParameter('name'));
         $this->assertEquals('EN 16931 (COMFORT)', self::$document->getProfileDefinitionParameter('altname'));
@@ -42,4 +39,5 @@
         $this->assertEquals('factur-x.xml', self::$document->getProfileDefinitionParameter('attachmentfilename'));
         $this->assertEquals('EN 16931', self::$document->getProfileDefinitionParameter('xmpname'));
+        $this->assertEquals('1.0', self::$document->getProfileDefinitionParameter('xmpversion'));
         $this->expectNoticeOrWarningExt(
             function () {
@@ -60,7 +58,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInformation
-     */
     public function testSetDocumentInformation(): void
     {
@@ -74,7 +69,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBusinessProcess
-     */
     public function testSetDocumentBusinessProcess(): void
     {
@@ -91,7 +83,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentGeneralPaymentInformation
-     */
     public function testSetDocumentGeneralPaymentInformation(): void
     {
@@ -103,8 +92,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setIsDocumentCopy
-     * @covers \horstoeko\zugferd\jms\ZugferdTypesHandler::serializeIndicatorType
-     */
     public function testSetIsDocumentCopy(): void
     {
@@ -115,8 +100,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setIsTestDocument
-     * @covers \horstoeko\zugferd\jms\ZugferdTypesHandler::serializeIndicatorType
-     */
     public function testSetIsTestDocument(): void
     {
@@ -127,7 +108,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentNote
-     */
     public function testAddDocumentNote(): void
     {
@@ -141,7 +119,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSupplyChainEvent
-     */
     public function testSetDocumentSupplyChainEvent(): void
     {
@@ -152,7 +127,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerReference
-     */
     public function testSetDocumentBuyerReference(): void
     {
@@ -163,7 +135,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSeller
-     */
     public function testSetDocumentSeller(): void
     {
@@ -187,7 +156,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerId
-     */
     public function testAddDocumentSellerId(): void
     {
@@ -202,7 +168,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerGlobalId
-     */
     public function testAddDocumentSellerGlobalId(): void
     {
@@ -213,7 +176,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRegistration
-     */
     public function testAddDocumentSellerTaxRegistration(): void
     {
@@ -226,16 +186,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerAddress
-     */
     public function testSetDocumentSellerAddress(): void
     {
-        (self::$document)->setDocumentSellerAddress("LieferantenstraÃe 20", "", "", "80333", "MÃŒnchen", "DE");
+        (self::$document)->setDocumentSellerAddress("LieferantenstraÃe 20", "Haus A", "Aufgang B", "80333", "MÃŒnchen", "DE");
 
         $this->disableRenderXmlContent();
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode', "80333");
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne', "LieferantenstraÃe 20");
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo');
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree');
+        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo', "Haus A");
+        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree', "Aufgang B");
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName', "MÃŒnchen");
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID', "DE");
@@ -243,7 +200,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerLegalOrganisation
-     */
     public function testSetDocumentSellerLegalOrganisation(): void
     {
@@ -255,7 +209,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerContact
-     */
     public function testSetDocumentSellerContact(): void
     {
@@ -295,7 +246,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerContact
-     */
     public function testAddDocumentSellerContact(): void
     {
@@ -326,7 +274,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerCommunication
-     */
     public function testSetDocumentSellerCommunication(): void
     {
@@ -338,7 +283,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyer
-     */
     public function testSetDocumentBuyer(): void
     {
@@ -350,7 +292,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerId
-     */
     public function testAddDocumentBuyerId(): void
     {
@@ -365,7 +304,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerGlobalId
-     */
     public function testAddDocumentBuyerGlobalId(): void
     {
@@ -376,7 +312,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerTaxRegistration
-     */
     public function testAddDocumentBuyerTaxRegistration(): void
     {
@@ -389,7 +322,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerAddress
-     */
     public function testSetDocumentBuyerAddress(): void
     {
@@ -406,7 +336,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerLegalOrganisation
-     */
     public function testSetDocumentBuyerLegalOrganisation(): void
     {
@@ -418,7 +345,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerContact
-     */
     public function testSetDocumentBuyerContact(): void
     {
@@ -440,7 +364,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerContact
-     */
     public function testAddDocumentBuyerContact(): void
     {
@@ -469,7 +390,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerCommunication
-     */
     public function testSetDocumentBuyerCommunication(): void
     {
@@ -481,7 +399,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeTradeParty
-     */
     public function testSetDocumentSellerTaxRepresentativeTradeParty(): void
     {
@@ -493,7 +408,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRepresentativeGlobalId
-     */
     public function testAddDocumentSellerTaxRepresentativeGlobalId(): void
     {
@@ -504,7 +416,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRepresentativeTaxRegistration
-     */
     public function testAddDocumentSellerTaxRepresentativeTaxRegistration(): void
     {
@@ -517,7 +426,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeAddress
-     */
     public function testSetDocumentSellerTaxRepresentativeAddress(): void
     {
@@ -534,7 +440,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeLegalOrganisation
-     */
     public function testSetDocumentSellerTaxRepresentativeLegalOrganisation(): void
     {
@@ -546,7 +449,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeContact
-     */
     public function testSetDocumentSellerTaxRepresentativeContact(): void
     {
@@ -568,7 +468,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRepresentativeContact
-     */
     public function testAddDocumentSellerTaxRepresentativeContact(): void
     {
@@ -597,7 +494,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUser
-     */
     public function testSetDocumentProductEndUser(): void
     {
@@ -609,7 +503,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentProductEndUserGlobalId
-     */
     public function testAddDocumentProductEndUserGlobalId(): void
     {
@@ -620,7 +511,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentProductEndUserTaxRegistration
-     */
     public function testAddDocumentProductEndUserTaxRegistration(): void
     {
@@ -633,7 +521,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUserAddress
-     */
     public function testSetDocumentProductEndUserAddress(): void
     {
@@ -650,7 +535,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUserLegalOrganisation
-     */
     public function testSetDocumentProductEndUserLegalOrganisation(): void
     {
@@ -662,7 +544,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUserContact
-     */
     public function testSetDocumentProductEndUserContact(): void
     {
@@ -684,7 +563,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentProductEndUserContact
-     */
     public function testAddDocumentProductEndUserContact(): void
     {
@@ -713,7 +589,27 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipTo
-     */
+    public function testSetDocumentShipToAllEmpty(): void
+    {
+        (self::$document)->setDocumentShipTo();
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name');
+    }
+
+    public function testAddDocumentShipTolAllEmptyId(): void
+    {
+        $this->assertXPathExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name');
+
+        (self::$document)->addDocumentShipTolId('549911');
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID', 0, "549911");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID', 1);
+    }
+
     public function testSetDocumentShipTo(): void
     {
@@ -725,7 +621,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipTolId
-     */
     public function testAddDocumentShipTolId(): void
     {
@@ -740,7 +633,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipToGlobalId
-     */
     public function testAddDocumentShipToGlobalId(): void
     {
@@ -751,7 +641,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipToTaxRegistration
-     */
     public function testAddDocumentShipToTaxRegistration(): void
     {
@@ -764,7 +651,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToAddress
-     */
     public function testSetDocumentShipToAddress(): void
     {
@@ -781,7 +665,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToLegalOrganisation
-     */
     public function testSetDocumentShipToLegalOrganisation(): void
     {
@@ -793,7 +674,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToContact
-     */
     public function testSetDocumentShipToContact(): void
     {
@@ -815,7 +693,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipToContact
-     */
     public function testAddDocumentShipToContact(): void
     {
@@ -844,7 +719,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipTo
-     */
     public function testSetDocumentUltimateShipTo(): void
     {
@@ -856,7 +728,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToId
-     */
     public function testAddDocumentUltimateShipToId(): void
     {
@@ -871,7 +740,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToGlobalId
-     */
     public function testAddDocumentUltimateShipToGlobalId(): void
     {
@@ -882,7 +748,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToTaxRegistration
-     */
     public function testAddDocumentUltimateShipToTaxRegistration(): void
     {
@@ -895,7 +758,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipToAddress
-     */
     public function testSetDocumentUltimateShipToAddress(): void
     {
@@ -912,7 +772,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipToLegalOrganisation
-     */
     public function testSetDocumentUltimateShipToLegalOrganisation(): void
     {
@@ -924,7 +781,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipToContact
-     */
     public function testSetDocumentUltimateShipToContact(): void
     {
@@ -946,7 +800,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToContact
-     */
     public function testAddDocumentUltimateShipToContact(): void
     {
@@ -975,7 +826,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFrom
-     */
     public function testSetDocumentShipFrom(): void
     {
@@ -987,7 +835,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromId
-     */
     public function testAddDocumentShipFromId(): void
     {
@@ -1002,7 +847,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromGlobalId
-     */
     public function testAddDocumentShipFromGlobalId(): void
     {
@@ -1013,7 +855,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromTaxRegistration
-     */
     public function testAddDocumentShipFromTaxRegistration(): void
     {
@@ -1026,7 +865,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFromAddress
-     */
     public function testSetDocumentShipFromAddress(): void
     {
@@ -1043,7 +879,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFromLegalOrganisation
-     */
     public function testSetDocumentShipFromLegalOrganisation(): void
     {
@@ -1055,7 +888,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFromContact
-     */
     public function testSetDocumentShipFromContact(): void
     {
@@ -1077,7 +907,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromContact
-     */
     public function testAddDocumentShipFromContact(): void
     {
@@ -1106,7 +933,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicer
-     */
     public function testSetDocumentInvoicer(): void
     {
@@ -1118,7 +942,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerId
-     */
     public function testAddDocumentInvoicerId(): void
     {
@@ -1133,7 +954,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerGlobalId
-     */
     public function testAddDocumentInvoicerGlobalId(): void
     {
@@ -1144,7 +962,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerTaxRegistration
-     */
     public function testAddDocumentInvoicerTaxRegistration(): void
     {
@@ -1157,7 +972,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicerAddress
-     */
     public function testSetDocumentInvoicerAddress(): void
     {
@@ -1174,7 +986,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicerLegalOrganisation
-     */
     public function testSetDocumentInvoicerLegalOrganisation(): void
     {
@@ -1186,7 +995,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicerContact
-     */
     public function testSetDocumentInvoicerContact(): void
     {
@@ -1208,7 +1014,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerContact
-     */
     public function testAddDocumentInvoicerContact(): void
     {
@@ -1244,7 +1047,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicee
-     */
     public function testSetDocumentInvoicee(): void
     {
@@ -1256,7 +1056,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeId
-     */
     public function testAddDocumentInvoiceeId(): void
     {
@@ -1271,7 +1068,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeGlobalId
-     */
     public function testAddDocumentInvoiceeGlobalId(): void
     {
@@ -1282,7 +1076,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeTaxRegistration
-     */
     public function testAddDocumentInvoiceeTaxRegistration(): void
     {
@@ -1295,7 +1086,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceeAddress
-     */
     public function testSetDocumentInvoiceeAddress(): void
     {
@@ -1312,7 +1100,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceeLegalOrganisation
-     */
     public function testSetDocumentInvoiceeLegalOrganisation(): void
     {
@@ -1324,7 +1109,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceeContact
-     */
     public function testSetDocumentInvoiceeContact(): void
     {
@@ -1346,7 +1128,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeContact
-     */
     public function testAddDocumentInvoiceeContact(): void
     {
@@ -1375,7 +1154,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayee
-     */
     public function testSetDocumentPayee(): void
     {
@@ -1387,7 +1163,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeId
-     */
     public function testAddDocumentPayeeId(): void
     {
@@ -1402,7 +1175,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeGlobalId
-     */
     public function testAddDocumentPayeeGlobalId(): void
     {
@@ -1413,7 +1183,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeTaxRegistration
-     */
     public function testAddDocumentPayeeTaxRegistration(): void
     {
@@ -1426,7 +1193,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayeeAddress
-     */
     public function testSetDocumentPayeeAddress(): void
     {
@@ -1443,7 +1207,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayeeLegalOrganisation
-     */
     public function testSetDocumentPayeeLegalOrganisation(): void
     {
@@ -1455,7 +1216,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayeeContact
-     */
     public function testSetDocumentPayeeContact(): void
     {
@@ -1477,7 +1235,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeContact
-     */
     public function testAddDocumentPayeeContact(): void
     {
@@ -1506,7 +1261,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentDeliveryTerms
-     */
     public function testSetDocumentDeliveryTerms(): void
     {
@@ -1517,7 +1269,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerOrderReferencedDocument
-     */
     public function testSetDocumentSellerOrderReferencedDocument(): void
     {
@@ -1529,7 +1278,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerOrderReferencedDocument
-     */
     public function testSetDocumentBuyerOrderReferencedDocument(): void
     {
@@ -1541,7 +1287,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentContractReferencedDocument
-     */
+    public function testSetDocumentQuotationReferencedDocument(): void
+    {
+        (self::$document)->setDocumentQuotationReferencedDocument('Q-4711', new DateTime());
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:IssuerAssignedID');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:FormattedIssueDateTime/ram:DateTimeString');
+    }
+
     public function testSetDocumentContractReferencedDocument(): void
     {
@@ -1553,7 +1305,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentAdditionalReferencedDocument
-     */
     public function testAddDocumentAdditionalReferencedDocument(): void
     {
@@ -1572,14 +1321,11 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 0, "reftype");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 1, "reftype2");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 1, (new DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentAdditionalReferencedDocument
-     */
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1, (new DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testAddDocumentAdditionalReferencedDocumentWithAttachment(): void
     {
-        (self::$document)->addDocumentAdditionalReferencedDocument("A-1011", "type", "http://lieferant.de/docs/a1011.pdf", "Leistungsnachweis", "reftype", new DateTime(), dirname(__FILE__) . "/../assets/InvalidPDF.pdf");
+        (self::$document)->addDocumentAdditionalReferencedDocument("A-1011", "type", "http://lieferant.de/docs/a1011.pdf", "Leistungsnachweis", "reftype", new DateTime(), __DIR__ . "/../assets/pdf_invalid.pdf");
 
         $this->disableRenderXmlContent();
@@ -1589,25 +1335,33 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:Name', 2, "Leistungsnachweis");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 2, "reftype");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 2, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 2, (new DateTime())->format("Ymd"), "format", "102");
         $this->assertXPathValueStartsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject', 0, "JVBERi0xLjQKJcOkw7zDtsOfC");
         $this->assertXPathValueStartsWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject', 0, "JVBERi0xLjQKJcOkw7zDtsOfC", "mimeCode", "application/pdf");
-        $this->assertXPathValueStartsWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject', 0, "JVBERi0xLjQKJcOkw7zDtsOfC", "filename", "InvalidPDF.pdf");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceReferencedDocument
-     */
+        $this->assertXPathValueStartsWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject', 0, "JVBERi0xLjQKJcOkw7zDtsOfC", "filename", "pdf_invalid.pdf");
+    }
+
     public function testSetDocumentInvoiceReferencedDocument(): void
     {
-        (self::$document)->setDocumentInvoiceReferencedDocument("INV-1", new DateTime());
-
-        $this->disableRenderXmlContent();
-        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', "INV-1");
-        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', (new DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProcuringProject
-     */
+        (self::$document)->setDocumentInvoiceReferencedDocument("INV-1", "71", new DateTime());
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 0, "INV-1");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 0, "71");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+    }
+
+    public function testAddDocumentInvoiceReferencedDocument(): void
+    {
+        (self::$document)->addDocumentInvoiceReferencedDocument("INV-2", "82", new DateTime());
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 0, "INV-1");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 0, "71");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 1, "INV-2");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 1, "82");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1, (new DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testSetDocumentProcuringProject(): void
     {
@@ -1619,7 +1373,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateCustomerOrderReferencedDocument
-     */
     public function testAddDocumentUltimateCustomerOrderReferencedDocument(): void
     {
@@ -1629,10 +1380,7 @@
         $this->disableRenderXmlContent();
         $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID');
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString');
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentDespatchAdviceReferencedDocument
-     */
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString');
+    }
+
     public function testSetDocumentDespatchAdviceReferencedDocument(): void
     {
@@ -1641,10 +1389,7 @@
         $this->disableRenderXmlContent();
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID', "DADV-001");
-        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', (new DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentReceivingAdviceReferencedDocument
-     */
+        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', (new DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testSetDocumentReceivingAdviceReferencedDocument(): void
     {
@@ -1653,10 +1398,7 @@
         $this->disableRenderXmlContent();
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID', "RADV-002");
-        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', (new DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentDeliveryNoteReferencedDocument
-     */
+        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', (new DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testSetDocumentDeliveryNoteReferencedDocument(): void
     {
@@ -1665,13 +1407,11 @@
         $this->disableRenderXmlContent();
         $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID');
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString');
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMean
-     */
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString');
+    }
+
     public function testAddDocumentPaymentMean(): void
     {
-        (self::$document)->addDocumentPaymentMean("42", "Paying information", "cardtype", "cardid", "cardholder", "DE00000000000", "DE11111111111", "Bank", "44444444", "NOLADEQLB21");
+        (self::$document)->addDocumentPaymentMean("42", "Paying information", "cardtype", "6759 6498 2643 8453", "cardholder", "DE00000000000", "DE11111111111", "Bank", "44444444", "NOLADEQLB21");
+        (self::$document)->addDocumentPaymentMean("49", "Paying information 2", "cardtype2", "6759 6498 2643 8454", "cardholder2", "DE22222222222", "DE33333333333", "Bank 2", "22222222", "BIC");
 
         $this->disableRenderXmlContent();
@@ -1679,5 +1419,5 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 0, "42");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 0, "Paying information");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 0, "rdid", "schemeID", "cardtype");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 0, "6759 68453", "schemeID", "cardtype");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 0, "cardholder");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 0, "DE00000000000");
@@ -1687,18 +1427,15 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 0, "NOLADEQLB21");
 
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 1);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMeanToCreditTransfer
-     */
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 1, "49");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 1, "Paying information 2");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 1, "6759 68454", "schemeID", "cardtype2");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 1, "cardholder2");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 1, "DE22222222222");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 1, "DE33333333333");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 1, "Bank 2");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 1, "22222222");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 1, "BIC");
+    }
+
     public function testAddDocumentPaymentMeanToCreditTransfer(): void
     {
@@ -1707,28 +1444,25 @@
         $this->disableRenderXmlContent();
 
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 0, "58");
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 0);
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 0, "DE77777777777");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 0, "Bank");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 0, "55555555");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 0, "NOLADEQLB22");
-
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 1);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMeanToDirectDebit
-     */
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 2, "58");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 2);
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 2, "DE77777777777");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 2, "Bank");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 2, "55555555");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 2, "NOLADEQLB22");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 3);
+    }
+
     public function testAddDocumentPaymentMeanToDirectDebit(): void
     {
@@ -1737,79 +1471,79 @@
         $this->disableRenderXmlContent();
 
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 0, "59");
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 0);
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 0, "DE8888888888");
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 0);
-
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 1);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMeanToPaymentCard
-     */
-    public function testAddDocumentPaymentMeanToPaymentCard(): void
-    {
-        (self::$document)->addDocumentPaymentMeanToPaymentCard("cardtype", "cardid", "cardholder");
-
-        $this->disableRenderXmlContent();
-
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 0, "48");
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 0);
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 0, "cardid", "schemeID", "cardtype");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 0, "cardholder");
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 0);
-
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 1);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMean
-     */
-    public function testAddDocumentPaymentMeanLastMustBeSet(): void
-    {
-        (self::$document)->addDocumentPaymentMean("42", "Paying information", "cardtype", "cardid", "cardholder", "DE00000000000", "DE11111111111", "Bank", "44444444", "NOLADEQLB21");
-        (self::$document)->addDocumentPaymentMean("49", "Paying information 2", "cardtype2", "cardid2", "cardholder2", "DE22222222222", "DE33333333333", "Bank 2", "22222222", "BIC");
-
-        $this->disableRenderXmlContent();
-
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 0, "49");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 0, "Paying information 2");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 0, "did2", "schemeID", "cardtype2");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 0, "cardholder2");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 0, "DE22222222222");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 0, "DE33333333333");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 0, "Bank 2");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 0, "22222222");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 0, "BIC");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentTax
-     */
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 3, "59");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 3);
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 2, "DE8888888888");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 3);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 4);
+    }
+
+    public function testAddDocumentPaymentMeanToCreditTransferNonSepa(): void
+    {
+        (self::$document)->addDocumentPaymentMeanToCreditTransferNonSepa("DE88888888888", "Bank Test", "66666666", "NOLADEQLB22");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 4, "30");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 4);
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 3, "DE88888888888");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 3, "Bank Test");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 3, "66666666");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 3, "NOLADEQLB22");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 5);
+    }
+
+    public function testAddDocumentPaymentMeanToDirectDebitNonSepa(): void
+    {
+        (self::$document)->addDocumentPaymentMeanToDirectDebitNonSepa("DE9999999999");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 5, "49");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 5);
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 3, "DE9999999999");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 5);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 6);
+    }
+
     public function testAddDocumentTax(): void
     {
@@ -1840,7 +1574,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentTaxSimple
-     */
     public function testAddDocumentTaxSimple(): void
     {
@@ -1859,7 +1590,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBillingPeriod
-     */
     public function testSetDocumentBillingPeriod(): void
     {
@@ -1871,7 +1599,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentAllowanceCharge
-     */
     public function testAddDocumentAllowanceCharge(): void
     {
@@ -1900,7 +1625,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentLogisticsServiceCharge
-     */
     public function testAddDocumentLogisticsServiceCharge(): void
     {
@@ -1915,8 +1637,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDiscountTermsToPaymentTerms
-     */
     public function testAddDocumentPaymentTermAndDiscount(): void
     {
@@ -1935,9 +1653,100 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:CalculationPercent', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:ActualDiscountAmount', 0);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentReceivableSpecifiedTradeAccountingAccount
-     */
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+    }
+
+    public function testAddDocumentPaymentTermAndPenalty(): void
+    {
+        (self::$document)->addDocumentPaymentTerm("Payment", new DateTime(), "mandate");
+        (self::$document)->addPenaltyTermsToPaymentTerms(10.0, new DateTime(), 1, "DAY", 20.0, 2.0);
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisDateTime/udt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisPeriodMeasure', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisAmount', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:CalculationPercent', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:ActualPenaltyAmount', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+    }
+
+    public function testAddDocumentPaymentTermXRechnung(): void
+    {
+        (self::$document)->addDocumentPaymentTermXRechnung("", [14], [2], [100], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+
+        (self::$document)->addDocumentPaymentTermXRechnung("Payment", [], [], [], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+
+        (self::$document)->addDocumentPaymentTermXRechnung("Payment", [14], [2], [100], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "#SKONTO#TAGE=14#PROZENT=2.00#BASISBETRAG=100.00#\nPayment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+
+        (self::$document)->addDocumentPaymentTermXRechnung("Payment", [14], [2], [], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "#SKONTO#TAGE=14#PROZENT=2.00#\nPayment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+    }
+
+    public function testAddDocumentPaymenTermAndhPartialPaymentAmount(): void
+    {
+        (self::$document)->addDocumentPaymentTerm("Payment with partial payment amount", new \DateTime(), "mandate with partial payment amount", 100);
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "Payment with partial payment amount");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate with partial payment amount");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount', 1);
+    }
+
     public function testAddDocumentReceivableSpecifiedTradeAccountingAccount(): void
     {
@@ -1947,14 +1756,11 @@
         $this->disableRenderXmlContent();
 
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 0);
-
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 1);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::InitDocumentSummation
-     */
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 0, 'accountid2');
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 1);
+    }
+
     public function testInitDocumentSummation(): void
     {
@@ -1973,7 +1779,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::SetDocumentSummation
-     */
     public function testSetDocumentSummation(): void
     {
@@ -1992,44 +1795,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addNewPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionShipToGlobalId
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionShipToTaxRegistration
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipToAddress
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipToLegalOrganisation
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateShipToGlobalId
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateShipToTaxRegistration
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipToAddress
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipToLegalOrganisation
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionSupplyChainEvent
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionReceivableSpecifiedTradeAccountingAccount
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateCustomerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionProductCharacteristic
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionProductClassification
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionProductOriginTradeCountry
-     */
     public function testPositionMethods(): void
     {
@@ -2040,5 +1803,7 @@
         (self::$document)->addDocumentPositionProductClassification("classcode", "classname", "listid", "listversionid");
         (self::$document)->setDocumentPositionProductOriginTradeCountry("DE");
+        (self::$document)->setDocumentPositionSellerOrderReferencedDocument("S-0001", "2", new DateTime());
         (self::$document)->setDocumentPositionBuyerOrderReferencedDocument("B-0001", "1", new DateTime());
+        (self::$document)->setDocumentPositionQuotationReferencedDocument("Q-0001", "3", new DateTime());
         (self::$document)->setDocumentPositionContractReferencedDocument("C-0002", "2", new DateTime());
         (self::$document)->setDocumentPositionGrossPrice(105, 1, "C62");
@@ -2068,8 +1833,12 @@
         (self::$document)->setDocumentPositionBillingPeriod(new DateTime(), new DateTime());
         (self::$document)->addDocumentPositionAllowanceCharge(10.0, true, 19.0, 10.0, "reasoncode", "reason");
-        (self::$document)->setDocumentPositionLineSummation(100, 10);
+        (self::$document)->setDocumentPositionLineSummation(100);
+        (self::$document)->addDocumentPositionReceivableSpecifiedTradeAccountingAccount("accid2", "acctypecode2");
         (self::$document)->addDocumentPositionReceivableSpecifiedTradeAccountingAccount("accid", "acctypecode");
         (self::$document)->addDocumentPositionAdditionalReferencedDocument("1", "2", "3", "4", "name", "reftypecode", new DateTime());
         (self::$document)->addDocumentPositionUltimateCustomerOrderReferencedDocument("ORDER-0001", "1.1", new DateTime());
+        (self::$document)->addDocumentPositionAdditionalReferencedObjDocument("ZZZZZZZZZ", "916", "130");
+        (self::$document)->addDocumentPositionAdditionalReferencedObjDocument("ABCDEF123", "50", "130");
+        (self::$document)->addDocumentPositionInvoiceReferencedDocument("INV1", "1", "71", new \DateTime());
 
         $this->disableRenderXmlContent();
@@ -2092,10 +1861,16 @@
         $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode', 0, "classcode", "listVersionID", "listversionid");
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:LineID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID', 0, "B-0001");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID', 0, "1");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0, (new DateTime)->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:IssuerAssignedID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:LineID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 0, "105.0");
         $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity', 0, "1", "unitCode", "C62");
@@ -2173,11 +1948,11 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount', 0, "10.0");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode', 0, "VAT");
@@ -2198,4 +1973,13 @@
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', "accid");
         $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode');
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID', 0, "ABCDEF123");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode', 0, "50");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 0, "130");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:LineID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 0);
 
         (self::$document)->addNewPosition("2", "linestatuscode", "linestatusreasoncode");
@@ -2228,5 +2012,5 @@
         (self::$document)->setDocumentPositionBillingPeriod(new DateTime(), new DateTime());
         (self::$document)->addDocumentPositionAllowanceCharge(10.0, true, 19.0, 10.0, "reasoncode", "reason");
-        (self::$document)->setDocumentPositionLineSummation(200, 20);
+        (self::$document)->setDocumentPositionLineSummation(200);
 
         $this->disableRenderXmlContent();
@@ -2246,8 +2030,8 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID', 1);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID', 1);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1);
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 1, "200.0");
         $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity', 1, "2", "unitCode", "H87");
@@ -2316,11 +2100,11 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID', 1);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID', 1);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID', 1);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1);
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount', 1, "2.0");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode', 1, "VAT");
@@ -2341,7 +2125,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::InitNewDocument
-     */
+    public function testSetForeignCurrency(): void
+    {
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 0, "10.0", "currencyID", "EUR");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 1);
+
+        (self::$document)->setForeignCurrency("DEM", 19.5583);
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 0, "10.0", "currencyID", "EUR");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 1, "19.56", "currencyID", "DEM");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:SourceCurrencyCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:TargetCurrencyCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:ConversionRate', 0);
+    }
+
     public function testInitNewDocument(): void
     {
@@ -2359,8 +2156,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToContact
-     */
     public function testSetDocumentShipToMultipleContacts(): void
     {
@@ -2390,8 +2183,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToContact
-     */
     public function testSetDocumentShipToMultipleContactsAdd(): void
     {
@@ -2421,27 +2210,17 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::writeFile
-     */
     public function testWriteFile(): void
     {
         (self::$document)->writeFile(getcwd() . "/myfile.xml");
-        $this->assertTrue(file_exists(getcwd() . "/myfile.xml"));
+        $this->assertFileExists(getcwd() . "/myfile.xml");
         @unlink(getcwd() . "/myfile.xml");
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::__toString
-     */
     public function testToString(): void
     {
         $xmlContent = (string)self::$document;
-        $this->assertIsString($xmlContent);
         $this->assertStringStartsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rsm:CrossIndustryInvoice", $xmlContent);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getContentAsDomDocument
-     */
     public function testGetContentAsDomDocument(): void
     {
@@ -2450,7 +2229,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getContentAsDomXPath
-     */
     public function testGetContentAsDomXPath(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/BuilderExtendedTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/BuilderExtendedTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/BuilderExtendedTest.php	(revision 8504)
@@ -3,8 +3,9 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\tests\traits\HandlesXmlTests;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentBuilder;
+use DateTime;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdProfiles;
+use horstoeko\zugferd\ZugferdDocumentBuilder;
+use horstoeko\zugferd\tests\traits\HandlesXmlTests;
 
 class BuilderExtendedTest extends TestCase
@@ -25,15 +26,12 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getInvoiceObject
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getSerializer
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getObjectHelper
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getProfileDefinitionParameter
-     */
     public function testDocumentGetters(): void
     {
-        $this->assertNotNull(self::$document->getInvoiceObject());
-        $this->assertNotNull(self::$document->getSerializer());
-        $this->assertNotNull(self::$document->getObjectHelper());
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertInstanceOf(\JMS\Serializer\Serializer::class, $this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
+        $this->assertInstanceOf('horstoeko\zugferd\ZugferdObjectHelper', $this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
         $this->assertEquals('extended', self::$document->getProfileDefinitionParameter('name'));
         $this->assertEquals('EXTENDED', self::$document->getProfileDefinitionParameter('altname'));
@@ -41,4 +39,5 @@
         $this->assertEquals('factur-x.xml', self::$document->getProfileDefinitionParameter('attachmentfilename'));
         $this->assertEquals('EXTENDED', self::$document->getProfileDefinitionParameter('xmpname'));
+        $this->assertEquals('1.0', self::$document->getProfileDefinitionParameter('xmpversion'));
         $this->expectNoticeOrWarningExt(
             function () {
@@ -59,7 +58,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInformation
-     */
     public function testSetDocumentInformation(): void
     {
@@ -73,15 +69,12 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBusinessProcess
-     */
     public function testSetDocumentBusinessProcess(): void
     {
         $this->disableRenderXmlContent();
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID');
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID', 0, 'urn:fdc:peppol.eu:2017:poacc:billing:01:1.0');
 
         (self::$document)->setDocumentBusinessProcess("");
         $this->disableRenderXmlContent();
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID');
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:ExchangedDocumentContext/ram:BusinessProcessSpecifiedDocumentContextParameter/ram:ID', 0, 'urn:fdc:peppol.eu:2017:poacc:billing:01:1.0');
 
         (self::$document)->setDocumentBusinessProcess("GENERAL INVOICE");
@@ -90,7 +83,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentGeneralPaymentInformation
-     */
     public function testSetDocumentGeneralPaymentInformation(): void
     {
@@ -102,8 +92,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setIsDocumentCopy
-     * @covers \horstoeko\zugferd\jms\ZugferdTypesHandler::serializeIndicatorType
-     */
     public function testSetIsDocumentCopy(): void
     {
@@ -115,8 +101,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setIsTestDocument
-     * @covers \horstoeko\zugferd\jms\ZugferdTypesHandler::serializeIndicatorType
-     */
     public function testSetIsTestDocument(): void
     {
@@ -128,7 +110,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentNote
-     */
     public function testAddDocumentNote(): void
     {
@@ -142,7 +121,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSupplyChainEvent
-     */
     public function testSetDocumentSupplyChainEvent(): void
     {
@@ -153,7 +129,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerReference
-     */
     public function testSetDocumentBuyerReference(): void
     {
@@ -164,7 +137,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSeller
-     */
     public function testSetDocumentSeller(): void
     {
@@ -176,7 +146,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerId
-     */
     public function testAddDocumentSellerId(): void
     {
@@ -191,7 +158,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerGlobalId
-     */
     public function testAddDocumentSellerGlobalId(): void
     {
@@ -202,7 +166,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRegistration
-     */
     public function testAddDocumentSellerTaxRegistration(): void
     {
@@ -215,16 +176,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerAddress
-     */
     public function testSetDocumentSellerAddress(): void
     {
-        (self::$document)->setDocumentSellerAddress("LieferantenstraÃe 20", "", "", "80333", "MÃŒnchen", "DE");
+        (self::$document)->setDocumentSellerAddress("LieferantenstraÃe 20", "Haus A", "Aufgang B", "80333", "MÃŒnchen", "DE");
 
         $this->disableRenderXmlContent();
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:PostcodeCode', "80333");
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineOne', "LieferantenstraÃe 20");
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo');
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree');
+        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineTwo', "Haus A");
+        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:LineThree', "Aufgang B");
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CityName', "MÃŒnchen");
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID', "DE");
@@ -232,7 +190,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerLegalOrganisation
-     */
     public function testSetDocumentSellerLegalOrganisation(): void
     {
@@ -244,7 +199,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerContact
-     */
     public function testSetDocumentSellerContact(): void
     {
@@ -284,7 +236,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerContact
-     */
     public function testAddDocumentSellerContact(): void
     {
@@ -320,7 +269,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerCommunication
-     */
     public function testSetDocumentSellerCommunication(): void
     {
@@ -332,7 +278,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyer
-     */
     public function testSetDocumentBuyer(): void
     {
@@ -344,7 +287,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerId
-     */
     public function testAddDocumentBuyerId(): void
     {
@@ -359,7 +299,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerGlobalId
-     */
     public function testAddDocumentBuyerGlobalId(): void
     {
@@ -370,7 +307,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerTaxRegistration
-     */
     public function testAddDocumentBuyerTaxRegistration(): void
     {
@@ -383,7 +317,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerAddress
-     */
     public function testSetDocumentBuyerAddress(): void
     {
@@ -400,7 +331,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerLegalOrganisation
-     */
     public function testSetDocumentBuyerLegalOrganisation(): void
     {
@@ -412,7 +340,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerContact
-     */
     public function testSetDocumentBuyerContact(): void
     {
@@ -434,7 +359,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerContact
-     */
     public function testAddDocumentBuyerContact(): void
     {
@@ -463,7 +385,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerCommunication
-     */
     public function testSetDocumentBuyerCommunication(): void
     {
@@ -475,7 +394,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeTradeParty
-     */
     public function testSetDocumentSellerTaxRepresentativeTradeParty(): void
     {
@@ -487,7 +403,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRepresentativeGlobalId
-     */
     public function testAddDocumentSellerTaxRepresentativeGlobalId(): void
     {
@@ -498,7 +411,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRepresentativeTaxRegistration
-     */
     public function testAddDocumentSellerTaxRepresentativeTaxRegistration(): void
     {
@@ -511,7 +421,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeAddress
-     */
     public function testSetDocumentSellerTaxRepresentativeAddress(): void
     {
@@ -528,7 +435,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeLegalOrganisation
-     */
     public function testSetDocumentSellerTaxRepresentativeLegalOrganisation(): void
     {
@@ -540,7 +444,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeContact
-     */
     public function testSetDocumentSellerTaxRepresentativeContact(): void
     {
@@ -562,7 +463,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRepresentativeContact
-     */
     public function testAddDocumentSellerTaxRepresentativeContact(): void
     {
@@ -598,7 +496,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUser
-     */
     public function testSetDocumentProductEndUser(): void
     {
@@ -610,7 +505,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentProductEndUserGlobalId
-     */
     public function testAddDocumentProductEndUserGlobalId(): void
     {
@@ -621,7 +513,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentProductEndUserTaxRegistration
-     */
     public function testAddDocumentProductEndUserTaxRegistration(): void
     {
@@ -634,7 +523,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUserAddress
-     */
     public function testSetDocumentProductEndUserAddress(): void
     {
@@ -651,7 +537,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUserLegalOrganisation
-     */
     public function testSetDocumentProductEndUserLegalOrganisation(): void
     {
@@ -663,7 +546,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUserContact
-     */
     public function testSetDocumentProductEndUserContact(): void
     {
@@ -685,7 +565,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentProductEndUserContact
-     */
     public function testAddDocumentProductEndUserContact(): void
     {
@@ -721,7 +598,27 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipTo
-     */
+    public function testSetDocumentShipToAllEmpty(): void
+    {
+        (self::$document)->setDocumentShipTo();
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name');
+    }
+
+    public function testAddDocumentShipTolAllEmptyId(): void
+    {
+        $this->assertXPathExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name');
+
+        (self::$document)->addDocumentShipTolId('549911');
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID', 0, "549911");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID', 1);
+    }
+
     public function testSetDocumentShipTo(): void
     {
@@ -733,7 +630,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipTolId
-     */
     public function testAddDocumentShipTolId(): void
     {
@@ -748,7 +642,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipToGlobalId
-     */
     public function testAddDocumentShipToGlobalId(): void
     {
@@ -759,7 +650,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipToTaxRegistration
-     */
     public function testAddDocumentShipToTaxRegistration(): void
     {
@@ -772,7 +660,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToAddress
-     */
     public function testSetDocumentShipToAddress(): void
     {
@@ -789,7 +674,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToLegalOrganisation
-     */
     public function testSetDocumentShipToLegalOrganisation(): void
     {
@@ -801,7 +683,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToContact
-     */
     public function testSetDocumentShipToContact(): void
     {
@@ -823,7 +702,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipToContact
-     */
     public function testAddDocumentShipToContact(): void
     {
@@ -859,7 +735,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipTo
-     */
     public function testSetDocumentUltimateShipTo(): void
     {
@@ -871,7 +744,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToId
-     */
     public function testAddDocumentUltimateShipToId(): void
     {
@@ -886,7 +756,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToGlobalId
-     */
     public function testAddDocumentUltimateShipToGlobalId(): void
     {
@@ -897,7 +764,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToTaxRegistration
-     */
     public function testAddDocumentUltimateShipToTaxRegistration(): void
     {
@@ -910,7 +774,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipToAddress
-     */
     public function testSetDocumentUltimateShipToAddress(): void
     {
@@ -927,7 +788,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipToLegalOrganisation
-     */
     public function testSetDocumentUltimateShipToLegalOrganisation(): void
     {
@@ -939,7 +797,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipToContact
-     */
     public function testSetDocumentUltimateShipToContact(): void
     {
@@ -961,7 +816,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToContact
-     */
     public function testAddDocumentUltimateShipToContact(): void
     {
@@ -997,7 +849,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFrom
-     */
     public function testSetDocumentShipFrom(): void
     {
@@ -1009,7 +858,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromId
-     */
     public function testAddDocumentShipFromId(): void
     {
@@ -1024,7 +870,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromGlobalId
-     */
     public function testAddDocumentShipFromGlobalId(): void
     {
@@ -1035,7 +878,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromTaxRegistration
-     */
     public function testAddDocumentShipFromTaxRegistration(): void
     {
@@ -1048,7 +888,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFromAddress
-     */
     public function testSetDocumentShipFromAddress(): void
     {
@@ -1065,7 +902,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFromLegalOrganisation
-     */
     public function testSetDocumentShipFromLegalOrganisation(): void
     {
@@ -1077,7 +911,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFromContact
-     */
     public function testSetDocumentShipFromContact(): void
     {
@@ -1099,7 +930,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromContact
-     */
     public function testAddDocumentShipFromContact(): void
     {
@@ -1135,7 +963,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicer
-     */
     public function testSetDocumentInvoicer(): void
     {
@@ -1147,7 +972,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerId
-     */
     public function testAddDocumentInvoicerId(): void
     {
@@ -1162,7 +984,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerGlobalId
-     */
     public function testAddDocumentInvoicerGlobalId(): void
     {
@@ -1173,7 +992,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerTaxRegistration
-     */
     public function testAddDocumentInvoicerTaxRegistration(): void
     {
@@ -1186,7 +1002,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicerAddress
-     */
     public function testSetDocumentInvoicerAddress(): void
     {
@@ -1203,7 +1016,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicerLegalOrganisation
-     */
     public function testSetDocumentInvoicerLegalOrganisation(): void
     {
@@ -1215,7 +1025,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicerContact
-     */
     public function testSetDocumentInvoicerContact(): void
     {
@@ -1237,7 +1044,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerContact
-     */
     public function testAddDocumentInvoicerContact(): void
     {
@@ -1273,7 +1077,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicee
-     */
     public function testSetDocumentInvoicee(): void
     {
@@ -1285,7 +1086,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeId
-     */
     public function testAddDocumentInvoiceeId(): void
     {
@@ -1301,7 +1099,4 @@
 
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeGlobalId
-     */
     public function testAddDocumentInvoiceeGlobalId(): void
     {
@@ -1313,7 +1108,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeTaxRegistration
-     */
     public function testAddDocumentInvoiceeTaxRegistration(): void
     {
@@ -1326,7 +1118,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceeAddress
-     */
     public function testSetDocumentInvoiceeAddress(): void
     {
@@ -1343,7 +1132,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceeLegalOrganisation
-     */
     public function testSetDocumentInvoiceeLegalOrganisation(): void
     {
@@ -1355,7 +1141,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceeContact
-     */
     public function testSetDocumentInvoiceeContact(): void
     {
@@ -1377,7 +1160,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeContact
-     */
     public function testAddDocumentInvoiceeContact(): void
     {
@@ -1413,7 +1193,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayee
-     */
     public function testSetDocumentPayee(): void
     {
@@ -1425,7 +1202,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeId
-     */
     public function testAddDocumentPayeeId(): void
     {
@@ -1440,7 +1214,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeGlobalId
-     */
     public function testAddDocumentPayeeGlobalId(): void
     {
@@ -1451,7 +1222,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeTaxRegistration
-     */
     public function testAddDocumentPayeeTaxRegistration(): void
     {
@@ -1464,7 +1232,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayeeAddress
-     */
     public function testSetDocumentPayeeAddress(): void
     {
@@ -1481,7 +1246,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayeeLegalOrganisation
-     */
     public function testSetDocumentPayeeLegalOrganisation(): void
     {
@@ -1493,7 +1255,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayeeContact
-     */
     public function testSetDocumentPayeeContact(): void
     {
@@ -1515,7 +1274,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeContact
-     */
     public function testAddDocumentPayeeContact(): void
     {
@@ -1551,7 +1307,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentDeliveryTerms
-     */
     public function testSetDocumentDeliveryTerms(): void
     {
@@ -1562,7 +1315,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerOrderReferencedDocument
-     */
     public function testSetDocumentSellerOrderReferencedDocument(): void
     {
@@ -1571,10 +1321,7 @@
         $this->disableRenderXmlContent();
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID', "B-1010");
-        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerOrderReferencedDocument
-     */
+        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testSetDocumentBuyerOrderReferencedDocument(): void
     {
@@ -1583,10 +1330,16 @@
         $this->disableRenderXmlContent();
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID', "O-2020");
-        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentContractReferencedDocument
-     */
+        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
+    }
+
+    public function testSetDocumentQuotationReferencedDocument(): void
+    {
+        (self::$document)->setDocumentQuotationReferencedDocument('Q-4711', new DateTime());
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:IssuerAssignedID', "Q-4711");
+        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testSetDocumentContractReferencedDocument(): void
     {
@@ -1595,10 +1348,7 @@
         $this->disableRenderXmlContent();
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID', "CON-4711");
-        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentAdditionalReferencedDocument
-     */
+        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testAddDocumentAdditionalReferencedDocument(): void
     {
@@ -1617,14 +1367,11 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 0, "reftype");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 1, "reftype2");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 1, (new \DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentAdditionalReferencedDocument
-     */
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1, (new \DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testAddDocumentAdditionalReferencedDocumentWithAttachment(): void
     {
-        (self::$document)->addDocumentAdditionalReferencedDocument("A-1011", "type", "http://lieferant.de/docs/a1011.pdf", "Leistungsnachweis", "reftype", new \DateTime(), dirname(__FILE__) . "/../assets/InvalidPDF.pdf");
+        (self::$document)->addDocumentAdditionalReferencedDocument("A-1011", "type", "http://lieferant.de/docs/a1011.pdf", "Leistungsnachweis", "reftype", new \DateTime(), __DIR__ . "/../assets/pdf_invalid.pdf");
 
         $this->disableRenderXmlContent();
@@ -1634,25 +1381,33 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:Name', 2, "Leistungsnachweis");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 2, "reftype");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 2, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 2, (new \DateTime())->format("Ymd"), "format", "102");
         $this->assertXPathValueStartsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject', 0, "JVBERi0xLjQKJcOkw7zDtsOfC");
         $this->assertXPathValueStartsWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject', 0, "JVBERi0xLjQKJcOkw7zDtsOfC", "mimeCode", "application/pdf");
-        $this->assertXPathValueStartsWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject', 0, "JVBERi0xLjQKJcOkw7zDtsOfC", "filename", "InvalidPDF.pdf");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceReferencedDocument
-     */
+        $this->assertXPathValueStartsWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject', 0, "JVBERi0xLjQKJcOkw7zDtsOfC", "filename", "pdf_invalid.pdf");
+    }
+
     public function testSetDocumentInvoiceReferencedDocument(): void
     {
-        (self::$document)->setDocumentInvoiceReferencedDocument("INV-1", new \DateTime());
-
-        $this->disableRenderXmlContent();
-        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', "INV-1");
-        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProcuringProject
-     */
+        (self::$document)->setDocumentInvoiceReferencedDocument("INV-1", "71", new DateTime());
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 0, "INV-1");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 0, "71");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+    }
+
+    public function testAddDocumentInvoiceReferencedDocument(): void
+    {
+        (self::$document)->addDocumentInvoiceReferencedDocument("INV-2", "82", new DateTime());
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 0, "INV-1");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 0, "71");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 1, "INV-2");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 1, "82");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1, (new DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testSetDocumentProcuringProject(): void
     {
@@ -1664,7 +1419,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateCustomerOrderReferencedDocument
-     */
     public function testAddDocumentUltimateCustomerOrderReferencedDocument(): void
     {
@@ -1674,12 +1426,9 @@
         $this->disableRenderXmlContent();
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID', 0, "DOC-11");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID', 1, "DOC-22");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 1, (new \DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentDespatchAdviceReferencedDocument
-     */
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1, (new \DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testSetDocumentDespatchAdviceReferencedDocument(): void
     {
@@ -1688,10 +1437,7 @@
         $this->disableRenderXmlContent();
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID', "DADV-001");
-        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentReceivingAdviceReferencedDocument
-     */
+        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testSetDocumentReceivingAdviceReferencedDocument(): void
     {
@@ -1700,10 +1446,7 @@
         $this->disableRenderXmlContent();
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID', "RADV-002");
-        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentDeliveryNoteReferencedDocument
-     */
+        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testSetDocumentDeliveryNoteReferencedDocument(): void
     {
@@ -1712,14 +1455,11 @@
         $this->disableRenderXmlContent();
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID', "DNOTE-003");
-        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMean
-     */
+        $this->assertXPathValueWithAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', (new \DateTime())->format("Ymd"), "format", "102");
+    }
+
     public function testAddDocumentPaymentMean(): void
     {
-        (self::$document)->addDocumentPaymentMean("42", "Paying information", "cardtype", "cardid", "cardholder", "DE00000000000", "DE11111111111", "Bank", "44444444", "NOLADEQLB21");
-        (self::$document)->addDocumentPaymentMean("49", "Paying information 2", "cardtype2", "cardid2", "cardholder2", "DE22222222222", "DE33333333333", "Bank 2", "22222222", "BIC");
+        (self::$document)->addDocumentPaymentMean("42", "Paying information", "cardtype", "6759 6498 2643 8453", "cardholder", "DE00000000000", "DE11111111111", "Bank", "44444444", "NOLADEQLB21");
+        (self::$document)->addDocumentPaymentMean("49", "Paying information 2", "cardtype2", "6759 6498 2643 8454", "cardholder2", "DE22222222222", "DE33333333333", "Bank 2", "22222222", "BIC");
 
         $this->disableRenderXmlContent();
@@ -1727,5 +1467,5 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 0, "42");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 0, "Paying information");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 0, "rdid", "schemeID", "cardtype");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 0, "6759 68453", "schemeID", "cardtype");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 0, "cardholder");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 0, "DE00000000000");
@@ -1737,5 +1477,5 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 1, "49");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 1, "Paying information 2");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 1, "did2", "schemeID", "cardtype2");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 1, "6759 68454", "schemeID", "cardtype2");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 1, "cardholder2");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 1, "DE22222222222");
@@ -1746,7 +1486,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMeanToCreditTransfer
-     */
     public function testAddDocumentPaymentMeanToCreditTransfer(): void
     {
@@ -1776,7 +1513,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMeanToDirectDebit
-     */
     public function testAddDocumentPaymentMeanToDirectDebit(): void
     {
@@ -1806,7 +1540,58 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentTax
-     */
+    public function testAddDocumentPaymentMeanToCreditTransferNonSepa(): void
+    {
+        (self::$document)->addDocumentPaymentMeanToCreditTransferNonSepa("DE88888888888", "Bank Test", "66666666", "NOLADEQLB22");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 4, "30");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 4);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 4);
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 3, "DE88888888888");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 3, "Bank Test");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 3, "66666666");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 3, "NOLADEQLB22");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 5);
+    }
+
+    public function testAddDocumentPaymentMeanToDirectDebitNonSepa(): void
+    {
+        (self::$document)->addDocumentPaymentMeanToDirectDebitNonSepa("DE9999999999");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 5, "49");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 5);
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 3, "DE9999999999");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 5);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 5);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 6);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 6);
+    }
+
     public function testAddDocumentTax(): void
     {
@@ -1837,7 +1622,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentTaxSimple
-     */
     public function testAddDocumentTaxSimple(): void
     {
@@ -1856,7 +1638,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBillingPeriod
-     */
     public function testSetDocumentBillingPeriod(): void
     {
@@ -1868,7 +1647,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentAllowanceCharge
-     */
     public function testAddDocumentAllowanceCharge(): void
     {
@@ -1897,7 +1673,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentLogisticsServiceCharge
-     */
     public function testAddDocumentLogisticsServiceCharge(): void
     {
@@ -1906,15 +1679,17 @@
         $this->disableRenderXmlContent();
 
-        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:Description', "Service");
-        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount', "10.0");
-        //TODO $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TypeCode', "S");
-        //TODO $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CategoryCode', "VAT");
-        //TODO $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:RateApplicablePercent', 0);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDiscountTermsToPaymentTerms
-     */
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:Description', 0, "Service");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount', 0, "10.0");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedAmount', 1);
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TypeCode', 0, "S");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CategoryCode', 0, "VAT");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:RateApplicablePercent', 0, "19.00");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:TypeCode', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:CategoryCode', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax/ram:RateApplicablePercent', 1);
+    }
+
     public function testAddDocumentPaymentTermAndDiscount(): void
     {
@@ -1933,9 +1708,152 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:CalculationPercent', 0, "10.0");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:ActualDiscountAmount', 0, "2.0");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentReceivableSpecifiedTradeAccountingAccount
-     */
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+    }
+
+    public function testAddDocumentPaymentTermAndPenalty(): void
+    {
+        (self::$document)->addDocumentPaymentTerm("Payment", new DateTime(), "mandate");
+        (self::$document)->addPenaltyTermsToPaymentTerms(10.0, new DateTime(), 1, "DAY", 20.0, 2.0);
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1, "mandate");
+
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisDateTime/udt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisPeriodMeasure', 0, "1.0", "unitCode", "DAY");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisAmount', 0, "20.0");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:CalculationPercent', 0, "10.0");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:ActualPenaltyAmount', 0, "2.0");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 2);
+    }
+
+    public function testAddDocumentPaymentTermXRechnung(): void
+    {
+        (self::$document)->addDocumentPaymentTermXRechnung("", [14], [2], [100], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1, "mandate");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 2);
+
+        (self::$document)->addDocumentPaymentTermXRechnung("Payment", [], [], [], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 2, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 2, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 2, "mandate");
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 3);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 3);
+
+        (self::$document)->addDocumentPaymentTermXRechnung("Payment", [14], [2], [100], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 2, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 2, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 2, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 3, "#SKONTO#TAGE=14#PROZENT=2.00#BASISBETRAG=100.00#\nPayment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 3, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 3, "mandate");
+
+        (self::$document)->addDocumentPaymentTermXRechnung("Payment", [14], [2], [], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 2, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 2, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 2, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 3, "#SKONTO#TAGE=14#PROZENT=2.00#BASISBETRAG=100.00#\nPayment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 3, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 3, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 4, "#SKONTO#TAGE=14#PROZENT=2.00#\nPayment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 4, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 4, "mandate");
+    }
+
+    public function testAddDocumentPaymenTermAndhPartialPaymentAmount(): void
+    {
+        (self::$document)->addDocumentPaymentTerm("Payment with partial payment amount", new \DateTime(), "mandate with partial payment amount", 100);
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 2, "Payment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 2, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 2, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 3, "#SKONTO#TAGE=14#PROZENT=2.00#BASISBETRAG=100.00#\nPayment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 3, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 3, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 4, "#SKONTO#TAGE=14#PROZENT=2.00#\nPayment");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 4, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 4, "mandate");
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 5, "Payment with partial payment amount");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 5, (new DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 5, "mandate with partial payment amount");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount', 0, 100.0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount', 1);
+    }
+
     public function testAddDocumentReceivableSpecifiedTradeAccountingAccount(): void
     {
@@ -1945,14 +1863,14 @@
         $this->disableRenderXmlContent();
 
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 0);
-
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 1);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::InitDocumentSummation
-     */
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 0, 'accountid');
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 0, 'typecode');
+
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 1, 'accountid2');
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 1, 'typecode2');
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 2);
+    }
+
     public function testInitDocumentSummation(): void
     {
@@ -1971,7 +1889,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::SetDocumentSummation
-     */
     public function testSetDocumentSummation(): void
     {
@@ -1990,55 +1905,16 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addNewPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionShipToGlobalId
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionShipToTaxRegistration
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipToAddress
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipToLegalOrganisation
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateShipToGlobalId
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateShipToTaxRegistration
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipToAddress
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipToLegalOrganisation
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionSupplyChainEvent
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionReceivableSpecifiedTradeAccountingAccount
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateCustomerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionProductCharacteristic
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionProductClassification
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionProductOriginTradeCountry
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionReferencedProduct
-     */
     public function testPositionMethods(): void
     {
         (self::$document)->addNewPosition("1", "linestatuscode", "linestatusreasoncode");
         (self::$document)->setDocumentPositionNote("content", "contentcode", "subjectcode");
-        (self::$document)->setDocumentPositionProductDetails("Product Name", "Product Description", "SellerID", "BuyerID", "0088", "11111222222");
+        (self::$document)->setDocumentPositionProductDetails("Product Name", "Product Description", "SellerID", "BuyerID", "0088", "11111222222", 'IndustryId', 'ModelId', 'BatchId', 'BrandeName', 'ModelName');
         (self::$document)->addDocumentPositionProductCharacteristic("attr", "attrvalue", "typecode", 10.2, "C62");
         (self::$document)->addDocumentPositionProductClassification("classcode", "classname", "listid", "listversionid");
         (self::$document)->setDocumentPositionProductOriginTradeCountry("DE");
-        (self::$document)->addDocumentPositionReferencedProduct("name", "description", "sellerid", "buyerid", "globalid", "0088", 10, "C62");
+        (self::$document)->addDocumentPositionReferencedProduct("name", "description", "sellerid", "buyerid", "globalid", "0088", 10, "C62", "industryid");
+        (self::$document)->setDocumentPositionSellerOrderReferencedDocument("S-0001", "2", new DateTime());
         (self::$document)->setDocumentPositionBuyerOrderReferencedDocument("B-0001", "1", new \DateTime());
+        (self::$document)->setDocumentPositionQuotationReferencedDocument("Q-0001", "3", new DateTime());
         (self::$document)->setDocumentPositionContractReferencedDocument("C-0002", "2", new \DateTime());
         (self::$document)->setDocumentPositionGrossPrice(105, 1, "C62");
@@ -2068,8 +1944,12 @@
         (self::$document)->setDocumentPositionBillingPeriod(new \DateTime(), new \DateTime());
         (self::$document)->addDocumentPositionAllowanceCharge(10.0, true, 19.0, 10.0, "reasoncode", "reason");
-        (self::$document)->setDocumentPositionLineSummation(100, 10);
+        (self::$document)->setDocumentPositionLineSummation(100);
+        (self::$document)->addDocumentPositionReceivableSpecifiedTradeAccountingAccount("accid2", "acctypecode2");
         (self::$document)->addDocumentPositionReceivableSpecifiedTradeAccountingAccount("accid", "acctypecode");
         (self::$document)->addDocumentPositionAdditionalReferencedDocument("1", "2", "3", "4", "name", "reftypecode", new \DateTime());
         (self::$document)->addDocumentPositionUltimateCustomerOrderReferencedDocument("ORDER-0001", "1.1", new \DateTime());
+        (self::$document)->addDocumentPositionAdditionalReferencedObjDocument("ZZZZZZZZZ", "916", "130");
+        (self::$document)->addDocumentPositionAdditionalReferencedObjDocument("ABCDEF123", "50", "130");
+        (self::$document)->addDocumentPositionInvoiceReferencedDocument("INV1", "1", "71", new \DateTime());
 
         $this->disableRenderXmlContent();
@@ -2083,6 +1963,11 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:SellerAssignedID', 0, "SellerID");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BuyerAssignedID', 0, "BuyerID");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IndustryAssignedID', 0, "IndustryId");
         //$this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Name', 0, "Product Mame");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:Description', 0, "Product Description");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ModelID', 0, "ModelId");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BatchID', 0, "BatchId");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BrandName', 0, "BrandeName");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ModelName', 0, "ModelName");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:Description', 0, "attr");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:Value', 0, "attrvalue");
@@ -2097,12 +1982,19 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:SellerAssignedID', 0, "sellerid");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:BuyerAssignedID', 0, "buyerid");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:IndustryAssignedID', 0, "industryid");
         $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:UnitQuantity', 0, "10", "unitCode", "C62");
         $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct/ram:GlobalID', 0, "globalid", "schemeID", "0088");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID', 0, "S-0001");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:LineID', 0, "2");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new DateTime())->format("Ymd"), "format", "102");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID', 0, "B-0001");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID', 0, "1");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0, (new \DateTime)->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:IssuerAssignedID', 0, "Q-0001");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:LineID', 0, "3");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID', 0, "C-0002");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID', 0, "2");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 0, "105.0");
         $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity', 0, "1", "unitCode", "C62");
@@ -2171,11 +2063,11 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID', 0, "DADV-001");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID', 0, "3");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID', 0, "RADV-002");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID', 0, "4");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID', 0, "DNOTE-003");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID', 0, "4");
-        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0, (new \DateTime())->format("Ymd"), "format", "102");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount', 0, "10.0");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode', 0, "VAT");
@@ -2193,12 +2085,42 @@
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:ActualAmount', 0, "10.0");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount', 0, "100.0");
-        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TotalAllowanceChargeAmount', 0, "10.0");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:TotalAllowanceChargeAmount', 0);
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 0, "accid");
         $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 0, "acctypecode");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::InitNewDocument
-     */
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:IndustryAssignedID', 0, "IndustryId");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ModelID', 0, "ModelId");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BatchID', 0, "BatchId");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:BrandName', 0, "BrandeName");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ModelName', 0, "ModelName");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID', 0, "ZZZZZZZZZ");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode', 0, "916");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 0, "130");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID', 1, "ABCDEF123");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode', 1, "50");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 1, "130");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 2);
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 0, "INV1");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:LineID', 0, "1");
+        $this->assertXPathValueWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 0, "71");
+    }
+
+    public function testSetForeignCurrency(): void
+    {
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 0, "10.0", "currencyID", "EUR");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 1);
+
+        (self::$document)->setForeignCurrency("DEM", 19.5583);
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 0, "10.0", "currencyID", "EUR");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 1, "19.56", "currencyID", "DEM");
+        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:SourceCurrencyCode', "EUR");
+        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:TargetCurrencyCode', "DEM");
+        $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:ConversionRate', "1.95583");
+    }
+
     public function testInitNewDocument(): void
     {
@@ -2215,8 +2137,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToContact
-     */
     public function testSetDocumentShipToMultipleContacts(): void
     {
@@ -2246,8 +2164,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToContact
-     */
     public function testSetDocumentShipToMultipleContactsAdd(): void
     {
@@ -2277,27 +2191,17 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::writeFile
-     */
     public function testWriteFile(): void
     {
         (self::$document)->writeFile(getcwd() . "/myfile.xml");
-        $this->assertTrue(file_exists(getcwd() . "/myfile.xml"));
+        $this->assertFileExists(getcwd() . "/myfile.xml");
         @unlink(getcwd() . "/myfile.xml");
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::__toString
-     */
     public function testToString(): void
     {
         $xmlContent = (string)self::$document;
-        $this->assertIsString($xmlContent);
         $this->assertStringStartsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rsm:CrossIndustryInvoice", $xmlContent);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getContentAsDomDocument
-     */
     public function testGetContentAsDomDocument(): void
     {
@@ -2306,7 +2210,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getContentAsDomXPath
-     */
     public function testGetContentAsDomXPath(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/BuilderMinimumTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/BuilderMinimumTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/BuilderMinimumTest.php	(revision 8504)
@@ -4,8 +4,8 @@
 
 use DateTime;
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\tests\traits\HandlesXmlTests;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentBuilder;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\tests\traits\HandlesXmlTests;
+use horstoeko\zugferd\ZugferdProfiles;
+use horstoeko\zugferd\ZugferdDocumentBuilder;
 
 class BuilderMinimumTest extends TestCase
@@ -27,15 +27,12 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getInvoiceObject
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getSerializer
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getObjectHelper
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getProfileDefinitionParameter
-     */
     public function testDocumentGetters(): void
     {
-        $this->assertNotNull(self::$document->getInvoiceObject());
-        $this->assertNotNull(self::$document->getSerializer());
-        $this->assertNotNull(self::$document->getObjectHelper());
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\minimum\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertInstanceOf(\JMS\Serializer\Serializer::class, $this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
+        $this->assertInstanceOf('horstoeko\zugferd\ZugferdObjectHelper', $this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
         $this->assertEquals('minimum', self::$document->getProfileDefinitionParameter('name'));
         $this->assertEquals('MINIMUM', self::$document->getProfileDefinitionParameter('altname'));
@@ -43,4 +40,5 @@
         $this->assertEquals('factur-x.xml', self::$document->getProfileDefinitionParameter('attachmentfilename'));
         $this->assertEquals('MINIMUM', self::$document->getProfileDefinitionParameter('xmpname'));
+        $this->assertEquals('1.0', self::$document->getProfileDefinitionParameter('xmpversion'));
         $this->expectNoticeOrWarningExt(
             function () {
@@ -61,7 +59,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInformation
-     */
     public function testSetDocumentInformation(): void
     {
@@ -69,5 +64,5 @@
 
         $this->disableRenderXmlContent();
-        $this->debugWriteFile();
+
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID', "471102");
         $this->assertXPathValue('/rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:TypeCode', "380");
@@ -76,7 +71,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBusinessProcess
-     */
     public function testSetDocumentBusinessProcess(): void
     {
@@ -93,7 +85,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentGeneralPaymentInformation
-     */
     public function testSetDocumentGeneralPaymentInformation(): void
     {
@@ -105,8 +94,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setIsDocumentCopy
-     * @covers \horstoeko\zugferd\jms\ZugferdTypesHandler::serializeIndicatorType
-     */
     public function testSetIsDocumentCopy(): void
     {
@@ -117,8 +102,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setIsTestDocument
-     * @covers \horstoeko\zugferd\jms\ZugferdTypesHandler::serializeIndicatorType
-     */
     public function testSetIsTestDocument(): void
     {
@@ -129,7 +110,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentNote
-     */
     public function testAddDocumentNote(): void
     {
@@ -144,7 +122,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSupplyChainEvent
-     */
     public function testSetDocumentSupplyChainEvent(): void
     {
@@ -155,7 +130,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerReference
-     */
     public function testSetDocumentBuyerReference(): void
     {
@@ -166,7 +138,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSeller
-     */
     public function testSetDocumentSeller(): void
     {
@@ -190,22 +159,16 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerId
-     */
     public function testAddDocumentSellerId(): void
     {
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID', 0);
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID', 1);
 
         (self::$document)->addDocumentSellerId('549911');
 
         $this->disableRenderXmlContent();
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID', 0);
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID', 1);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerGlobalId
-     */
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID', 1);
+    }
+
     public function testAddDocumentSellerGlobalId(): void
     {
@@ -216,7 +179,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRegistration
-     */
     public function testAddDocumentSellerTaxRegistration(): void
     {
@@ -229,10 +189,7 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerAddress
-     */
     public function testSetDocumentSellerAddress(): void
     {
-        (self::$document)->setDocumentSellerAddress("LieferantenstraÃe 20", "", "", "80333", "MÃŒnchen", "DE");
+        (self::$document)->setDocumentSellerAddress("LieferantenstraÃe 20", "Haus A", "Aufgang B", "80333", "MÃŒnchen", "DE");
 
         $this->disableRenderXmlContent();
@@ -246,7 +203,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerLegalOrganisation
-     */
     public function testSetDocumentSellerLegalOrganisation(): void
     {
@@ -258,7 +212,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerContact
-     */
     public function testSetDocumentSellerContact(): void
     {
@@ -298,7 +249,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerContact
-     */
     public function testAddDocumentSellerContact(): void
     {
@@ -329,7 +277,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerCommunication
-     */
     public function testSetDocumentSellerCommunication(): void
     {
@@ -341,7 +286,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyer
-     */
     public function testSetDocumentBuyer(): void
     {
@@ -353,7 +295,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerId
-     */
     public function testAddDocumentBuyerId(): void
     {
@@ -368,7 +307,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerGlobalId
-     */
     public function testAddDocumentBuyerGlobalId(): void
     {
@@ -379,7 +315,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerTaxRegistration
-     */
     public function testAddDocumentBuyerTaxRegistration(): void
     {
@@ -392,7 +325,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerAddress
-     */
     public function testSetDocumentBuyerAddress(): void
     {
@@ -409,7 +339,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerLegalOrganisation
-     */
     public function testSetDocumentBuyerLegalOrganisation(): void
     {
@@ -421,7 +348,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerContact
-     */
     public function testSetDocumentBuyerContact(): void
     {
@@ -443,7 +367,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentBuyerContact
-     */
     public function testAddDocumentBuyerContact(): void
     {
@@ -472,7 +393,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerCommunication
-     */
     public function testSetDocumentBuyerCommunication(): void
     {
@@ -484,7 +402,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeTradeParty
-     */
     public function testSetDocumentSellerTaxRepresentativeTradeParty(): void
     {
@@ -496,7 +411,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRepresentativeGlobalId
-     */
     public function testAddDocumentSellerTaxRepresentativeGlobalId(): void
     {
@@ -507,7 +419,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRepresentativeTaxRegistration
-     */
     public function testAddDocumentSellerTaxRepresentativeTaxRegistration(): void
     {
@@ -520,7 +429,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeAddress
-     */
     public function testSetDocumentSellerTaxRepresentativeAddress(): void
     {
@@ -537,7 +443,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeLegalOrganisation
-     */
     public function testSetDocumentSellerTaxRepresentativeLegalOrganisation(): void
     {
@@ -548,7 +451,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerTaxRepresentativeContact
-     */
     public function testSetDocumentSellerTaxRepresentativeContact(): void
     {
@@ -570,7 +470,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentSellerTaxRepresentativeContact
-     */
     public function testAddDocumentSellerTaxRepresentativeContact(): void
     {
@@ -599,7 +496,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUser
-     */
     public function testSetDocumentProductEndUser(): void
     {
@@ -611,7 +505,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentProductEndUserGlobalId
-     */
     public function testAddDocumentProductEndUserGlobalId(): void
     {
@@ -622,7 +513,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentProductEndUserTaxRegistration
-     */
     public function testAddDocumentProductEndUserTaxRegistration(): void
     {
@@ -635,7 +523,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUserAddress
-     */
     public function testSetDocumentProductEndUserAddress(): void
     {
@@ -652,7 +537,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUserLegalOrganisation
-     */
     public function testSetDocumentProductEndUserLegalOrganisation(): void
     {
@@ -664,7 +546,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProductEndUserContact
-     */
     public function testSetDocumentProductEndUserContact(): void
     {
@@ -686,7 +565,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentProductEndUserContact
-     */
     public function testAddDocumentProductEndUserContact(): void
     {
@@ -715,19 +591,36 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipTo
-     */
-    public function testSetDocumentShipTo(): void
-    {
-        (self::$document)->setDocumentShipTo("Kunden AG Mitte", "549910");
-
-        $this->disableRenderXmlContent();
+    public function testSetDocumentShipToAllEmpty(): void
+    {
+        (self::$document)->setDocumentShipTo();
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty');
         $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID');
         $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name');
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipToGlobalId
-     */
+    public function testAddDocumentShipTolAllEmptyId(): void
+    {
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name');
+
+        (self::$document)->addDocumentShipTolId('549911');
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name');
+    }
+
+    public function testSetDocumentShipTo(): void
+    {
+        (self::$document)->setDocumentShipTo("Kunden AG Mitte", "549910");
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:ID');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:ShipToTradeParty/ram:Name');
+    }
+
     public function testAddDocumentShipToGlobalId(): void
     {
@@ -738,7 +631,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipTolId
-     */
     public function testAddDocumentShipTolId(): void
     {
@@ -753,7 +643,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipToTaxRegistration
-     */
     public function testAddDocumentShipToTaxRegistration(): void
     {
@@ -766,7 +653,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToAddress
-     */
     public function testSetDocumentShipToAddress(): void
     {
@@ -783,7 +667,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToLegalOrganisation
-     */
     public function testSetDocumentShipToLegalOrganisation(): void
     {
@@ -794,7 +675,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToContact
-     */
     public function testSetDocumentShipToContact(): void
     {
@@ -816,7 +694,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipToContact
-     */
     public function testAddDocumentShipToContact(): void
     {
@@ -845,7 +720,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipTo
-     */
     public function testSetDocumentUltimateShipTo(): void
     {
@@ -857,7 +729,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToId
-     */
     public function testAddDocumentUltimateShipToId(): void
     {
@@ -872,7 +741,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToGlobalId
-     */
     public function testAddDocumentUltimateShipToGlobalId(): void
     {
@@ -883,7 +749,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToTaxRegistration
-     */
     public function testAddDocumentUltimateShipToTaxRegistration(): void
     {
@@ -896,7 +759,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipToAddress
-     */
     public function testSetDocumentUltimateShipToAddress(): void
     {
@@ -913,7 +773,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipToLegalOrganisation
-     */
     public function testSetDocumentUltimateShipToLegalOrganisation(): void
     {
@@ -925,7 +782,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentUltimateShipToContact
-     */
     public function testSetDocumentUltimateShipToContact(): void
     {
@@ -947,7 +801,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateShipToContact
-     */
     public function testAddDocumentUltimateShipToContact(): void
     {
@@ -976,7 +827,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFrom
-     */
     public function testSetDocumentShipFrom(): void
     {
@@ -988,7 +836,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromId
-     */
     public function testAddDocumentShipFromId(): void
     {
@@ -1003,7 +848,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromGlobalId
-     */
     public function testAddDocumentShipFromGlobalId(): void
     {
@@ -1014,7 +856,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromTaxRegistration
-     */
     public function testAddDocumentShipFromTaxRegistration(): void
     {
@@ -1027,7 +866,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFromAddress
-     */
     public function testSetDocumentShipFromAddress(): void
     {
@@ -1044,7 +880,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFromLegalOrganisation
-     */
     public function testSetDocumentShipFromLegalOrganisation(): void
     {
@@ -1056,7 +889,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipFromContact
-     */
     public function testSetDocumentShipFromContact(): void
     {
@@ -1078,7 +908,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentShipFromContact
-     */
     public function testAddDocumentShipFromContact(): void
     {
@@ -1107,7 +934,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicer
-     */
     public function testSetDocumentInvoicer(): void
     {
@@ -1119,7 +943,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerId
-     */
     public function testAddDocumentInvoicerId(): void
     {
@@ -1134,7 +955,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerGlobalId
-     */
     public function testAddDocumentInvoicerGlobalId(): void
     {
@@ -1145,7 +963,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerTaxRegistration
-     */
     public function testAddDocumentInvoicerTaxRegistration(): void
     {
@@ -1158,7 +973,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicerAddress
-     */
     public function testSetDocumentInvoicerAddress(): void
     {
@@ -1175,7 +987,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicerLegalOrganisation
-     */
     public function testSetDocumentInvoicerLegalOrganisation(): void
     {
@@ -1187,7 +996,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicerContact
-     */
     public function testSetDocumentInvoicerContact(): void
     {
@@ -1209,7 +1015,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoicerContact
-     */
     public function testAddDocumentInvoicerContact(): void
     {
@@ -1245,7 +1048,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoicee
-     */
     public function testSetDocumentInvoicee(): void
     {
@@ -1257,7 +1057,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeGlobalId
-     */
     public function testAddDocumentInvoiceeGlobalId(): void
     {
@@ -1268,7 +1065,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeId
-     */
     public function testAddDocumentInvoiceeId(): void
     {
@@ -1283,7 +1077,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeTaxRegistration
-     */
     public function testAddDocumentInvoiceeTaxRegistration(): void
     {
@@ -1296,7 +1087,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceeAddress
-     */
     public function testSetDocumentInvoiceeAddress(): void
     {
@@ -1313,7 +1101,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceeLegalOrganisation
-     */
     public function testSetDocumentInvoiceeLegalOrganisation(): void
     {
@@ -1325,7 +1110,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceeContact
-     */
     public function testSetDocumentInvoiceeContact(): void
     {
@@ -1347,7 +1129,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentInvoiceeContact
-     */
     public function testAddDocumentInvoiceeContact(): void
     {
@@ -1376,7 +1155,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayee
-     */
     public function testSetDocumentPayee(): void
     {
@@ -1388,7 +1164,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeId
-     */
     public function testAddDocumentPayeeId(): void
     {
@@ -1403,7 +1176,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeGlobalId
-     */
     public function testAddDocumentPayeeGlobalId(): void
     {
@@ -1414,7 +1184,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeTaxRegistration
-     */
     public function testAddDocumentPayeeTaxRegistration(): void
     {
@@ -1427,7 +1194,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayeeAddress
-     */
     public function testSetDocumentPayeeAddress(): void
     {
@@ -1444,7 +1208,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayeeLegalOrganisation
-     */
     public function testSetDocumentPayeeLegalOrganisation(): void
     {
@@ -1455,7 +1216,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPayeeContact
-     */
     public function testSetDocumentPayeeContact(): void
     {
@@ -1477,7 +1235,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPayeeContact
-     */
     public function testAddDocumentPayeeContact(): void
     {
@@ -1506,7 +1261,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentDeliveryTerms
-     */
     public function testSetDocumentDeliveryTerms(): void
     {
@@ -1517,7 +1269,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentSellerOrderReferencedDocument
-     */
     public function testSetDocumentSellerOrderReferencedDocument(): void
     {
@@ -1529,7 +1278,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBuyerOrderReferencedDocument
-     */
     public function testSetDocumentBuyerOrderReferencedDocument(): void
     {
@@ -1541,7 +1287,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentContractReferencedDocument
-     */
+    public function testSetDocumentQuotationReferencedDocument(): void
+    {
+        (self::$document)->setDocumentQuotationReferencedDocument('Q-4711', new DateTime());
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:IssuerAssignedID');
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:QuotationReferencedDocument/ram:FormattedIssueDateTime/ram:DateTimeString');
+    }
+
     public function testSetDocumentContractReferencedDocument(): void
     {
@@ -1553,7 +1305,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentAdditionalReferencedDocument
-     */
     public function testAddDocumentAdditionalReferencedDocument(): void
     {
@@ -1572,14 +1321,11 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 1);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentAdditionalReferencedDocument
-     */
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1);
+    }
+
     public function testAddDocumentAdditionalReferencedDocumentWithAttachment(): void
     {
-        (self::$document)->addDocumentAdditionalReferencedDocument("A-1011", "type", "http://lieferant.de/docs/a1011.pdf", "Leistungsnachweis", "reftype", new DateTime(), dirname(__FILE__) . "/../assets/InvalidPDF.pdf");
+        (self::$document)->addDocumentAdditionalReferencedDocument("A-1011", "type", "http://lieferant.de/docs/a1011.pdf", "Leistungsnachweis", "reftype", new DateTime(), __DIR__ . "/../assets/pdf_invalid.pdf");
 
         $this->disableRenderXmlContent();
@@ -1589,23 +1335,31 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:Name', 2);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 2);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 2);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 2);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject', 0);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentInvoiceReferencedDocument
-     */
     public function testSetDocumentInvoiceReferencedDocument(): void
     {
-        (self::$document)->setDocumentInvoiceReferencedDocument("INV-1", new DateTime());
-
-        $this->disableRenderXmlContent();
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID');
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString');
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentProcuringProject
-     */
+        (self::$document)->setDocumentInvoiceReferencedDocument("INV-1", "71", new DateTime());
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 0);
+    }
+
+    public function testAddDocumentInvoiceReferencedDocument(): void
+    {
+        (self::$document)->addDocumentInvoiceReferencedDocument("INV-2", "82", new DateTime());
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 1);
+    }
+
     public function testSetDocumentProcuringProject(): void
     {
@@ -1617,7 +1371,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentUltimateCustomerOrderReferencedDocument
-     */
     public function testAddDocumentUltimateCustomerOrderReferencedDocument(): void
     {
@@ -1627,10 +1378,7 @@
         $this->disableRenderXmlContent();
         $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:IssuerAssignedID');
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString');
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentDespatchAdviceReferencedDocument
-     */
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:UltimateCustomerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString');
+    }
+
     public function testSetDocumentDespatchAdviceReferencedDocument(): void
     {
@@ -1641,7 +1389,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentReceivingAdviceReferencedDocument
-     */
     public function testSetDocumentReceivingAdviceReferencedDocument(): void
     {
@@ -1652,7 +1397,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentDeliveryNoteReferencedDocument
-     */
     public function testSetDocumentDeliveryNoteReferencedDocument(): void
     {
@@ -1661,10 +1403,7 @@
         $this->disableRenderXmlContent();
         $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID');
-        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString');
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMean
-     */
+        $this->assertXPathNotExists('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString');
+    }
+
     public function testAddDocumentPaymentMean(): void
     {
@@ -1694,7 +1433,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMeanToCreditTransfer
-     */
     public function testAddDocumentPaymentMeanToCreditTransfer(): void
     {
@@ -1724,7 +1460,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMeanToDirectDebit
-     */
     public function testAddDocumentPaymentMeanToDirectDebit(): void
     {
@@ -1754,7 +1487,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMeanToPaymentCard
-     */
     public function testAddDocumentPaymentMeanToPaymentCard(): void
     {
@@ -1784,11 +1514,7 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentMean
-     */
-    public function testAddDocumentPaymentMeanLastMustBeSet(): void
-    {
-        (self::$document)->addDocumentPaymentMean("42", "Paying information", "cardtype", "cardid", "cardholder", "DE00000000000", "DE11111111111", "Bank", "44444444", "NOLADEQLB21");
-        (self::$document)->addDocumentPaymentMean("49", "Paying information 2", "cardtype2", "cardid2", "cardholder2", "DE22222222222", "DE33333333333", "Bank 2", "22222222", "BIC");
+    public function testAddDocumentPaymentMeanToCreditTransferNonSepa(): void
+    {
+        (self::$document)->addDocumentPaymentMeanToCreditTransferNonSepa("DE88888888888", "Bank Test", "66666666", "NOLADEQLB22");
 
         $this->disableRenderXmlContent();
@@ -1803,9 +1529,61 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 0);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentTax
-     */
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 1);
+    }
+
+    public function testAddDocumentPaymentMeanToDirectDebitNonSepa(): void
+    {
+        (self::$document)->addDocumentPaymentMeanToDirectDebitNonSepa("DE9999999999");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 1);
+    }
+
+    public function testAddDocumentPaymentMeanLastMustBeSet(): void
+    {
+        (self::$document)->addDocumentPaymentMean("42", "Paying information", "cardtype", "cardid", "cardholder", "DE00000000000", "DE11111111111", "Bank", "44444444", "NOLADEQLB21");
+        (self::$document)->addDocumentPaymentMean("49", "Paying information 2", "cardtype2", "cardid2", "cardholder2", "DE22222222222", "DE33333333333", "Bank 2", "22222222", "BIC");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:TypeCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:Information', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:ID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:ApplicableTradeSettlementFinancialCard/ram:CardholderName', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayerPartyDebtorFinancialAccount/ram:IBANID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:IBANID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:AccountName', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeePartyCreditorFinancialAccount/ram:ProprietaryID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans/ram:PayeeSpecifiedCreditorFinancialInstitution/ram:BICID', 0);
+    }
+
     public function testAddDocumentTax(): void
     {
@@ -1836,7 +1614,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentTaxSimple
-     */
     public function testAddDocumentTaxSimple(): void
     {
@@ -1855,7 +1630,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentBillingPeriod
-     */
     public function testSetDocumentBillingPeriod(): void
     {
@@ -1867,7 +1639,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentAllowanceCharge
-     */
     public function testAddDocumentAllowanceCharge(): void
     {
@@ -1896,7 +1665,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentLogisticsServiceCharge
-     */
     public function testAddDocumentLogisticsServiceCharge(): void
     {
@@ -1911,8 +1677,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDiscountTermsToPaymentTerms
-     */
     public function testAddDocumentPaymentTermAndDiscount(): void
     {
@@ -1931,9 +1693,95 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:CalculationPercent', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentDiscountTerms/ram:ActualDiscountAmount', 0);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentReceivableSpecifiedTradeAccountingAccount
-     */
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+    }
+
+    public function testAddDocumentPaymentTermAndPenalty(): void
+    {
+        (self::$document)->addDocumentPaymentTerm("Payment", new DateTime(), "mandate");
+        (self::$document)->addPenaltyTermsToPaymentTerms(10.0, new DateTime(), 1, "DAY", 20.0, 2.0);
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisDateTime/udt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisPeriodMeasure', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:BasisAmount', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:CalculationPercent', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ApplicableTradePaymentPenaltyTerms/ram:ActualPenaltyAmount', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+    }
+
+    public function testAddDocumentPaymentTermXRechnung(): void
+    {
+        (self::$document)->addDocumentPaymentTermXRechnung("", [14], [2], [100], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+
+        (self::$document)->addDocumentPaymentTermXRechnung("Payment", [], [], [], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+
+        (self::$document)->addDocumentPaymentTermXRechnung("Payment", [14], [2], [100], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+
+        (self::$document)->addDocumentPaymentTermXRechnung("Payment", [14], [2], [], new DateTime(), "mandate");
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 1);
+    }
+
+    public function testAddDocumentPaymenTermAndhPartialPaymentAmount(): void
+    {
+        (self::$document)->addDocumentPaymentTerm("Payment with partial payment amount", new \DateTime(), "mandate with partial payment amount", 100);
+
+        $this->disableRenderXmlContent();
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DueDateDateTime/udt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:PartialPaymentAmount', 0);
+    }
+
     public function testAddDocumentReceivableSpecifiedTradeAccountingAccount(): void
     {
@@ -1943,14 +1791,11 @@
         $this->disableRenderXmlContent();
 
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 0);
-
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 1);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 1);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::InitDocumentSummation
-     */
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 0);
+
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 1);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 1);
+    }
+
     public function testInitDocumentSummation(): void
     {
@@ -1969,7 +1814,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::SetDocumentSummation
-     */
     public function testSetDocumentSummation(): void
     {
@@ -1988,44 +1830,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addNewPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionShipToGlobalId
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionShipToTaxRegistration
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipToAddress
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipToLegalOrganisation
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateShipToGlobalId
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateShipToTaxRegistration
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipToAddress
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipToLegalOrganisation
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionSupplyChainEvent
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionReceivableSpecifiedTradeAccountingAccount
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionUltimateCustomerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionProductCharacteristic
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::addDocumentPositionProductClassification
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentPositionProductOriginTradeCountry
-     */
     public function testPositionMethods(): void
     {
@@ -2036,5 +1838,7 @@
         (self::$document)->addDocumentPositionProductClassification("classcode", "classname", "listid", "listversionid");
         (self::$document)->setDocumentPositionProductOriginTradeCountry("DE");
+        (self::$document)->setDocumentPositionSellerOrderReferencedDocument("S-0001", "2", new DateTime());
         (self::$document)->setDocumentPositionBuyerOrderReferencedDocument("B-0001", "1", new DateTime());
+        (self::$document)->setDocumentPositionQuotationReferencedDocument("Q-0001", "3", new DateTime());
         (self::$document)->setDocumentPositionContractReferencedDocument("C-0002", "2", new DateTime());
         (self::$document)->setDocumentPositionGrossPrice(105, 1, "C62");
@@ -2064,8 +1868,12 @@
         (self::$document)->setDocumentPositionBillingPeriod(new DateTime(), new DateTime());
         (self::$document)->addDocumentPositionAllowanceCharge(10.0, true, 19.0, 10.0, "reasoncode", "reason");
-        (self::$document)->setDocumentPositionLineSummation(100, 10);
+        (self::$document)->setDocumentPositionLineSummation(100);
+        (self::$document)->addDocumentPositionReceivableSpecifiedTradeAccountingAccount("accid2", "acctypecode2");
         (self::$document)->addDocumentPositionReceivableSpecifiedTradeAccountingAccount("accid", "acctypecode");
         (self::$document)->addDocumentPositionAdditionalReferencedDocument("1", "2", "3", "4", "name", "reftypecode", new DateTime());
         (self::$document)->addDocumentPositionUltimateCustomerOrderReferencedDocument("ORDER-0001", "1.1", new DateTime());
+        (self::$document)->addDocumentPositionAdditionalReferencedObjDocument("ZZZZZZZZZ", "916", "130");
+        (self::$document)->addDocumentPositionAdditionalReferencedObjDocument("ABCDEF123", "50", "130");
+        (self::$document)->addDocumentPositionInvoiceReferencedDocument("INV1", "1", "71", new \DateTime());
 
         $this->disableRenderXmlContent();
@@ -2087,10 +1895,16 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:DesignatedProductClassification/ram:ClassCode', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedTradeProduct/ram:ApplicableProductCharacteristic/ram:TypeCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:IssuerAssignedID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:LineID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:SellerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:IssuerAssignedID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:LineID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:BuyerOrderReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:IssuerAssignedID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:LineID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:QuotationReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:IssuerAssignedID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:LineID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:ContractReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:BasisQuantity', 0);
@@ -2168,11 +1982,11 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:IssuerAssignedID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:LineID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DespatchAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:IssuerAssignedID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:LineID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:ReceivingAdviceReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:IssuerAssignedID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:LineID', 0);
-        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/a:DateTimeString', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeDelivery/ram:DeliveryNoteReferencedDocument/ram:FormattedIssueDateTime/qdt:DateTimeString', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CalculatedAmount', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode', 0);
@@ -2193,9 +2007,28 @@
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:ID', 0);
         $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ReceivableSpecifiedTradeAccountingAccount/ram:TypeCode', 0);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::InitNewDocument
-     */
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:IssuerAssignedID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:TypeCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:AdditionalReferencedDocument/ram:ReferenceTypeCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:IssuerAssignedID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:LineID', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:InvoiceReferencedDocument/ram:TypeCode', 0);
+    }
+
+    public function testSetForeignCurrency(): void
+    {
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 0, "10.0", "currencyID", "EUR");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 1);
+
+        (self::$document)->setForeignCurrency("DEM", 19.5583);
+
+        $this->disableRenderXmlContent();
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 0, "10.0", "currencyID", "EUR");
+        $this->assertXPathValueWithIndexAndAttribute('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount', 1, "19.56", "currencyID", "DEM");
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:SourceCurrencyCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:TargetCurrencyCode', 0);
+        $this->assertXPathNotExistsWithIndex('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxApplicableTradeCurrencyExchange/ram:ConversionRate', 0);
+    }
+
     public function testInitNewDocument(): void
     {
@@ -2213,8 +2046,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToContact
-     */
     public function testSetDocumentShipToMultipleContacts(): void
     {
@@ -2244,8 +2073,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipTo
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::setDocumentShipToContact
-     */
     public function testSetDocumentShipToMultipleContactsAdd(): void
     {
@@ -2275,27 +2100,17 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::writeFile
-     */
     public function testWriteFile(): void
     {
         (self::$document)->writeFile(getcwd() . "/myfile.xml");
-        $this->assertTrue(file_exists(getcwd() . "/myfile.xml"));
+        $this->assertFileExists(getcwd() . "/myfile.xml");
         @unlink(getcwd() . "/myfile.xml");
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::__toString
-     */
     public function testToString(): void
     {
         $xmlContent = (string)self::$document;
-        $this->assertIsString($xmlContent);
         $this->assertStringStartsWith("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rsm:CrossIndustryInvoice", $xmlContent);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getContentAsDomDocument
-     */
     public function testGetContentAsDomDocument(): void
     {
@@ -2304,7 +2119,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::getContentAsDomXPath
-     */
     public function testGetContentAsDomXPath(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/DocumentTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/DocumentTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/DocumentTest.php	(revision 8504)
@@ -3,20 +3,16 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \ReflectionClass;
-use \ReflectionProperty;
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdProfiles;
+use ReflectionClass;
+use ReflectionProperty;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdProfiles;
 use horstoeko\zugferd\ZugferdDocumentBuilder;
 
 class DocumentTest extends TestCase
 {
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocument::__construct
-     */
     public function testDocumentCreationMinimum(): void
     {
         $doc = ZugferdDocumentBuilder::createNew(ZugferdProfiles::PROFILE_MINIMUM);
-        $this->assertNotNull($doc);
-        $this->assertEquals(ZugferdProfiles::PROFILE_MINIMUM, $doc->getProfileId());
+        $this->assertSame(ZugferdProfiles::PROFILE_MINIMUM, $doc->getProfileId());
         $this->assertArrayHasKey("contextparameter", $doc->getProfileDefinition());
         $this->assertArrayHasKey("name", $doc->getProfileDefinition());
@@ -25,12 +21,8 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocument::__construct
-     */
     public function testDocumentCreationBasic(): void
     {
         $doc = ZugferdDocumentBuilder::createNew(ZugferdProfiles::PROFILE_BASIC);
-        $this->assertNotNull($doc);
-        $this->assertEquals(ZugferdProfiles::PROFILE_BASIC, $doc->getProfileId());
+        $this->assertSame(ZugferdProfiles::PROFILE_BASIC, $doc->getProfileId());
         $this->assertArrayHasKey("contextparameter", $doc->getProfileDefinition());
         $this->assertArrayHasKey("name", $doc->getProfileDefinition());
@@ -39,12 +31,8 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocument::__construct
-     */
     public function testDocumentCreationBasicWl(): void
     {
         $doc = ZugferdDocumentBuilder::createNew(ZugferdProfiles::PROFILE_BASICWL);
-        $this->assertNotNull($doc);
-        $this->assertEquals(ZugferdProfiles::PROFILE_BASICWL, $doc->getProfileId());
+        $this->assertSame(ZugferdProfiles::PROFILE_BASICWL, $doc->getProfileId());
         $this->assertArrayHasKey("contextparameter", $doc->getProfileDefinition());
         $this->assertArrayHasKey("name", $doc->getProfileDefinition());
@@ -53,12 +41,8 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocument::__construct
-     */
     public function testDocumentCreationEn16931(): void
     {
         $doc = ZugferdDocumentBuilder::createNew(ZugferdProfiles::PROFILE_EN16931);
-        $this->assertNotNull($doc);
-        $this->assertEquals(ZugferdProfiles::PROFILE_EN16931, $doc->getProfileId());
+        $this->assertSame(ZugferdProfiles::PROFILE_EN16931, $doc->getProfileId());
         $this->assertArrayHasKey("contextparameter", $doc->getProfileDefinition());
         $this->assertArrayHasKey("name", $doc->getProfileDefinition());
@@ -67,12 +51,8 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocument::__construct
-     */
     public function testDocumentCreationExtended(): void
     {
         $doc = ZugferdDocumentBuilder::createNew(ZugferdProfiles::PROFILE_EXTENDED);
-        $this->assertNotNull($doc);
-        $this->assertEquals(ZugferdProfiles::PROFILE_EXTENDED, $doc->getProfileId());
+        $this->assertSame(ZugferdProfiles::PROFILE_EXTENDED, $doc->getProfileId());
         $this->assertArrayHasKey("contextparameter", $doc->getProfileDefinition());
         $this->assertArrayHasKey("name", $doc->getProfileDefinition());
@@ -81,8 +61,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocument::__construct
-     * @covers \horstoeko\zugferd\ZugferdDocument::initSerialzer()
-     */
     public function testDocumentInternals(): void
     {
@@ -98,15 +74,14 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocument::getInvoiceObject
-     * @covers \horstoeko\zugferd\ZugferdDocument::getSerializer
-     * @covers \horstoeko\zugferd\ZugferdDocument::getObjectHelper
-     */
     public function testDocumentGetters(): void
     {
         $doc = ZugferdDocumentBuilder::createNew(ZugferdProfiles::PROFILE_EXTENDED);
-        $this->assertNotNull($doc->getInvoiceObject());
-        $this->assertNotNull($doc->getSerializer());
-        $this->assertNotNull($doc->getObjectHelper());
+
+        $this->assertNotNull($this->invokePrivateMethodFromObject($doc, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject($doc, 'getInvoiceObject'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject($doc, 'getSerializer'));
+        $this->assertInstanceOf(\JMS\Serializer\Serializer::class, $this->invokePrivateMethodFromObject($doc, 'getSerializer'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject($doc, 'getObjectHelper'));
+        $this->assertInstanceOf('horstoeko\zugferd\ZugferdObjectHelper', $this->invokePrivateMethodFromObject($doc, 'getObjectHelper'));
     }
 
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/JsonExporterTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/JsonExporterTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/JsonExporterTest.php	(revision 8504)
@@ -3,7 +3,7 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdDocumentJsonExporter;
-use \horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentJsonExporter;
+use horstoeko\zugferd\ZugferdDocumentReader;
 
 class JsonExporterTest extends TestCase
@@ -16,10 +16,7 @@
     public static function setUpBeforeClass(): void
     {
-        self::$document = ZugferdDocumentReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/xrechnung_simple_2.xml");
+        self::$document = ZugferdDocumentReader::readAndGuessFromFile(__DIR__ . "/../assets/xml_xrechnung_2.xml");
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentJsonExporter::toJsonString
-     */
     public function testToJsonString(): void
     {
@@ -31,7 +28,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentJsonExporter::toPrettyJsonString
-     */
     public function testToPrettyJsonString(): void
     {
@@ -42,7 +36,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentJsonExporter::toJsonObject
-     */
     public function testToJsonObject(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ObjectHelperEn16931Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ObjectHelperEn16931Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ObjectHelperEn16931Test.php	(revision 8504)
@@ -4,8 +4,8 @@
 
 use DateTime;
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdObjectHelper;
-use \horstoeko\zugferd\exception\ZugferdUnknownDateFormatException;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdProfiles;
+use horstoeko\zugferd\ZugferdObjectHelper;
+use horstoeko\zugferd\exception\ZugferdUnknownDateFormatException;
 
 class ObjectHelperEn16931Test extends TestCase
@@ -21,7 +21,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDocumentCodeType
-     */
     public function testGetDocumentCodeTypeEmpty(): void
     {
@@ -30,7 +27,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDocumentCodeType
-     */
     public function testGetDocumentCodeTypeNotEmpty(): void
     {
@@ -43,7 +37,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeWithValue(): void
     {
@@ -56,7 +47,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeWithValueAndScheme(): void
     {
@@ -69,7 +57,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeAllEmpty(): void
     {
@@ -81,7 +66,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeAllNull(): void
     {
@@ -93,7 +75,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeEmptyValue(): void
     {
@@ -105,7 +84,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeNullValue(): void
     {
@@ -117,7 +93,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeEmptyValueWithScheme(): void
     {
@@ -129,7 +102,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTextType
-     */
     public function testGetTextTypeWithValue(): void
     {
@@ -141,7 +111,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTextType
-     */
     public function testGetTextTypeAllEmpty(): void
     {
@@ -153,7 +120,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTextType
-     */
     public function testGetTextTypeNullValue(): void
     {
@@ -165,7 +129,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCodeType
-     */
     public function testGetCodeTypeWithValue(): void
     {
@@ -177,7 +138,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCodeType2
-     */
     public function testGetCodeType2WithValue(): void
     {
@@ -213,7 +171,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCodeType
-     */
     public function testGetCodeTypeAllEmpty(): void
     {
@@ -225,7 +180,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCodeType
-     */
     public function testGetCodeTypeNullValue(): void
     {
@@ -237,7 +189,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIndicatorType
-     */
     public function testGetIndicatorTypeWithTrueValue(): void
     {
@@ -249,7 +198,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIndicatorType
-     */
     public function testGetIndicatorTypeWithFalseValue(): void
     {
@@ -266,7 +212,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIndicatorType
-     */
     public function testGetIndicatorTypeNullValue(): void
     {
@@ -278,7 +221,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNoteType
-     */
     public function testGetNoteTypeAllValues(): void
     {
@@ -292,7 +232,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNoteType
-     */
     public function testGetNoteTypeAllNullValue(): void
     {
@@ -304,7 +241,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNoteType
-     */
     public function testGetNoteTypeWithEmptyContent(): void
     {
@@ -316,7 +250,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNoteType
-     */
     public function testGetNoteTypeWithEmptyContentButWithSubjectCode(): void
     {
@@ -328,7 +259,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getFormattedDateTimeType
-     */
     public function testGetFormattedDateTimeType(): void
     {
@@ -341,7 +269,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getFormattedDateTimeType
-     */
     public function testGetFormattedDateTimeTypeWithNullValue(): void
     {
@@ -353,7 +278,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDateTimeType
-     */
     public function testGetDateTimeType(): void
     {
@@ -366,7 +288,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDateTimeType
-     */
     public function testGetDateTimeTypeWithNullValue(): void
     {
@@ -378,7 +297,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDateType
-     */
     public function testGetDateType(): void
     {
@@ -391,7 +307,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDateType
-     */
     public function testGetDateTypeWithNullValue(): void
     {
@@ -403,7 +316,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getAmountType
-     */
     public function testGetAmountTypeWithValue(): void
     {
@@ -412,11 +322,8 @@
          */
         $amounttype = self::$objectHelper->getAmountType(100.0);
-        $this->assertEquals(100.0, $amounttype->value());
+        $this->assertEqualsWithDelta(100.0, $amounttype->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("", $amounttype->getCurrencyID());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getAmountType
-     */
     public function testGetAmountTypeWithValueAndCurrency(): void
     {
@@ -425,11 +332,8 @@
          */
         $amounttype = self::$objectHelper->getAmountType(100.0, "EUR");
-        $this->assertEquals(100.0, $amounttype->value());
+        $this->assertEqualsWithDelta(100.0, $amounttype->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("EUR", $amounttype->getCurrencyID());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getAmountType
-     */
     public function testGetAmountTypeAllNull(): void
     {
@@ -441,7 +345,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getAmountType
-     */
     public function testGetAmountTypeWithValueAndEmptyCurrency(): void
     {
@@ -450,11 +351,8 @@
          */
         $amounttype = self::$objectHelper->getAmountType(100, "");
-        $this->assertEquals(100.0, $amounttype->value());
+        $this->assertEqualsWithDelta(100.0, $amounttype->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("", $amounttype->getCurrencyID());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getAmountType
-     */
     public function testGetAmountTypeWithNullValueAndCurrency(): void
     {
@@ -466,7 +364,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getPercentType
-     */
     public function testGetPercentTypeWithValue(): void
     {
@@ -475,10 +370,7 @@
          */
         $percenttype = self::$objectHelper->getPercentType(100.0);
-        $this->assertEquals(100.0, $percenttype->value());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getPercentType
-     */
+        $this->assertEqualsWithDelta(100.0, $percenttype->value(), PHP_FLOAT_EPSILON);
+    }
+
     public function testGetPercentTypeAllNull(): void
     {
@@ -490,7 +382,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getQuantityType
-     */
     public function testGetQuantityTypeWithValue(): void
     {
@@ -499,10 +388,7 @@
          */
         $quantitytype = self::$objectHelper->getQuantityType(100.0);
-        $this->assertEquals(100.0, $quantitytype->value());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getQuantityType
-     */
+        $this->assertEqualsWithDelta(100.0, $quantitytype->value(), PHP_FLOAT_EPSILON);
+    }
+
     public function testGetQuantityTypeWithValueAndUnitCode(): void
     {
@@ -511,11 +397,8 @@
          */
         $quantitytype = self::$objectHelper->getQuantityType(100.0, "C62");
-        $this->assertEquals(100.0, $quantitytype->value());
+        $this->assertEqualsWithDelta(100.0, $quantitytype->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("C62", $quantitytype->getUnitCode());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getQuantityType
-     */
     public function testGetQuantityTypeAllNull(): void
     {
@@ -527,7 +410,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getQuantityType
-     */
     public function testGetQuantityTypeWithNullValueAndUnitCode(): void
     {
@@ -539,7 +419,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getMeasureType
-     */
     public function testGetMeasureTypeWithValue(): void
     {
@@ -551,7 +428,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getMeasureType
-     */
     public function testGetMeasureTypeWithValueAndUnitCode(): void
     {
@@ -563,7 +437,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getMeasureType
-     */
     public function testGetMeasureTypeAllNull(): void
     {
@@ -575,7 +446,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getMeasureType
-     */
     public function testGetMeasureTypeWithNullValueAndUnitCode(): void
     {
@@ -587,7 +455,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNumericType
-     */
     public function testGetNumericTypeWithValue(): void
     {
@@ -599,7 +464,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNumericType
-     */
     public function testGetNumericTypeAllNull(): void
     {
@@ -611,7 +473,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxCategoryCodeType
-     */
     public function testGetTaxCategoryCodeTypeWithValue(): void
     {
@@ -623,7 +482,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxCategoryCodeType
-     */
     public function testGetTaxCategoryCodeTypeAllNull(): void
     {
@@ -635,7 +491,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxTypeCodeType
-     */
     public function testGetTaxTypeCodeTypeWithValue(): void
     {
@@ -647,7 +500,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxTypeCodeType
-     */
     public function testGetTaxTypeCodeTypeAllNull(): void
     {
@@ -659,7 +509,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTimeReferenceCodeType
-     */
     public function testGetTimeReferenceCodeTypeWithValue(): void
     {
@@ -671,7 +518,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTimeReferenceCodeType
-     */
     public function testGetTimeReferenceCodeTypeAllNull(): void
     {
@@ -683,7 +527,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSpecifiedPeriodType
-     */
     public function testGetSpecifiedPeriodTypeAllValues(): void
     {
@@ -700,7 +541,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSpecifiedPeriodType
-     */
     public function testGetSpecifiedPeriodTypeAllNull(): void
     {
@@ -712,7 +550,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getBinaryObjectType
-     */
     public function testGetBinaryObjectTypeAllValues(): void
     {
@@ -726,7 +561,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getBinaryObjectType
-     */
     public function testGetBinaryObjectTypeAllNull(): void
     {
@@ -738,7 +570,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getBinaryObjectType
-     */
     public function testGetBinaryObjectTypeDataNull(): void
     {
@@ -750,7 +579,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getBinaryObjectType
-     */
     public function testGetBinaryObjectTypeMimeTypeNull(): void
     {
@@ -762,7 +588,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getBinaryObjectType
-     */
     public function testGetBinaryObjectTypeFilenameNull(): void
     {
@@ -774,7 +597,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getReferencedDocumentType
-     */
     public function testGetReferencedDocumentTypeAllValues(): void
     {
@@ -782,5 +602,5 @@
          * @var \horstoeko\zugferd\entities\en16931\ram\ReferencedDocumentType
          */
-        $refdoctype = self::$objectHelper->getReferencedDocumentType("issuerid", "uriid", "lineid", "typecode", "name", "reftypcode", new \DateTime(), dirname(__FILE__) . "/../assets/en16931_allowancecharge.xml");
+        $refdoctype = self::$objectHelper->getReferencedDocumentType("issuerid", "uriid", "lineid", "typecode", "name", "reftypcode", new \DateTime(), __DIR__ . "/../assets/xml_en16931_2.xml");
         $this->assertEquals("issuerid", $refdoctype->getIssuerAssignedID()->value());
         $this->assertEquals("uriid", $refdoctype->getURIID()->value());
@@ -793,7 +613,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getReferencedDocumentType
-     */
     public function testGetReferencedDocumentTypeAllNull(): void
     {
@@ -805,7 +622,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCrossIndustryInvoice
-     */
     public function testCrossIndustryInvoice(): void
     {
@@ -817,7 +631,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeParty
-     */
     public function testGetTradePartyAllValues(): void
     {
@@ -833,7 +644,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeParty
-     */
     public function testGetTradePartyNullValues(): void
     {
@@ -845,7 +653,32 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAddress
-     */
+    public function testGetTradePartyAllValuesWithAllowEmpty(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\en16931\ram\TradePartyType
+         */
+        $tradeparty = self::$objectHelper->getTradePartyAllowEmpty("name", "id", "description");
+        $this->assertEquals("name", $tradeparty->getName());
+        $this->assertIsArray($tradeparty->getID());
+        $this->assertArrayHasKey(0, $tradeparty->getID());
+        $this->assertEquals("id", $tradeparty->getID()[0]);
+        $this->assertEquals("description", $tradeparty->getDescription());
+    }
+
+    public function testGetTradePartyNullValuesWithAllowEmpty(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\en16931\ram\TradePartyType
+         */
+        $tradeparty = self::$objectHelper->getTradePartyAllowEmpty(null, null, null);
+        $this->assertNotNull($tradeparty);
+        $this->assertNull($tradeparty->getName());
+        $this->assertEquals("", $tradeparty->getName());
+        $this->assertIsArray($tradeparty->getID());
+        $this->assertArrayNotHasKey(0, $tradeparty->getID());
+        $this->assertNull($tradeparty->getDescription());
+        $this->assertEquals("", $tradeparty->getDescription());
+    }
+
     public function testGetTradeAddressAllValues(): void
     {
@@ -863,7 +696,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAddress
-     */
     public function testGetTradeAddressAllNull(): void
     {
@@ -875,7 +705,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getLegalOrganization
-     */
     public function testGetLegalOrganizationAllValues(): void
     {
@@ -889,7 +716,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getLegalOrganization
-     */
     public function testGetLegalOrganizationAllNull(): void
     {
@@ -901,7 +725,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeContact
-     */
     public function testGetTradeContactAllValues(): void
     {
@@ -917,7 +738,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeContact
-     */
     public function testGetTradeContactAllNull(): void
     {
@@ -929,7 +747,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getUniversalCommunicationType
-     */
     public function testGetUniversalCommunicationTypeAllValues(): void
     {
@@ -943,7 +758,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getUniversalCommunicationType
-     */
     public function testGetUniversalCommunicationTypeAllNull(): void
     {
@@ -955,7 +767,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxRegistrationType
-     */
     public function testGetTaxRegistrationTypeAllValues(): void
     {
@@ -968,7 +777,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxRegistrationType
-     */
     public function testGetTaxRegistrationTypeAllNull(): void
     {
@@ -980,7 +786,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxRegistrationType
-     */
     public function testGetTaxRegistrationTypeIdNull(): void
     {
@@ -992,7 +795,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxRegistrationType
-     */
     public function testGetTaxRegistrationTypeTypeNull(): void
     {
@@ -1004,7 +804,22 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeDeliveryTermsType
-     */
+    public function testGetTradeDeliveryTermsTypeCodeAllValues(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\extended\qdt\DeliveryTermsCodeType
+         */
+        $devterms = self::$objectHelper->getTradeDeliveryTermsCodeType('code');
+        $this->assertNull($devterms);
+    }
+
+    public function testGetTradeDeliveryTermsTypeCodeAllNull(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\extended\qdt\DeliveryTermsCodeType
+         */
+        $devterms = self::$objectHelper->getTradeDeliveryTermsCodeType(null);
+        $this->assertNull($devterms);
+    }
+
     public function testGetTradeDeliveryTermsTypeAllValues(): void
     {
@@ -1016,7 +831,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeDeliveryTermsType
-     */
     public function testGetTradeDeliveryTermsTypeAllNull(): void
     {
@@ -1028,7 +840,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProcuringProjectType
-     */
     public function testGetProcuringProjectTypeAllValues(): void
     {
@@ -1041,7 +850,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProcuringProjectType
-     */
     public function testGetProcuringProjectTypeIdNull(): void
     {
@@ -1053,7 +859,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProcuringProjectType
-     */
     public function testGetProcuringProjectTypeNameNull(): void
     {
@@ -1065,7 +868,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProcuringProjectType
-     */
     public function testGetProcuringProjectTypeAllNull(): void
     {
@@ -1077,7 +877,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSupplyChainEventType
-     */
     public function testGetSupplyChainEventTypeAllValues(): void
     {
@@ -1090,7 +887,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSupplyChainEventType
-     */
     public function testGetSupplyChainEventTypeAllNull(): void
     {
@@ -1102,7 +896,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementFinancialCardType
-     */
     public function testGetTradeSettlementFinancialCardTypeAllValues(): void
     {
@@ -1110,13 +901,10 @@
          * @var \horstoeko\zugferd\entities\en16931\ram\TradeSettlementFinancialCardType
          */
-        $fincard = self::$objectHelper->getTradeSettlementFinancialCardType("type", "id", "name");
+        $fincard = self::$objectHelper->getTradeSettlementFinancialCardType("type", "6759 6498 2643 8453", "name");
         $this->assertEquals("type", $fincard->getID()->getSchemeID());
-        $this->assertEquals("id", $fincard->getID());
+        $this->assertEquals("6759 68453", $fincard->getID());
         $this->assertEquals("name", $fincard->getCardholderName());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementFinancialCardType
-     */
     public function testGetTradeSettlementFinancialCardTypeAllNull(): void
     {
@@ -1128,7 +916,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDebtorFinancialAccountType
-     */
     public function testGetDebtorFinancialAccountTypeAllValues(): void
     {
@@ -1140,7 +925,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDebtorFinancialAccountType
-     */
     public function testGetDebtorFinancialAccountTypeAllNull(): void
     {
@@ -1152,7 +934,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCreditorFinancialAccountType
-     */
     public function testGetCreditorFinancialAccountTypeAllValues(): void
     {
@@ -1166,7 +945,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCreditorFinancialAccountType
-     */
     public function testGetCreditorFinancialAccountTypeAllNull(): void
     {
@@ -1178,7 +954,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCreditorFinancialInstitutionType
-     */
     public function testGetCreditorFinancialInstitutionTypeAllValues(): void
     {
@@ -1190,7 +963,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCreditorFinancialInstitutionType
-     */
     public function testGetCreditorFinancialInstitutionTypeAllNull(): void
     {
@@ -1202,7 +972,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementPaymentMeansType
-     */
     public function testGetTradeSettlementPaymentMeansTypeAllValues(): void
     {
@@ -1214,7 +981,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementPaymentMeansType
-     */
     public function testGetTradeSettlementPaymentMeansTypeAllNull(): void
     {
@@ -1226,7 +990,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePaymentTermsType
-     */
     public function testGetTradePaymentTermsTypeAllValues(): void
     {
@@ -1239,7 +1000,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePaymentTermsType
-     */
     public function testGetTradePaymentTermsTypeAllNull(): void
     {
@@ -1251,7 +1009,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePaymentDiscountTermsType
-     */
     public function testGetTradePaymentDiscountTermsTypeAllValues(): void
     {
@@ -1263,7 +1018,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePaymentDiscountTermsType
-     */
     public function testGetTradePaymentDiscountTermsTypeAllNull(): void
     {
@@ -1275,7 +1027,22 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeTaxType
-     */
+    public function testGetTradePaymentPenaltyTermsTypeAllValues(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\extended\ram\TradePaymentPenaltyTermsType
+         */
+        $penaltyterms = self::$objectHelper->getTradePaymentPenaltyTermsType(new \DateTime(), 2, "DAY", 1, 1, 1);
+        $this->assertNull($penaltyterms);
+    }
+
+    public function testGetTradePaymentPenaltyTermsTypeAllNull(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\extended\ram\TradePaymentPenaltyTermsType
+         */
+        $penaltyterms = self::$objectHelper->getTradePaymentPenaltyTermsType(null, null, null, null, null, null);
+        $this->assertNull($penaltyterms);
+    }
+
     public function testGetTradeTaxTypeAllValues(): void
     {
@@ -1286,6 +1053,6 @@
         $this->assertEquals("category", $tax->getCategoryCode());
         $this->assertEquals("type", $tax->getTypeCode());
-        $this->assertEquals(100.0, $tax->getBasisAmount()->value());
-        $this->assertEquals(19.0, $tax->getCalculatedAmount()->value());
+        $this->assertEqualsWithDelta(100.0, $tax->getBasisAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(19.0, $tax->getCalculatedAmount()->value(), PHP_FLOAT_EPSILON);
         //$this->assertEquals(19.0, $tax->getRateApplicablePercent()->value());
         $this->assertEquals("reasoncode", $tax->getExemptionReasonCode());
@@ -1295,7 +1062,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeTaxType
-     */
     public function testGetTradeTaxTypeAllNull(): void
     {
@@ -1307,7 +1071,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAllowanceChargeType
-     */
     public function testGetTradeAllowanceChargeTypeAllValues(): void
     {
@@ -1327,11 +1088,11 @@
         $calculationpercent = $allowancecharge->getCalculationPercent();
 
-        $this->assertEquals(10.0, $allowancecharge->getActualAmount()->value());
+        $this->assertEqualsWithDelta(10.0, $allowancecharge->getActualAmount()->value(), PHP_FLOAT_EPSILON);
         $this->assertTrue($allowancecharge->getChargeIndicator()->getIndicator());
         $this->assertEquals("taxtype", $allowancecharge->getCategoryTradeTax()->getTypeCode());
         $this->assertEquals("taxcategory", $allowancecharge->getCategoryTradeTax()->getCategoryCode());
-        $this->assertEquals(19.0, $rateapplicablepercent->value());
+        $this->assertEqualsWithDelta(19.0, $rateapplicablepercent->value(), PHP_FLOAT_EPSILON);
         $this->assertFalse(self::$objectHelper->methodExists($allowancecharge, "getSequenceNumeric"));
-        $this->assertEquals(2.0, $calculationpercent->value());
+        $this->assertEqualsWithDelta(2.0, $calculationpercent->value(), PHP_FLOAT_EPSILON);
         $this->assertFalse(self::$objectHelper->methodExists($allowancecharge, "getBasisQuantity"));
         $this->assertFalse(self::$objectHelper->methodExists($allowancecharge, "getBasisQuantity"));
@@ -1340,7 +1101,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAllowanceChargeType
-     */
     public function testGetTradeAllowanceChargeTypeAllNull(): void
     {
@@ -1352,7 +1110,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getLogisticsServiceChargeType
-     */
     public function testGetLogisticsServiceChargeTypeAllValues(): void
     {
@@ -1366,7 +1121,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getLogisticsServiceChargeType
-     */
     public function testGetLogisticsServiceChargeTypeAllNull(): void
     {
@@ -1378,8 +1130,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementHeaderMonetarySummationType
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementHeaderMonetarySummationTypeOnly
-     */
     public function testGetTradeSettlementHeaderMonetarySummationTypeAllValues(): void
     {
@@ -1388,21 +1136,17 @@
          */
         $summation = self::$objectHelper->getTradeSettlementHeaderMonetarySummationType(119, 100, 100, 1, 2, 99, 99 * 0.19, 0.0, 10);
-        $this->assertEquals(119.0, $summation->getGrandTotalAmount()->value());
-        $this->assertEquals(100.0, $summation->getDuePayableAmount()->value());
-        $this->assertEquals(100.0, $summation->getLineTotalAmount()->value());
-        $this->assertEquals(1.0, $summation->getChargeTotalAmount()->value());
-        $this->assertEquals(2.0, $summation->getAllowanceTotalAmount()->value());
-        $this->assertEquals(99.0, $summation->getTaxBasisTotalAmount()->value());
+        $this->assertEqualsWithDelta(119.0, $summation->getGrandTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(100.0, $summation->getDuePayableAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(100.0, $summation->getLineTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(1.0, $summation->getChargeTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(2.0, $summation->getAllowanceTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(99.0, $summation->getTaxBasisTotalAmount()->value(), PHP_FLOAT_EPSILON);
         $this->assertIsArray($summation->getTaxTotalAmount());
         $this->assertArrayHasKey(0, $summation->getTaxTotalAmount());
         $this->assertEquals(99.0 * 0.19, $summation->getTaxTotalAmount()[0]->value());
-        $this->assertEquals(0.0, $summation->getRoundingAmount()->value());
-        $this->assertEquals(10.0, $summation->getTotalPrepaidAmount()->value());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementHeaderMonetarySummationType
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementHeaderMonetarySummationTypeOnly
-     */
+        $this->assertEqualsWithDelta(0.0, $summation->getRoundingAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.0, $summation->getTotalPrepaidAmount()->value(), PHP_FLOAT_EPSILON);
+    }
+
     public function testGetTradeSettlementHeaderMonetarySummationTypeAllNull(): void
     {
@@ -1414,7 +1158,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementHeaderMonetarySummationTypeOnly
-     */
     public function testGetTradeSettlementHeaderMonetarySummationTypeOnly(): void
     {
@@ -1423,7 +1164,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAccountingAccountType
-     */
     public function testGetTradeAccountingAccountTypeAllValues(): void
     {
@@ -1436,7 +1174,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAccountingAccountType
-     */
     public function testGetTradeAccountingAccountTypeAllNull(): void
     {
@@ -1448,7 +1183,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDocumentLineDocumentType
-     */
     public function testGetDocumentLineDocumentTypeAllValues(): void
     {
@@ -1460,7 +1192,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDocumentLineDocumentType
-     */
     public function testGetDocumentLineDocumentTypeAllNull(): void
     {
@@ -1472,7 +1201,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSupplyChainTradeLineItemType
-     */
     public function testGetSupplyChainTradeLineItemTypeAllValues(): void
     {
@@ -1485,7 +1211,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSupplyChainTradeLineItemType
-     */
     public function testGetSupplyChainTradeLineItemTypeAllNull(): void
     {
@@ -1497,7 +1220,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeProductType
-     */
     public function testGetTradeProductTypeAllValues(): void
     {
@@ -1514,7 +1234,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProductCharacteristicType
-     */
     public function testGetProductCharacteristicType(): void
     {
@@ -1533,7 +1250,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProductClassificationType
-     */
     public function testGetProductClassificationType(): void
     {
@@ -1553,7 +1267,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getReferencedProductType
-     */
     public function testGetReferencedProductType(): void
     {
@@ -1561,5 +1272,5 @@
          * @var \horstoeko\zugferd\entities\extended\ram\ReferencedProductType
          */
-        $referencedProduct = self::$objectHelper->getReferencedProductType("globalid", "globalidtype", "sellerid", "buyerid", "name", "description", 10, "C62");
+        $referencedProduct = self::$objectHelper->getReferencedProductType("globalid", "globalidtype", "sellerid", "buyerid", "industryid", "name", "description", 10, "C62");
         $this->assertNull($referencedProduct, "The referenced product is not available in EN16931 profile");
 
@@ -1567,11 +1278,8 @@
          * @var \horstoeko\zugferd\entities\extended\ram\ReferencedProductType
          */
-        $referencedProduct = self::$objectHelper->getReferencedProductType(null, null, null, null, null, null, null, null);
+        $referencedProduct = self::$objectHelper->getReferencedProductType(null, null, null, null, null, null, null, null, null);
         $this->assertNull($referencedProduct);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCountryIDType
-     */
     public function testGetCountryIDType(): void
     {
@@ -1589,7 +1297,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeCountryType
-     */
     public function testGetTradeCountryType(): void
     {
@@ -1607,7 +1312,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeProductType
-     */
     public function testGetTradeProductTypeAllNull(): void
     {
@@ -1619,7 +1321,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePriceType
-     */
     public function testGetTradePriceTypeAllValues(): void
     {
@@ -1628,12 +1327,9 @@
          */
         $price = self::$objectHelper->getTradePriceType(1.0, 2.0, "C62");
-        $this->assertEquals(1.0, $price->getChargeAmount()->value());
-        $this->assertEquals(2.0, $price->getBasisQuantity()->value());
+        $this->assertEqualsWithDelta(1.0, $price->getChargeAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(2.0, $price->getBasisQuantity()->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("C62", $price->getBasisQuantity()->getUnitCode());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePriceType
-     */
     public function testGetTradePriceTypeAllNull(): void
     {
@@ -1645,7 +1341,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementLineMonetarySummationType
-     */
     public function testGetTradeSettlementLineMonetarySummationTypeAllValues(): void
     {
@@ -1653,12 +1346,13 @@
          * @var \horstoeko\zugferd\entities\en16931\ram\TradeSettlementLineMonetarySummationType
          */
-        $summation = self::$objectHelper->getTradeSettlementLineMonetarySummationType(1.0, 2.0);
-        $this->assertEquals(1.0, $summation->getLineTotalAmount()->value());
+        $summation = self::$objectHelper->getTradeSettlementLineMonetarySummationType(1.0, 6.0, 3.0, 4.0, 5.0, 2.0);
+        $this->assertEqualsWithDelta(1.0, $summation->getLineTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertFalse(self::$objectHelper->methodExists($summation, "getChargeTotalAmount"));
+        $this->assertFalse(self::$objectHelper->methodExists($summation, "getAllowanceTotalAmount"));
+        $this->assertFalse(self::$objectHelper->methodExists($summation, "getTaxTotalAmount"));
+        $this->assertFalse(self::$objectHelper->methodExists($summation, "getGrandTotalAmount"));
         $this->assertFalse(self::$objectHelper->methodExists($summation, "getTotalAllowanceChargeAmount"));
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementLineMonetarySummationType
-     */
     public function testGetTradeSettlementLineMonetarySummationTypeAllNull(): void
     {
@@ -1666,31 +1360,25 @@
          * @var \horstoeko\zugferd\entities\en16931\ram\TradeSettlementLineMonetarySummationType
          */
-        $summation = self::$objectHelper->getTradeSettlementLineMonetarySummationType(null, null);
+        $summation = self::$objectHelper->getTradeSettlementLineMonetarySummationType();
         $this->assertNull($summation);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
     public function testToDateTimeGeneral(): void
     {
         $this->assertEquals("20200202", self::$objectHelper->toDateTime("20200202", "102")->format("Ymd"));
-        $this->assertNull(self::$objectHelper->toDateTime("", "102"));
-        $this->assertNull(self::$objectHelper->toDateTime("20200202", ""));
-        $this->assertNull(self::$objectHelper->toDateTime(null, "102"));
-        $this->assertNull(self::$objectHelper->toDateTime("20200202", null));
-        $this->assertNull(self::$objectHelper->toDateTime("", ""));
-        $this->assertNull(self::$objectHelper->toDateTime(null, null));
-        $this->assertNull(self::$objectHelper->toDateTime("", null));
-        $this->assertNull(self::$objectHelper->toDateTime(null, ""));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("", "102"));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("20200202", ""));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime(null, "102"));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("20200202", null));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("", ""));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime(null, null));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("", null));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime(null, ""));
         $this->assertNull(self::$objectHelper->toDateTime(null, null));
         $this->expectException(ZugferdUnknownDateFormatException::class);
-        $this->expectExceptionMessage("The date format identifier 999 is unknown or not supported");
-        $this->assertNull(self::$objectHelper->toDateTime("20200202", "999"));
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
+        $this->expectExceptionMessage("Invalid date format 999");
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("20200202", "999"));
+    }
+
     public function testToDateTime101(): void
     {
@@ -1698,7 +1386,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
     public function testToDateTime201(): void
     {
@@ -1706,7 +1391,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
     public function testToDateTime202(): void
     {
@@ -1714,7 +1396,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
     public function testToDateTime203(): void
     {
@@ -1722,7 +1401,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
     public function testToDateTime204(): void
     {
@@ -1730,7 +1406,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getRateType
-     */
     public function testGetRateType(): void
     {
@@ -1742,7 +1415,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxApplicableTradeCurrencyExchangeType
-     */
     public function testGetTaxApplicableTradeCurrencyExchangeType(): void
     {
@@ -1760,7 +1430,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::createClassInstance
-     */
     public function testCreateClassInstance(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ObjectHelperExtendedTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ObjectHelperExtendedTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ObjectHelperExtendedTest.php	(revision 8504)
@@ -4,8 +4,8 @@
 
 use DateTime;
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdObjectHelper;
-use \horstoeko\zugferd\exception\ZugferdUnknownDateFormatException;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdProfiles;
+use horstoeko\zugferd\ZugferdObjectHelper;
+use horstoeko\zugferd\exception\ZugferdUnknownDateFormatException;
 
 class ObjectHelperExtendedTest extends TestCase
@@ -21,7 +21,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDocumentCodeType
-     */
     public function testGetDocumentCodeTypeEmpty(): void
     {
@@ -30,7 +27,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDocumentCodeType
-     */
     public function testGetDocumentCodeTypeNotEmpty(): void
     {
@@ -43,7 +37,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeWithValue(): void
     {
@@ -56,7 +47,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeWithValueAndScheme(): void
     {
@@ -69,7 +57,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeAllEmpty(): void
     {
@@ -81,7 +66,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeAllNull(): void
     {
@@ -93,7 +75,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeEmptyValue(): void
     {
@@ -105,7 +84,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeNullValue(): void
     {
@@ -117,7 +93,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIdType
-     */
     public function testGetIdTypeEmptyValueWithScheme(): void
     {
@@ -129,7 +102,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTextType
-     */
     public function testGetTextTypeWithValue(): void
     {
@@ -141,7 +111,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTextType
-     */
     public function testGetTextTypeAllEmpty(): void
     {
@@ -153,7 +120,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTextType
-     */
     public function testGetTextTypeNullValue(): void
     {
@@ -165,7 +129,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCodeType
-     */
     public function testGetCodeTypeWithValue(): void
     {
@@ -177,7 +138,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCodeType2
-     */
     public function testGetCodeType2WithValue(): void
     {
@@ -213,7 +171,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCodeType
-     */
     public function testGetCodeTypeAllEmpty(): void
     {
@@ -225,7 +180,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCodeType
-     */
     public function testGetCodeTypeNullValue(): void
     {
@@ -237,7 +189,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIndicatorType
-     */
     public function testGetIndicatorTypeWithTrueValue(): void
     {
@@ -249,7 +198,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIndicatorType
-     */
     public function testGetIndicatorTypeWithFalseValue(): void
     {
@@ -266,7 +212,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getIndicatorType
-     */
     public function testGetIndicatorTypeNullValue(): void
     {
@@ -278,7 +221,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNoteType
-     */
     public function testGetNoteTypeAllValues(): void
     {
@@ -292,7 +232,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNoteType
-     */
     public function testGetNoteTypeAllNullValue(): void
     {
@@ -304,7 +241,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNoteType
-     */
     public function testGetNoteTypeWithEmptyContent(): void
     {
@@ -316,7 +250,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNoteType
-     */
     public function testGetNoteTypeWithEmptyContentButWithSubjectCode(): void
     {
@@ -328,7 +259,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getFormattedDateTimeType
-     */
     public function testGetFormattedDateTimeType(): void
     {
@@ -341,7 +269,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getFormattedDateTimeType
-     */
     public function testGetFormattedDateTimeTypeWithNullValue(): void
     {
@@ -353,7 +278,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDateTimeType
-     */
     public function testGetDateTimeType(): void
     {
@@ -366,7 +288,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDateTimeType
-     */
     public function testGetDateTimeTypeWithNullValue(): void
     {
@@ -378,7 +297,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDateType
-     */
     public function testGetDateType(): void
     {
@@ -391,7 +307,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDateType
-     */
     public function testGetDateTypeWithNullValue(): void
     {
@@ -403,7 +316,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getAmountType
-     */
     public function testGetAmountTypeWithValue(): void
     {
@@ -412,11 +322,8 @@
          */
         $amounttype = self::$objectHelper->getAmountType(100.0);
-        $this->assertEquals(100.0, $amounttype->value());
+        $this->assertEqualsWithDelta(100.0, $amounttype->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("", $amounttype->getCurrencyID());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getAmountType
-     */
     public function testGetAmountTypeWithValueAndCurrency(): void
     {
@@ -425,11 +332,8 @@
          */
         $amounttype = self::$objectHelper->getAmountType(100.0, "EUR");
-        $this->assertEquals(100.0, $amounttype->value());
+        $this->assertEqualsWithDelta(100.0, $amounttype->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("EUR", $amounttype->getCurrencyID());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getAmountType
-     */
     public function testGetAmountTypeAllNull(): void
     {
@@ -441,7 +345,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getAmountType
-     */
     public function testGetAmountTypeWithValueAndEmptyCurrency(): void
     {
@@ -450,11 +351,8 @@
          */
         $amounttype = self::$objectHelper->getAmountType(100, "");
-        $this->assertEquals(100.0, $amounttype->value());
+        $this->assertEqualsWithDelta(100.0, $amounttype->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("", $amounttype->getCurrencyID());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getAmountType
-     */
     public function testGetAmountTypeWithNullValueAndCurrency(): void
     {
@@ -466,7 +364,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getPercentType
-     */
     public function testGetPercentTypeWithValue(): void
     {
@@ -475,10 +370,7 @@
          */
         $percenttype = self::$objectHelper->getPercentType(100.0);
-        $this->assertEquals(100.0, $percenttype->value());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getPercentType
-     */
+        $this->assertEqualsWithDelta(100.0, $percenttype->value(), PHP_FLOAT_EPSILON);
+    }
+
     public function testGetPercentTypeAllNull(): void
     {
@@ -490,7 +382,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getQuantityType
-     */
     public function testGetQuantityTypeWithValue(): void
     {
@@ -499,10 +388,7 @@
          */
         $quantitytype = self::$objectHelper->getQuantityType(100.0);
-        $this->assertEquals(100.0, $quantitytype->value());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getQuantityType
-     */
+        $this->assertEqualsWithDelta(100.0, $quantitytype->value(), PHP_FLOAT_EPSILON);
+    }
+
     public function testGetQuantityTypeWithValueAndUnitCode(): void
     {
@@ -511,11 +397,8 @@
          */
         $quantitytype = self::$objectHelper->getQuantityType(100.0, "C62");
-        $this->assertEquals(100.0, $quantitytype->value());
+        $this->assertEqualsWithDelta(100.0, $quantitytype->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("C62", $quantitytype->getUnitCode());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getQuantityType
-     */
     public function testGetQuantityTypeAllNull(): void
     {
@@ -527,7 +410,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getQuantityType
-     */
     public function testGetQuantityTypeWithNullValueAndUnitCode(): void
     {
@@ -539,7 +419,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getMeasureType
-     */
     public function testGetMeasureTypeWithValue(): void
     {
@@ -548,10 +425,7 @@
          */
         $measuretype = self::$objectHelper->getMeasureType(100.0);
-        $this->assertEquals(100.0, $measuretype->value());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getMeasureType
-     */
+        $this->assertEqualsWithDelta(100.0, $measuretype->value(), PHP_FLOAT_EPSILON);
+    }
+
     public function testGetMeasureTypeWithValueAndUnitCode(): void
     {
@@ -560,11 +434,8 @@
          */
         $measuretype = self::$objectHelper->getMeasureType(100.0, "DAY");
-        $this->assertEquals(100.0, $measuretype->value());
+        $this->assertEqualsWithDelta(100.0, $measuretype->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("DAY", $measuretype->getUnitCode());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getMeasureType
-     */
     public function testGetMeasureTypeAllNull(): void
     {
@@ -576,7 +447,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getMeasureType
-     */
     public function testGetMeasureTypeWithNullValueAndUnitCode(): void
     {
@@ -588,7 +456,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNumericType
-     */
     public function testGetNumericTypeWithValue(): void
     {
@@ -600,7 +465,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getNumericType
-     */
     public function testGetNumericTypeAllNull(): void
     {
@@ -612,7 +474,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxCategoryCodeType
-     */
     public function testGetTaxCategoryCodeTypeWithValue(): void
     {
@@ -624,7 +483,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxCategoryCodeType
-     */
     public function testGetTaxCategoryCodeTypeAllNull(): void
     {
@@ -636,7 +492,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxTypeCodeType
-     */
     public function testGetTaxTypeCodeTypeWithValue(): void
     {
@@ -648,7 +501,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxTypeCodeType
-     */
     public function testGetTaxTypeCodeTypeAllNull(): void
     {
@@ -660,7 +510,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTimeReferenceCodeType
-     */
     public function testGetTimeReferenceCodeTypeWithValue(): void
     {
@@ -672,7 +519,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTimeReferenceCodeType
-     */
     public function testGetTimeReferenceCodeTypeAllNull(): void
     {
@@ -684,7 +528,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSpecifiedPeriodType
-     */
     public function testGetSpecifiedPeriodTypeAllValues(): void
     {
@@ -702,7 +543,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSpecifiedPeriodType
-     */
     public function testGetSpecifiedPeriodTypeAllNull(): void
     {
@@ -714,7 +552,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getBinaryObjectType
-     */
     public function testGetBinaryObjectTypeAllValues(): void
     {
@@ -728,7 +563,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getBinaryObjectType
-     */
     public function testGetBinaryObjectTypeAllNull(): void
     {
@@ -740,7 +572,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getBinaryObjectType
-     */
     public function testGetBinaryObjectTypeDataNull(): void
     {
@@ -752,7 +581,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getBinaryObjectType
-     */
     public function testGetBinaryObjectTypeMimeTypeNull(): void
     {
@@ -764,7 +590,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getBinaryObjectType
-     */
     public function testGetBinaryObjectTypeFilenameNull(): void
     {
@@ -776,7 +599,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getReferencedDocumentType
-     */
     public function testGetReferencedDocumentTypeAllValues(): void
     {
@@ -784,12 +604,10 @@
          * @var \horstoeko\zugferd\entities\extended\ram\ReferencedDocumentType
          */
-        $refdoctype = self::$objectHelper->getReferencedDocumentType("issuerid", "uriid", "lineid", "typecode", "name", "reftypcode", new \DateTime(), dirname(__FILE__) . "/../assets/en16931_allowancecharge.xml");
+        $refdoctype = self::$objectHelper->getReferencedDocumentType("issuerid", "uriid", "lineid", "typecode", "name", "reftypcode", new \DateTime(), __DIR__ . "/../assets/xml_en16931_2.xml");
         $this->assertEquals("issuerid", $refdoctype->getIssuerAssignedID()->value());
         $this->assertEquals("uriid", $refdoctype->getURIID()->value());
         $this->assertEquals("lineid", $refdoctype->getLineID()->value());
         $this->assertEquals("typecode", $refdoctype->getTypeCode());
-        $this->assertIsArray($refdoctype->getName());
-        $this->assertArrayHasKey(0, $refdoctype->getName());
-        $this->assertEquals("name", $refdoctype->getName()[0]);
+        $this->assertEquals("name", $refdoctype->getName());
         $this->assertEquals("reftypcode", $refdoctype->getReferenceTypeCode());
         $this->assertEquals((new \DateTime())->format("Ymd"), $refdoctype->getFormattedIssueDateTime()->getDateTimeString());
@@ -797,7 +615,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getReferencedDocumentType
-     */
     public function testGetReferencedDocumentTypeAllNull(): void
     {
@@ -809,7 +624,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCrossIndustryInvoice
-     */
     public function testCrossIndustryInvoice(): void
     {
@@ -821,7 +633,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeParty
-     */
     public function testGetTradePartyAllValues(): void
     {
@@ -837,7 +646,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeParty
-     */
     public function testGetTradePartyNullValues(): void
     {
@@ -849,7 +655,32 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAddress
-     */
+    public function testGetTradePartyAllValuesWithAllowEmpty(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\extended\ram\TradePartyType
+         */
+        $tradeparty = self::$objectHelper->getTradePartyAllowEmpty("name", "id", "description");
+        $this->assertEquals("name", $tradeparty->getName());
+        $this->assertIsArray($tradeparty->getID());
+        $this->assertArrayHasKey(0, $tradeparty->getID());
+        $this->assertEquals("id", $tradeparty->getID()[0]);
+        $this->assertEquals("description", $tradeparty->getDescription());
+    }
+
+    public function testGetTradePartyNullValuesWithAllowEmpty(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\extended\ram\TradePartyType
+         */
+        $tradeparty = self::$objectHelper->getTradePartyAllowEmpty(null, null, null);
+        $this->assertNotNull($tradeparty);
+        $this->assertNull($tradeparty->getName());
+        $this->assertEquals("", $tradeparty->getName());
+        $this->assertIsArray($tradeparty->getID());
+        $this->assertArrayNotHasKey(0, $tradeparty->getID());
+        $this->assertNull($tradeparty->getDescription());
+        $this->assertEquals("", $tradeparty->getDescription());
+    }
+
     public function testGetTradeAddressAllValues(): void
     {
@@ -864,12 +695,7 @@
         $this->assertEquals("city", $tradeaddress->getCityName());
         $this->assertEquals("country", $tradeaddress->getCountryID());
-        $this->assertIsArray($tradeaddress->getCountrySubDivisionName());
-        $this->assertArrayHasKey(0, $tradeaddress->getCountrySubDivisionName());
-        $this->assertEquals("county", $tradeaddress->getCountrySubDivisionName()[0]);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAddress
-     */
+        $this->assertEquals("county", $tradeaddress->getCountrySubDivisionName());
+    }
+
     public function testGetTradeAddressAllNull(): void
     {
@@ -881,7 +707,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getLegalOrganization
-     */
     public function testGetLegalOrganizationAllValues(): void
     {
@@ -895,7 +718,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getLegalOrganization
-     */
     public function testGetLegalOrganizationAllNull(): void
     {
@@ -907,7 +727,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeContact
-     */
     public function testGetTradeContactAllValues(): void
     {
@@ -923,7 +740,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeContact
-     */
     public function testGetTradeContactAllNull(): void
     {
@@ -935,7 +749,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getUniversalCommunicationType
-     */
     public function testGetUniversalCommunicationTypeAllValues(): void
     {
@@ -949,7 +760,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getUniversalCommunicationType
-     */
     public function testGetUniversalCommunicationTypeAllNull(): void
     {
@@ -961,7 +769,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxRegistrationType
-     */
     public function testGetTaxRegistrationTypeAllValues(): void
     {
@@ -974,7 +779,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxRegistrationType
-     */
     public function testGetTaxRegistrationTypeAllNull(): void
     {
@@ -986,7 +788,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxRegistrationType
-     */
     public function testGetTaxRegistrationTypeIdNull(): void
     {
@@ -998,7 +797,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxRegistrationType
-     */
     public function testGetTaxRegistrationTypeTypeNull(): void
     {
@@ -1010,7 +806,22 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeDeliveryTermsType
-     */
+    public function testGetTradeDeliveryTermsTypeCodeAllValues(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\extended\qdt\DeliveryTermsCodeType
+         */
+        $devterms = self::$objectHelper->getTradeDeliveryTermsCodeType('code');
+        $this->assertEquals("code", $devterms->value());
+    }
+
+    public function testGetTradeDeliveryTermsTypeCodeAllNull(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\extended\qdt\DeliveryTermsCodeType
+         */
+        $devterms = self::$objectHelper->getTradeDeliveryTermsCodeType(null);
+        $this->assertNull($devterms);
+    }
+
     public function testGetTradeDeliveryTermsTypeAllValues(): void
     {
@@ -1022,7 +833,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeDeliveryTermsType
-     */
     public function testGetTradeDeliveryTermsTypeAllNull(): void
     {
@@ -1034,7 +842,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProcuringProjectType
-     */
     public function testGetProcuringProjectTypeAllValues(): void
     {
@@ -1047,7 +852,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProcuringProjectType
-     */
     public function testGetProcuringProjectTypeIdNull(): void
     {
@@ -1059,7 +861,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProcuringProjectType
-     */
     public function testGetProcuringProjectTypeNameNull(): void
     {
@@ -1071,7 +870,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProcuringProjectType
-     */
     public function testGetProcuringProjectTypeAllNull(): void
     {
@@ -1083,7 +879,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSupplyChainEventType
-     */
     public function testGetSupplyChainEventTypeAllValues(): void
     {
@@ -1096,7 +889,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSupplyChainEventType
-     */
     public function testGetSupplyChainEventTypeAllNull(): void
     {
@@ -1108,7 +898,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementFinancialCardType
-     */
     public function testGetTradeSettlementFinancialCardTypeAllValues(): void
     {
@@ -1116,13 +903,10 @@
          * @var \horstoeko\zugferd\entities\extended\ram\TradeSettlementFinancialCardType
          */
-        $fincard = self::$objectHelper->getTradeSettlementFinancialCardType("type", "id", "name");
+        $fincard = self::$objectHelper->getTradeSettlementFinancialCardType("type", "6759 6498 2643 8453", "name");
         $this->assertEquals("type", $fincard->getID()->getSchemeID());
-        $this->assertEquals("id", $fincard->getID());
+        $this->assertEquals("6759 68453", $fincard->getID());
         $this->assertEquals("name", $fincard->getCardholderName());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementFinancialCardType
-     */
     public function testGetTradeSettlementFinancialCardTypeAllNull(): void
     {
@@ -1134,7 +918,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDebtorFinancialAccountType
-     */
     public function testGetDebtorFinancialAccountTypeAllValues(): void
     {
@@ -1146,7 +927,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDebtorFinancialAccountType
-     */
     public function testGetDebtorFinancialAccountTypeAllNull(): void
     {
@@ -1158,7 +936,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCreditorFinancialAccountType
-     */
     public function testGetCreditorFinancialAccountTypeAllValues(): void
     {
@@ -1172,7 +947,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCreditorFinancialAccountType
-     */
     public function testGetCreditorFinancialAccountTypeAllNull(): void
     {
@@ -1184,7 +956,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCreditorFinancialInstitutionType
-     */
     public function testGetCreditorFinancialInstitutionTypeAllValues(): void
     {
@@ -1196,7 +965,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getCreditorFinancialInstitutionType
-     */
     public function testGetCreditorFinancialInstitutionTypeAllNull(): void
     {
@@ -1208,7 +974,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementPaymentMeansType
-     */
     public function testGetTradeSettlementPaymentMeansTypeAllValues(): void
     {
@@ -1220,7 +983,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementPaymentMeansType
-     */
     public function testGetTradeSettlementPaymentMeansTypeAllNull(): void
     {
@@ -1232,7 +992,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePaymentTermsType
-     */
     public function testGetTradePaymentTermsTypeAllValues(): void
     {
@@ -1245,7 +1002,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePaymentTermsType
-     */
     public function testGetTradePaymentTermsTypeAllNull(): void
     {
@@ -1257,7 +1011,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePaymentDiscountTermsType
-     */
     public function testGetTradePaymentDiscountTermsTypeAllValues(): void
     {
@@ -1281,7 +1032,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePaymentDiscountTermsType
-     */
     public function testGetTradePaymentDiscountTermsTypeAllNull(): void
     {
@@ -1293,7 +1041,34 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeTaxType
-     */
+    public function testGetTradePaymentPenaltyTermsTypeAllValues(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\extended\ram\TradePaymentPenaltyTermsType
+         */
+        $penaltyterms = self::$objectHelper->getTradePaymentPenaltyTermsType(new \DateTime(), 2, "DAY", 1, 1, 1);
+
+        /**
+         * @var \horstoeko\zugferd\entities\extended\udt\PercentType
+         */
+        $calculationpercent = $penaltyterms->getCalculationPercent();
+
+        $this->assertEquals((new \DateTime())->format("Ymd"), $penaltyterms->getBasisDateTime()->getDateTimeString());
+        $this->assertEquals("102", $penaltyterms->getBasisDateTime()->getDateTimeString()->getFormat());
+        $this->assertEquals(2, $penaltyterms->getBasisPeriodMeasure()->value());
+        $this->assertEquals("DAY", $penaltyterms->getBasisPeriodMeasure()->getUnitCode());
+        $this->assertEquals(1, $penaltyterms->getBasisAmount()->value());
+        $this->assertEquals(1, $calculationpercent->value());
+        $this->assertEquals(1, $penaltyterms->getActualPenaltyAmount()->value());
+    }
+
+    public function testGetTradePaymentPenaltyTermsTypeAllNull(): void
+    {
+        /**
+         * @var \horstoeko\zugferd\entities\extended\ram\TradePaymentPenaltyTermsType
+         */
+        $penaltyterms = self::$objectHelper->getTradePaymentPenaltyTermsType(null, null, null, null, null, null);
+        $this->assertNull($penaltyterms);
+    }
+
     public function testGetTradeTaxTypeAllValues(): void
     {
@@ -1310,7 +1085,7 @@
         $this->assertEquals("category", $tax->getCategoryCode());
         $this->assertEquals("type", $tax->getTypeCode());
-        $this->assertEquals(100.0, $tax->getBasisAmount()->value());
-        $this->assertEquals(19.0, $tax->getCalculatedAmount()->value());
-        $this->assertEquals(19.0, $rateapplicablepercent->value());
+        $this->assertEqualsWithDelta(100.0, $tax->getBasisAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(19.0, $tax->getCalculatedAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(19.0, $rateapplicablepercent->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("reasoncode", $tax->getExemptionReasonCode());
         $this->assertEquals("reason", $tax->getExemptionReason());
@@ -1319,7 +1094,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeTaxType
-     */
     public function testGetTradeTaxTypeAllNull(): void
     {
@@ -1331,7 +1103,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAllowanceChargeType
-     */
     public function testGetTradeAllowanceChargeTypeAllValues(): void
     {
@@ -1356,12 +1125,12 @@
         $sequenceNumeric = $allowancecharge->getCalculationPercent();
 
-        $this->assertEquals(10.0, $allowancecharge->getActualAmount()->value());
+        $this->assertEqualsWithDelta(10.0, $allowancecharge->getActualAmount()->value(), PHP_FLOAT_EPSILON);
         $this->assertTrue($allowancecharge->getChargeIndicator()->getIndicator());
         $this->assertEquals("taxtype", $allowancecharge->getCategoryTradeTax()->getTypeCode());
         $this->assertEquals("taxcategory", $allowancecharge->getCategoryTradeTax()->getCategoryCode());
-        $this->assertEquals(19.0, $rateapplicablepercent->value());
+        $this->assertEqualsWithDelta(19.0, $rateapplicablepercent->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals(2, $sequenceNumeric->value());
-        $this->assertEquals(2.0, $calculationpercent->value());
-        $this->assertEquals(1.0, $allowancecharge->getBasisQuantity()->value());
+        $this->assertEqualsWithDelta(2.0, $calculationpercent->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(1.0, $allowancecharge->getBasisQuantity()->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("C62", $allowancecharge->getBasisQuantity()->getUnitCode());
         $this->assertEquals("reason", $allowancecharge->getReason());
@@ -1369,7 +1138,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAllowanceChargeType
-     */
     public function testGetTradeAllowanceChargeTypeAllNull(): void
     {
@@ -1381,7 +1147,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getLogisticsServiceChargeType
-     */
     public function testGetLogisticsServiceChargeTypeAllValues(): void
     {
@@ -1391,10 +1154,7 @@
         $logcharge = self::$objectHelper->getLogisticsServiceChargeType("description", 10.0, ["taxtype"], ["taxcategpry"], [19]);
         $this->assertEquals("description", $logcharge->getDescription());
-        $this->assertEquals(10.0, $logcharge->getAppliedAmount()->value());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getLogisticsServiceChargeType
-     */
+        $this->assertEqualsWithDelta(10.0, $logcharge->getAppliedAmount()->value(), PHP_FLOAT_EPSILON);
+    }
+
     public function testGetLogisticsServiceChargeTypeAllNull(): void
     {
@@ -1406,8 +1166,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementHeaderMonetarySummationType
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementHeaderMonetarySummationTypeOnly
-     */
     public function testGetTradeSettlementHeaderMonetarySummationTypeAllValues(): void
     {
@@ -1416,25 +1172,17 @@
          */
         $summation = self::$objectHelper->getTradeSettlementHeaderMonetarySummationType(119, 100, 100, 1, 2, 99, 99 * 0.19, 0.0, 10);
-        $this->assertIsArray($summation->getGrandTotalAmount());
-        $this->assertArrayHasKey(0, $summation->getGrandTotalAmount());
-        $this->assertEquals(119.0, $summation->getGrandTotalAmount()[0]->value());
-        $this->assertEquals(100.0, $summation->getDuePayableAmount()->value());
-        $this->assertEquals(100.0, $summation->getLineTotalAmount()->value());
-        $this->assertEquals(1.0, $summation->getChargeTotalAmount()->value());
-        $this->assertEquals(2.0, $summation->getAllowanceTotalAmount()->value());
-        $this->assertIsArray($summation->getTaxBasisTotalAmount());
-        $this->assertArrayHasKey(0, $summation->getTaxBasisTotalAmount());
-        $this->assertEquals(99.0, $summation->getTaxBasisTotalAmount()[0]->value());
+        $this->assertEqualsWithDelta(119.0, $summation->getGrandTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(100.0, $summation->getDuePayableAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(100.0, $summation->getLineTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(1.0, $summation->getChargeTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(2.0, $summation->getAllowanceTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(99.0, $summation->getTaxBasisTotalAmount()->value(), PHP_FLOAT_EPSILON);
         $this->assertIsArray($summation->getTaxTotalAmount());
         $this->assertArrayHasKey(0, $summation->getTaxTotalAmount());
         $this->assertEquals(99.0 * 0.19, $summation->getTaxTotalAmount()[0]->value());
-        $this->assertEquals(0.0, $summation->getRoundingAmount()->value());
-        $this->assertEquals(10.0, $summation->getTotalPrepaidAmount()->value());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementHeaderMonetarySummationType
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementHeaderMonetarySummationTypeOnly
-     */
+        $this->assertEqualsWithDelta(0.0, $summation->getRoundingAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.0, $summation->getTotalPrepaidAmount()->value(), PHP_FLOAT_EPSILON);
+    }
+
     public function testGetTradeSettlementHeaderMonetarySummationTypeAllNull(): void
     {
@@ -1446,7 +1194,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementHeaderMonetarySummationTypeOnly
-     */
     public function testGetTradeSettlementHeaderMonetarySummationTypeOnly(): void
     {
@@ -1455,7 +1200,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAccountingAccountType
-     */
     public function testGetTradeAccountingAccountTypeAllValues(): void
     {
@@ -1468,7 +1210,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeAccountingAccountType
-     */
     public function testGetTradeAccountingAccountTypeAllNull(): void
     {
@@ -1480,7 +1219,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDocumentLineDocumentType
-     */
     public function testGetDocumentLineDocumentTypeAllValues(): void
     {
@@ -1492,7 +1228,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getDocumentLineDocumentType
-     */
     public function testGetDocumentLineDocumentTypeAllNull(): void
     {
@@ -1504,7 +1237,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSupplyChainTradeLineItemType
-     */
     public function testGetSupplyChainTradeLineItemTypeAllValues(): void
     {
@@ -1517,7 +1247,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getSupplyChainTradeLineItemType
-     */
     public function testGetSupplyChainTradeLineItemTypeAllNull(): void
     {
@@ -1529,7 +1256,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeProductType
-     */
     public function testGetTradeProductTypeAllValues(): void
     {
@@ -1546,7 +1270,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeProductType
-     */
     public function testGetTradeProductTypeAllNull(): void
     {
@@ -1558,7 +1279,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProductCharacteristicType
-     */
     public function testGetProductCharacteristicType(): void
     {
@@ -1569,12 +1287,9 @@
         $this->assertEquals("description", $productCharacteristic->getDescription());
         $this->assertEquals("value", $productCharacteristic->getValue());
-        $this->assertEquals(10.2, $productCharacteristic->getValueMeasure()->value());
+        $this->assertEqualsWithDelta(10.2, $productCharacteristic->getValueMeasure()->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("valuemeasureunit", $productCharacteristic->getValueMeasure()->getUnitCode());
         $this->assertEquals("typecode", $productCharacteristic->getTypeCode()->value());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getProductClassificationType
-     */
     public function testGetProductClassificationType(): void
     {
@@ -1595,7 +1310,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getReferencedProductType
-     */
     public function testGetReferencedProductType(): void
     {
@@ -1603,9 +1315,10 @@
          * @var \horstoeko\zugferd\entities\extended\ram\ReferencedProductType
          */
-        $referencedProduct = self::$objectHelper->getReferencedProductType("globalid", "globalidtype", "sellerid", "buyerid", "name", "description", 10, "C62");
+        $referencedProduct = self::$objectHelper->getReferencedProductType("globalid", "globalidtype", "sellerid", "buyerid", "industryid", "name", "description", 10, "C62");
         $this->assertEquals("globalid", $referencedProduct->getGlobalID()[0]->value());
         $this->assertEquals("globalidtype", $referencedProduct->getGlobalID()[0]->getSchemeID());
         $this->assertEquals("sellerid", $referencedProduct->getSellerAssignedID()->value());
         $this->assertEquals("buyerid", $referencedProduct->getBuyerAssignedID()->value());
+        $this->assertEquals("industryid", $referencedProduct->getIndustryAssignedID()->value());
         $this->assertEquals("name", $referencedProduct->getName());
         $this->assertEquals("description", $referencedProduct->getDescription());
@@ -1616,11 +1329,8 @@
          * @var \horstoeko\zugferd\entities\extended\ram\ReferencedProductType
          */
-        $referencedProduct = self::$objectHelper->getReferencedProductType(null, null, null, null, null, null, null, null);
+        $referencedProduct = self::$objectHelper->getReferencedProductType(null, null, null, null, null, null, null, null, null);
         $this->assertNull($referencedProduct);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePriceType
-     */
     public function testGetTradePriceTypeAllValues(): void
     {
@@ -1629,12 +1339,9 @@
          */
         $price = self::$objectHelper->getTradePriceType(1.0, 2.0, "C62");
-        $this->assertEquals(1.0, $price->getChargeAmount()->value());
-        $this->assertEquals(2.0, $price->getBasisQuantity()->value());
+        $this->assertEqualsWithDelta(1.0, $price->getChargeAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(2.0, $price->getBasisQuantity()->value(), PHP_FLOAT_EPSILON);
         $this->assertEquals("C62", $price->getBasisQuantity()->getUnitCode());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradePriceType
-     */
     public function testGetTradePriceTypeAllNull(): void
     {
@@ -1646,7 +1353,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementLineMonetarySummationType
-     */
     public function testGetTradeSettlementLineMonetarySummationTypeAllValues(): void
     {
@@ -1654,12 +1358,13 @@
          * @var \horstoeko\zugferd\entities\extended\ram\TradeSettlementLineMonetarySummationType
          */
-        $summation = self::$objectHelper->getTradeSettlementLineMonetarySummationType(1.0, 2.0);
-        $this->assertEquals(1.0, $summation->getLineTotalAmount()->value());
-        $this->assertEquals(2.0, $summation->getTotalAllowanceChargeAmount()->value());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTradeSettlementLineMonetarySummationType
-     */
+        $summation = self::$objectHelper->getTradeSettlementLineMonetarySummationType(1.0, 6.0, 3.0, 4.0, 5.0, 2.0);
+        $this->assertEqualsWithDelta(1.0, $summation->getLineTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(6.0, $summation->getChargeTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(3.0, $summation->getAllowanceTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(4.0, $summation->getTaxTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(5.0, $summation->getGrandTotalAmount()->value(), PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(2.0, $summation->getTotalAllowanceChargeAmount()->value(), PHP_FLOAT_EPSILON);
+    }
+
     public function testGetTradeSettlementLineMonetarySummationTypeAllNull(): void
     {
@@ -1667,31 +1372,25 @@
          * @var \horstoeko\zugferd\entities\extended\ram\TradeSettlementLineMonetarySummationType
          */
-        $summation = self::$objectHelper->getTradeSettlementLineMonetarySummationType(null, null);
+        $summation = self::$objectHelper->getTradeSettlementLineMonetarySummationType();
         $this->assertNull($summation);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
     public function testToDateTimeGeneral(): void
     {
         $this->assertEquals("20200202", self::$objectHelper->toDateTime("20200202", "102")->format("Ymd"));
-        $this->assertNull(self::$objectHelper->toDateTime("", "102"));
-        $this->assertNull(self::$objectHelper->toDateTime("20200202", ""));
-        $this->assertNull(self::$objectHelper->toDateTime(null, "102"));
-        $this->assertNull(self::$objectHelper->toDateTime("20200202", null));
-        $this->assertNull(self::$objectHelper->toDateTime("", ""));
-        $this->assertNull(self::$objectHelper->toDateTime(null, null));
-        $this->assertNull(self::$objectHelper->toDateTime("", null));
-        $this->assertNull(self::$objectHelper->toDateTime(null, ""));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("", "102"));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("20200202", ""));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime(null, "102"));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("20200202", null));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("", ""));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime(null, null));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("", null));
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime(null, ""));
         $this->assertNull(self::$objectHelper->toDateTime(null, null));
         $this->expectException(ZugferdUnknownDateFormatException::class);
-        $this->expectExceptionMessage("The date format identifier 999 is unknown or not supported");
-        $this->assertNull(self::$objectHelper->toDateTime("20200202", "999"));
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
+        $this->expectExceptionMessage("Invalid date format 999");
+        $this->assertNotInstanceOf(\DateTime::class, self::$objectHelper->toDateTime("20200202", "999"));
+    }
+
     public function testToDateTime101(): void
     {
@@ -1699,7 +1398,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
     public function testToDateTime201(): void
     {
@@ -1707,7 +1403,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
     public function testToDateTime202(): void
     {
@@ -1715,7 +1408,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
     public function testToDateTime203(): void
     {
@@ -1723,7 +1413,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::toDateTime
-     */
     public function testToDateTime204(): void
     {
@@ -1731,7 +1418,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getRateType
-     */
     public function testGetRateType(): void
     {
@@ -1743,7 +1427,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::getTaxApplicableTradeCurrencyExchangeType
-     */
     public function testGetTaxApplicableTradeCurrencyExchangeType(): void
     {
@@ -1755,5 +1436,11 @@
         $this->assertEquals("EUR", $currencyExchangeType->getSourceCurrencyCode());
         $this->assertEquals("USD", $currencyExchangeType->getTargetCurrencyCode());
-        $this->assertEquals(10.0, $currencyExchangeType->getConversionRate()->value());
+        /**
+         * @var \horstoeko\zugferd\entities\extended\udt\RateType
+         */
+        $rate = $currencyExchangeType->getConversionRate();
+        $this->assertEqualsWithDelta(10.0, $rate->value(), PHP_FLOAT_EPSILON);
+        $this->assertEquals("20180305", $currencyExchangeType->getConversionRateDateTime()->getDateTimeString()->value());
+        $this->assertEquals("102", $currencyExchangeType->getConversionRateDateTime()->getDateTimeString()->getFormat());
 
         /**
@@ -1764,7 +1451,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdObjectHelper::createClassInstance
-     */
     public function testCreateClassInstance(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PackageVersionTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PackageVersionTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PackageVersionTest.php	(revision 8504)
@@ -8,7 +8,4 @@
 class PackageVersionTest extends TestCase
 {
-    /**
-     * @covers \horstoeko\zugferd\ZugferdPackageVersion
-     */
     public function testVersion(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfBuilderEn16931Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfBuilderEn16931Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfBuilderEn16931Test.php	(revision 8504)
@@ -3,13 +3,17 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use DateTime;
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\tests\traits\HandlesXmlTests;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentBuilder;
-use \horstoeko\zugferd\ZugferdDocumentPdfBuilder;
-use \horstoeko\zugferd\codelists\ZugferdPaymentMeans;
-use \horstoeko\zugferd\ZugferdDocumentPdfReader;
-use \Smalot\PdfParser\Parser as PdfParser;
+use horstoeko\zugferd\codelists\ZugferdPaymentMeans;
+use horstoeko\zugferd\exception\ZugferdFileNotFoundException;
+use horstoeko\zugferd\exception\ZugferdUnknownMimetype;
+use horstoeko\zugferd\exception\ZugferdInvalidArgumentException;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\tests\traits\HandlesXmlTests;
+use horstoeko\zugferd\ZugferdDocumentBuilder;
+use horstoeko\zugferd\ZugferdDocumentPdfBuilder;
+use horstoeko\zugferd\ZugferdDocumentPdfBuilderAbstract;
+use horstoeko\zugferd\ZugferdProfiles;
+use setasign\Fpdi\PdfParser\PdfParserException;
+use setasign\Fpdi\PdfParser\StreamReader;
+use Smalot\PdfParser\Parser as PdfParser;
 
 class PdfBuilderEn16931Test extends TestCase
@@ -33,6 +37,6 @@
     public static function setUpBeforeClass(): void
     {
-        self::$sourcePdfFilename = dirname(__FILE__) . "/../assets/EmpyPDF.pdf";
-        self::$destPdfFilename = dirname(__FILE__) . "/../assets/GeneratedPDF.pdf";
+        self::$sourcePdfFilename = __DIR__ . "/../assets/pdf_plain.pdf";
+        self::$destPdfFilename = __DIR__ . "/../assets/GeneratedPDF.pdf";
 
         self::$document = (ZugferdDocumentBuilder::CreateNew(ZugferdProfiles::PROFILE_EN16931))
@@ -83,5 +87,16 @@
     }
 
-    public function testBuildPdf(): void
+    /**
+     * Tests
+     */
+    public function testBuildFromSourcePdfFileWhichDoesNotExist(): void
+    {
+        $this->expectException(ZugferdFileNotFoundException::class);
+        $this->expectExceptionMessage('The file /tmp/anonexisting.pdf was not found');
+
+        ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, '/tmp/anonexisting.pdf');
+    }
+
+    public function testBuildFromSourcePdfFile(): void
     {
         $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, self::$sourcePdfFilename);
@@ -89,126 +104,866 @@
         $pdfBuilder->saveDocument(self::$destPdfFilename);
 
-        $this->assertTrue(file_exists(self::$destPdfFilename));
-    }
-
-    public function testBuildPdfString(): void
+        $this->assertFileExists(self::$destPdfFilename);
+
+        ob_start();
+        $pdfBuilder->saveDocumentInline(self::$destPdfFilename);
+        $pdfContent = ob_get_clean();
+
+        $this->assertIsString($pdfContent);
+        $this->assertNotSame('', $pdfContent);
+
+        $pdfContent = $pdfBuilder->downloadString();
+
+        $this->assertNotSame('', $pdfContent);
+        $this->assertStringStartsNotWith('%PDF-1.4', $pdfContent);
+    }
+
+    public function testBuildFromSourcePdfStringWhichIsInvalid(): void
+    {
+        $this->expectException(PdfParserException::class);
+        $this->expectExceptionMessage('Unable to find PDF file header.');
+
+        $pdfContent = 'this_is_not_a_pdf_string';
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfString(self::$document, $pdfContent);
+        $pdfBuilder->generateDocument();
+    }
+
+    public function testBuildFromSourcePdfString(): void
+    {
+        $pdfContent = file_get_contents(self::$sourcePdfFilename);
+
+        $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, $pdfContent);
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $this->assertFileExists(self::$destPdfFilename);
+
+        ob_start();
+        $pdfBuilder->saveDocumentInline(self::$destPdfFilename);
+        $pdfContent = ob_get_clean();
+
+        $this->assertIsString($pdfContent);
+        $this->assertNotSame('', $pdfContent);
+
+        $pdfContent = $pdfBuilder->downloadString();
+
+        $this->assertNotSame('', $pdfContent);
+        $this->assertStringStartsNotWith('%PDF-1.4', $pdfContent);
+    }
+
+    public function testPdfMetaData(): void
     {
         $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, self::$sourcePdfFilename);
         $pdfBuilder->generateDocument();
-        $pdfBuilder->downloadString(self::$destPdfFilename);
-
-        $this->assertIsString(self::$destPdfFilename);
-    }
-
-    public function testPdfMetaData(): void
-    {
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
         $pdfParser = new PdfParser();
         $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
         $pdfDetails = $pdfParsed->getDetails();
 
-        $this->assertIsArray($pdfDetails);
         $this->assertArrayHasKey("Producer", $pdfDetails); //"FPDF 1.84"
         $this->assertArrayHasKey("CreationDate", $pdfDetails); //"2020-12-09T05:19:39+00:00"
+        $this->assertArrayHasKey("Title", $pdfDetails);
+        $this->assertArrayHasKey("Subject", $pdfDetails);
+        $this->assertArrayHasKey("Author", $pdfDetails);
+        $this->assertArrayHasKey("Keywords", $pdfDetails);
         $this->assertArrayHasKey("Pages", $pdfDetails); //"1"
+        $this->assertArrayHasKey("fx:documenttype", $pdfDetails);
+        $this->assertArrayHasKey("fx:documentfilename", $pdfDetails);
+        $this->assertArrayHasKey("fx:version", $pdfDetails);
+        $this->assertArrayHasKey("fx:conformancelevel", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:part", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:conformance", $pdfDetails);
+        $this->assertArrayHasKey("dc:title", $pdfDetails);
+        $this->assertArrayHasKey("dc:creator", $pdfDetails);
+        $this->assertArrayHasKey("dc:description", $pdfDetails);
+        $this->assertArrayHasKey("xmp:creatortool", $pdfDetails);
+        $this->assertArrayHasKey("xmp:createdate", $pdfDetails);
+        $this->assertArrayHasKey("xmp:modifydate", $pdfDetails);
+        $this->assertStringContainsString('FPDF', $pdfDetails["Producer"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["CreationDate"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["Title"]);
+        $this->assertEquals("FacturX/ZUGFeRD Invoice 471102 dated 2018-03-05 issued by Lieferant GmbH", $pdfDetails["Subject"]);
+        $this->assertEquals("Lieferant GmbH", $pdfDetails["Author"]);
         $this->assertEquals("1", $pdfDetails["Pages"]);
-    }
-
-    public function testReadPdf(): void
-    {
-        $document = ZugferdDocumentPdfReader::readAndGuessFromFile(self::$destPdfFilename);
-
-        $this->assertNotNull($document);
-        $this->assertEquals(ZugferdProfiles::PROFILE_EN16931, $document->getProfileId());
-        $this->assertNotEquals(ZugferdProfiles::PROFILE_BASIC, $document->getProfileId());
-        $this->assertNotEquals(ZugferdProfiles::PROFILE_BASICWL, $document->getProfileId());
-        $this->assertNotEquals(ZugferdProfiles::PROFILE_EXTENDED, $document->getProfileId());
-        $this->assertNotEquals(ZugferdProfiles::PROFILE_XRECHNUNG, $document->getProfileId());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfBuilderAbstract::getXmlContent
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfBuilder::getXmlContent
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfMerger::getXmlContent
-     *
-     * @return void
-     */
-    public function testGetXmlContent(): void
-    {
-        $mockedObject = $this->getMockBuilder(ZugferdDocumentPdfBuilder::class)
-            ->setConstructorArgs([self::$document, self::$sourcePdfFilename])
-            ->onlyMethods(['getXmlContent'])
-            ->getMock();
-
-        /**
-         * @var \PHPUnit\Framework\MockObject\MockObject $mockedObject
-         */
-        $mockedObject->expects($this->exactly(2))
-            ->method("getXmlContent")
-            ->willReturn(self::$document->getContent());
-
-        /**
-         * @var \horstoeko\zugferd\ZugferdDocumentPdfBuilder $mockedObject
-         */
-        $result = $mockedObject->generateDocument();
-
-        $this->assertInstanceOf(ZugferdDocumentPdfBuilder::class, $result);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfBuilderAbstract::getXmlAttachmentFilename
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfBuilder::getXmlAttachmentFilename
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfMerger::getXmlAttachmentFilename
-     *
-     * @return void
-     */
-    public function testGetXmlAttachmentFilename(): void
-    {
-        $mockedObject = $this->getMockBuilder(ZugferdDocumentPdfBuilder::class)
-            ->setConstructorArgs([self::$document, self::$sourcePdfFilename])
-            ->onlyMethods(['getXmlAttachmentFilename'])
-            ->getMock();
-
-        /**
-         * @var \PHPUnit\Framework\MockObject\MockObject $mockedObject
-         */
-        $mockedObject->expects($this->exactly(2))
-            ->method("getXmlAttachmentFilename")
-            ->willReturn(self::$document->getProfileDefinitionParameter('attachmentfilename'));
-
-        /**
-         * @var \horstoeko\zugferd\ZugferdDocumentPdfBuilder $mockedObject
-         */
-        $result = $mockedObject->generateDocument();
-
-        $this->assertInstanceOf(ZugferdDocumentPdfBuilder::class, $result);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfBuilderAbstract::getXmlAttachmentXmpName
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfBuilder::getXmlAttachmentXmpName
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfMerger::getXmlAttachmentXmpName
-     *
-     * @return void
-     */
-    public function testGetXmlAttachmentXmpName(): void
-    {
-        $mockedObject = $this->getMockBuilder(ZugferdDocumentPdfBuilder::class)
-            ->setConstructorArgs([self::$document, self::$sourcePdfFilename])
-            ->onlyMethods(['getXmlAttachmentXmpName'])
-            ->getMock();
-
-        /**
-         * @var \PHPUnit\Framework\MockObject\MockObject $mockedObject
-         */
-        $mockedObject->expects($this->exactly(1))
-            ->method("getXmlAttachmentXmpName")
-            ->willReturn(self::$document->getProfileDefinitionParameter("xmpname"));
-
-        /**
-         * @var \horstoeko\zugferd\ZugferdDocumentPdfBuilder $mockedObject
-         */
-        $result = $mockedObject->generateDocument();
-
-        $this->assertInstanceOf(ZugferdDocumentPdfBuilder::class, $result);
+        $this->assertEquals("INVOICE", $pdfDetails["fx:documenttype"]);
+        $this->assertEquals("factur-x.xml", $pdfDetails["fx:documentfilename"]);
+        $this->assertEquals("1.0", $pdfDetails["fx:version"]);
+        $this->assertEquals("EN 16931", $pdfDetails["fx:conformancelevel"]);
+        $this->assertEquals("3", $pdfDetails["pdfaid:part"]);
+        $this->assertEquals("B", $pdfDetails["pdfaid:conformance"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["dc:title"]);
+        $this->assertEquals("Lieferant GmbH", $pdfDetails["dc:creator"]);
+        $this->assertEquals("FacturX/ZUGFeRD Invoice 471102 dated 2018-03-05 issued by Lieferant GmbH", $pdfDetails["dc:description"]);
+        $this->assertStringContainsString('Factur-X PHP library', $pdfDetails["xmp:creatortool"]);
+        $this->assertStringContainsString("2018-03-05", $pdfDetails["xmp:createdate"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["xmp:modifydate"]);
+    }
+
+    public function testSetAdditionalCreatorTool(): void
+    {
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setAdditionalCreatorTool('Dummy');
+
+        $this->assertStringStartsWith('Dummy / Factur-X PHP library', $pdfBuilder->getCreatorToolName());
+    }
+
+    public function testSetAttachmentRelationshipTypeToUnknown(): void
+    {
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setAttachmentRelationshipType('unknown');
+
+        $this->assertSame(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_DATA, $pdfBuilder->getAttachmentRelationshipType());
+    }
+
+    public function testSetAttachmentRelationshipTypeToData(): void
+    {
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setAttachmentRelationshipType('Data');
+
+        $this->assertSame(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_DATA, $pdfBuilder->getAttachmentRelationshipType());
+    }
+
+    public function testSetAttachmentRelationshipTypeToAlternative(): void
+    {
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setAttachmentRelationshipType('Alternative');
+
+        $this->assertSame(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_ALTERNATIVE, $pdfBuilder->getAttachmentRelationshipType());
+    }
+
+    public function testSetAttachmentRelationshipTypeToSource(): void
+    {
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setAttachmentRelationshipType('Source');
+
+        $this->assertSame(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_SOURCE, $pdfBuilder->getAttachmentRelationshipType());
+    }
+
+    public function testSetAttachmentRelationshipTypeToDataDirect(): void
+    {
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setAttachmentRelationshipTypeToData();
+
+        $this->assertSame(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_DATA, $pdfBuilder->getAttachmentRelationshipType());
+    }
+
+    public function testSetAttachmentRelationshipTypeToAlternativeDirect(): void
+    {
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setAttachmentRelationshipTypeToAlternative();
+
+        $this->assertSame(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_ALTERNATIVE, $pdfBuilder->getAttachmentRelationshipType());
+    }
+
+    public function testSetAttachmentRelationshipTypeToSourceDirect(): void
+    {
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setAttachmentRelationshipTypeToSource();
+
+        $this->assertSame(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_SOURCE, $pdfBuilder->getAttachmentRelationshipType());
+    }
+
+    public function testAttachAdditionalFileFileDoesNotExist(): void
+    {
+        $filename = __DIR__ . '/unknown.txt';
+
+        $this->expectException(ZugferdFileNotFoundException::class);
+        $this->expectExceptionMessage(sprintf("The file %s was not found", $filename));
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByRealFile($filename);
+    }
+
+    public function testAttachAdditionalFileFileIsEmpty(): void
+    {
+        $this->expectException(ZugferdInvalidArgumentException::class);
+        $this->expectExceptionMessage("You must specify a filename for the content to attach");
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByRealFile("");
+    }
+
+    public function testAttachAdditionalFileMimetypeUnknown(): void
+    {
+        $filename = __DIR__ . "/../assets/dummy_attachment_1.dummy";
+
+        $this->expectException(ZugferdUnknownMimetype::class);
+        $this->expectExceptionMessage("No mimetype found");
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByRealFile($filename);
+    }
+
+    public function testAttachAdditionalFileInvalidRelationShip(): void
+    {
+        $filename = __DIR__ . "/../assets/txt_addattachment_1.txt";
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByRealFile($filename, "", "Dummy");
+
+        $property = $this->getPrivatePropertyFromClassname(ZugferdDocumentPdfBuilderAbstract::class, "additionalFilesToAttach");
+
+        $this->assertIsArray($property->getValue($pdfBuilder));
+        $this->assertIsArray($property->getValue($pdfBuilder)[0]);
+        $this->assertEquals(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_SUPPLEMENT, $property->getValue($pdfBuilder)[0][3]);
+    }
+
+    public function testAttachAdditionalFileValidRelationShip(): void
+    {
+        $filename = __DIR__ . "/../assets/txt_addattachment_1.txt";
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByRealFile($filename, "", "Alternative");
+
+        $property = $this->getPrivatePropertyFromClassname(ZugferdDocumentPdfBuilderAbstract::class, "additionalFilesToAttach");
+
+        $this->assertIsArray($property->getValue($pdfBuilder));
+        $this->assertIsArray($property->getValue($pdfBuilder)[0]);
+        $this->assertEquals(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_ALTERNATIVE, $property->getValue($pdfBuilder)[0][3]);
+    }
+
+    public function testAttachAdditionalFileFinalResult(): void
+    {
+        $filename = __DIR__ . "/../assets/txt_addattachment_1.txt";
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByRealFile($filename, "", "Alternative");
+
+        $property = $this->getPrivatePropertyFromClassname(ZugferdDocumentPdfBuilderAbstract::class, "additionalFilesToAttach");
+
+        $this->assertIsArray($property->getValue($pdfBuilder));
+        $this->assertIsArray($property->getValue($pdfBuilder)[0]);
+        $this->assertInstanceOf(StreamReader::class, $property->getValue($pdfBuilder)[0][0]);
+        $this->assertEquals("txt_addattachment_1.txt", $property->getValue($pdfBuilder)[0][1]);
+        $this->assertEquals("txt_addattachment_1.txt", $property->getValue($pdfBuilder)[0][2]);
+        $this->assertEquals(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_ALTERNATIVE, $property->getValue($pdfBuilder)[0][3]);
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByRealFile($filename, "An Attachment", "Alternative");
+
+        $property = $this->getPrivatePropertyFromClassname(ZugferdDocumentPdfBuilderAbstract::class, "additionalFilesToAttach");
+
+        $this->assertIsArray($property->getValue($pdfBuilder));
+        $this->assertIsArray($property->getValue($pdfBuilder)[0]);
+        $this->assertInstanceOf(StreamReader::class, $property->getValue($pdfBuilder)[0][0]);
+        $this->assertEquals("txt_addattachment_1.txt", $property->getValue($pdfBuilder)[0][1]);
+        $this->assertEquals("An Attachment", $property->getValue($pdfBuilder)[0][2]);
+        $this->assertEquals(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_ALTERNATIVE, $property->getValue($pdfBuilder)[0][3]);
+    }
+
+    public function testAdditionalFilesAreEmbedded(): void
+    {
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByRealFile(__DIR__ . "/../assets/txt_addattachment_1.txt");
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $pdfParser = new PdfParser();
+        $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
+        $pdfFilespecs = $pdfParsed->getObjectsByType('Filespec');
+
+        $this->assertCount(2, $pdfFilespecs);
+        $this->assertArrayHasKey("8_0", $pdfFilespecs);
+        $this->assertArrayHasKey("10_0", $pdfFilespecs);
+
+        $pdfFilespec = $pdfFilespecs["8_0"];
+        $pdfFilespecDetails = $pdfFilespec->getDetails();
+
+        $this->assertIsArray($pdfFilespecDetails);
+        $this->assertArrayHasKey("F", $pdfFilespecDetails);
+        $this->assertArrayHasKey("Type", $pdfFilespecDetails);
+        $this->assertArrayHasKey("UF", $pdfFilespecDetails);
+        $this->assertArrayHasKey("AFRelationship", $pdfFilespecDetails);
+        $this->assertArrayHasKey("Desc", $pdfFilespecDetails);
+        $this->assertArrayHasKey("EF", $pdfFilespecDetails);
+        $this->assertEquals("factur-x.xml", $pdfFilespecDetails["F"]);
+        $this->assertEquals("Filespec", $pdfFilespecDetails["Type"]);
+        $this->assertEquals("factur-x.xml", $pdfFilespecDetails["UF"]);
+        $this->assertEquals(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_DATA, $pdfFilespecDetails["AFRelationship"]);
+        $this->assertEquals("Factur-X Invoice", $pdfFilespecDetails["Desc"]);
+
+        $pdfFilespec = $pdfFilespecs["10_0"];
+        $pdfFilespecDetails = $pdfFilespec->getDetails();
+
+        $this->assertIsArray($pdfFilespecDetails);
+        $this->assertArrayHasKey("F", $pdfFilespecDetails);
+        $this->assertArrayHasKey("Type", $pdfFilespecDetails);
+        $this->assertArrayHasKey("UF", $pdfFilespecDetails);
+        $this->assertArrayHasKey("AFRelationship", $pdfFilespecDetails);
+        $this->assertArrayHasKey("Desc", $pdfFilespecDetails);
+        $this->assertArrayHasKey("EF", $pdfFilespecDetails);
+        $this->assertEquals("txt_addattachment_1.txt", $pdfFilespecDetails["F"]);
+        $this->assertEquals("Filespec", $pdfFilespecDetails["Type"]);
+        $this->assertEquals("txt_addattachment_1.txt", $pdfFilespecDetails["UF"]);
+        $this->assertEquals(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_SUPPLEMENT, $pdfFilespecDetails["AFRelationship"]);
+        $this->assertEquals("txt_addattachment_1.txt", $pdfFilespecDetails["Desc"]);
+
+        $pdfFilespecDetailsEF = $pdfFilespecDetails["EF"];
+        $this->assertIsArray($pdfFilespecDetailsEF);
+        $this->assertArrayHasKey("F", $pdfFilespecDetailsEF);
+        $this->assertArrayHasKey("UF", $pdfFilespecDetailsEF);
+
+        $pdfFilespecDetailsEF_F = $pdfFilespecDetailsEF["F"];
+        $this->assertIsArray($pdfFilespecDetailsEF_F);
+        $this->assertArrayHasKey("Filter", $pdfFilespecDetailsEF_F);
+        $this->assertArrayHasKey("Subtype", $pdfFilespecDetailsEF_F);
+        $this->assertArrayHasKey("Type", $pdfFilespecDetailsEF_F);
+        $this->assertArrayHasKey("Length", $pdfFilespecDetailsEF_F);
+        $this->assertEquals("FlateDecode", $pdfFilespecDetailsEF_F["Filter"]);
+        $this->assertEquals("text/plain", $pdfFilespecDetailsEF_F["Subtype"]);
+        $this->assertEquals("EmbeddedFile", $pdfFilespecDetailsEF_F["Type"]);
+        $this->assertEquals(195, $pdfFilespecDetailsEF_F["Length"]);
+
+        $pdfFilespecDetailsEF_UF = $pdfFilespecDetailsEF["UF"];
+        $this->assertIsArray($pdfFilespecDetailsEF_UF);
+        $this->assertArrayHasKey("Filter", $pdfFilespecDetailsEF_UF);
+        $this->assertArrayHasKey("Subtype", $pdfFilespecDetailsEF_UF);
+        $this->assertArrayHasKey("Type", $pdfFilespecDetailsEF_UF);
+        $this->assertArrayHasKey("Length", $pdfFilespecDetailsEF_UF);
+        $this->assertEquals("FlateDecode", $pdfFilespecDetailsEF_UF["Filter"]);
+        $this->assertEquals("text/plain", $pdfFilespecDetailsEF_UF["Subtype"]);
+        $this->assertEquals("EmbeddedFile", $pdfFilespecDetailsEF_UF["Type"]);
+        $this->assertEquals(195, $pdfFilespecDetailsEF_UF["Length"]);
+    }
+
+    public function testAttachAdditionalFileByContentEmptyContent(): void
+    {
+        $this->expectException(ZugferdInvalidArgumentException::class);
+        $this->expectExceptionMessage("You must specify a content to attach");
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByContent("", "", "", "");
+    }
+
+    public function testAttachAdditionalFileByContentEmptyFilename(): void
+    {
+        $this->expectException(ZugferdInvalidArgumentException::class);
+        $this->expectExceptionMessage("You must specify a filename for the content to attach");
+
+        $filename = __DIR__ . "/../assets/txt_addattachment_1.txt";
+
+        $content = file_get_contents($filename);
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByContent($content, "", "", "");
+    }
+
+    public function testAttachAdditionalFileByContentAllValid(): void
+    {
+        $filename = __DIR__ . "/../assets/txt_addattachment_1.txt";
+
+        $content = file_get_contents($filename);
+
+        $pdfBuilder = ZugferdDocumentPdfBuilder::fromPdfFile(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->attachAdditionalFileByContent($content, "file.txt", "A file attachment");
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $pdfParser = new PdfParser();
+        $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
+        $pdfFilespecs = $pdfParsed->getObjectsByType('Filespec');
+
+        $this->assertCount(2, $pdfFilespecs);
+        $this->assertArrayHasKey("8_0", $pdfFilespecs);
+        $this->assertArrayHasKey("10_0", $pdfFilespecs);
+
+        $pdfFilespec = $pdfFilespecs["8_0"];
+        $pdfFilespecDetails = $pdfFilespec->getDetails();
+
+        $this->assertIsArray($pdfFilespecDetails);
+        $this->assertArrayHasKey("F", $pdfFilespecDetails);
+        $this->assertArrayHasKey("Type", $pdfFilespecDetails);
+        $this->assertArrayHasKey("UF", $pdfFilespecDetails);
+        $this->assertArrayHasKey("AFRelationship", $pdfFilespecDetails);
+        $this->assertArrayHasKey("Desc", $pdfFilespecDetails);
+        $this->assertArrayHasKey("EF", $pdfFilespecDetails);
+        $this->assertEquals("factur-x.xml", $pdfFilespecDetails["F"]);
+        $this->assertEquals("Filespec", $pdfFilespecDetails["Type"]);
+        $this->assertEquals("factur-x.xml", $pdfFilespecDetails["UF"]);
+        $this->assertEquals(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_DATA, $pdfFilespecDetails["AFRelationship"]);
+        $this->assertEquals("Factur-X Invoice", $pdfFilespecDetails["Desc"]);
+
+        $pdfFilespec = $pdfFilespecs["10_0"];
+        $pdfFilespecDetails = $pdfFilespec->getDetails();
+
+        $this->assertIsArray($pdfFilespecDetails);
+        $this->assertArrayHasKey("F", $pdfFilespecDetails);
+        $this->assertArrayHasKey("Type", $pdfFilespecDetails);
+        $this->assertArrayHasKey("UF", $pdfFilespecDetails);
+        $this->assertArrayHasKey("AFRelationship", $pdfFilespecDetails);
+        $this->assertArrayHasKey("Desc", $pdfFilespecDetails);
+        $this->assertArrayHasKey("EF", $pdfFilespecDetails);
+        $this->assertEquals("file.txt", $pdfFilespecDetails["F"]);
+        $this->assertEquals("Filespec", $pdfFilespecDetails["Type"]);
+        $this->assertEquals("file.txt", $pdfFilespecDetails["UF"]);
+        $this->assertEquals(ZugferdDocumentPdfBuilder::AF_RELATIONSHIP_SUPPLEMENT, $pdfFilespecDetails["AFRelationship"]);
+        $this->assertEquals("A file attachment", $pdfFilespecDetails["Desc"]);
+
+        $pdfFilespecDetailsEF = $pdfFilespecDetails["EF"];
+        $this->assertIsArray($pdfFilespecDetailsEF);
+        $this->assertArrayHasKey("F", $pdfFilespecDetailsEF);
+        $this->assertArrayHasKey("UF", $pdfFilespecDetailsEF);
+
+        $pdfFilespecDetailsEF_F = $pdfFilespecDetailsEF["F"];
+        $this->assertIsArray($pdfFilespecDetailsEF_F);
+        $this->assertArrayHasKey("Filter", $pdfFilespecDetailsEF_F);
+        $this->assertArrayHasKey("Subtype", $pdfFilespecDetailsEF_F);
+        $this->assertArrayHasKey("Type", $pdfFilespecDetailsEF_F);
+        $this->assertArrayHasKey("Length", $pdfFilespecDetailsEF_F);
+        $this->assertEquals("FlateDecode", $pdfFilespecDetailsEF_F["Filter"]);
+        $this->assertEquals("text/plain", $pdfFilespecDetailsEF_F["Subtype"]);
+        $this->assertEquals("EmbeddedFile", $pdfFilespecDetailsEF_F["Type"]);
+        $this->assertEquals(195, $pdfFilespecDetailsEF_F["Length"]);
+
+        $pdfFilespecDetailsEF_UF = $pdfFilespecDetailsEF["UF"];
+        $this->assertIsArray($pdfFilespecDetailsEF_UF);
+        $this->assertArrayHasKey("Filter", $pdfFilespecDetailsEF_UF);
+        $this->assertArrayHasKey("Subtype", $pdfFilespecDetailsEF_UF);
+        $this->assertArrayHasKey("Type", $pdfFilespecDetailsEF_UF);
+        $this->assertArrayHasKey("Length", $pdfFilespecDetailsEF_UF);
+        $this->assertEquals("FlateDecode", $pdfFilespecDetailsEF_UF["Filter"]);
+        $this->assertEquals("text/plain", $pdfFilespecDetailsEF_UF["Subtype"]);
+        $this->assertEquals("EmbeddedFile", $pdfFilespecDetailsEF_UF["Type"]);
+        $this->assertEquals(195, $pdfFilespecDetailsEF_UF["Length"]);
+    }
+
+    public function testDeterministicMode(): void
+    {
+        $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setDeterministicModeEnabled(true);
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $pdfParser = new PdfParser();
+        $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
+        $pdfDetails = $pdfParsed->getDetails();
+
+        $this->assertArrayHasKey("Producer", $pdfDetails);
+        $this->assertArrayHasKey("CreationDate", $pdfDetails);
+        $this->assertArrayHasKey("Title", $pdfDetails);
+        $this->assertArrayHasKey("Subject", $pdfDetails);
+        $this->assertArrayHasKey("Author", $pdfDetails);
+        $this->assertArrayHasKey("Keywords", $pdfDetails);
+        $this->assertArrayHasKey("Pages", $pdfDetails);
+        $this->assertArrayHasKey("fx:documenttype", $pdfDetails);
+        $this->assertArrayHasKey("fx:documentfilename", $pdfDetails);
+        $this->assertArrayHasKey("fx:version", $pdfDetails);
+        $this->assertArrayHasKey("fx:conformancelevel", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:part", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:conformance", $pdfDetails);
+        $this->assertArrayHasKey("dc:title", $pdfDetails);
+        $this->assertArrayHasKey("dc:creator", $pdfDetails);
+        $this->assertArrayHasKey("dc:description", $pdfDetails);
+        $this->assertArrayHasKey("xmp:creatortool", $pdfDetails);
+        $this->assertArrayHasKey("xmp:createdate", $pdfDetails);
+        $this->assertArrayHasKey("xmp:modifydate", $pdfDetails);
+        $this->assertStringContainsString('FPDF', $pdfDetails["Producer"]);
+        $this->assertStringContainsString('2000-01-01', $pdfDetails["CreationDate"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["Title"]);
+        $this->assertEquals("FacturX/ZUGFeRD Invoice 471102 dated 2018-03-05 issued by Lieferant GmbH", $pdfDetails["Subject"]);
+        $this->assertEquals("Lieferant GmbH", $pdfDetails["Author"]);
+        $this->assertEquals("1", $pdfDetails["Pages"]);
+        $this->assertEquals("INVOICE", $pdfDetails["fx:documenttype"]);
+        $this->assertEquals("factur-x.xml", $pdfDetails["fx:documentfilename"]);
+        $this->assertEquals("1.0", $pdfDetails["fx:version"]);
+        $this->assertEquals("EN 16931", $pdfDetails["fx:conformancelevel"]);
+        $this->assertEquals("3", $pdfDetails["pdfaid:part"]);
+        $this->assertEquals("B", $pdfDetails["pdfaid:conformance"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["dc:title"]);
+        $this->assertEquals("Lieferant GmbH", $pdfDetails["dc:creator"]);
+        $this->assertEquals("FacturX/ZUGFeRD Invoice 471102 dated 2018-03-05 issued by Lieferant GmbH", $pdfDetails["dc:description"]);
+        $this->assertStringContainsString('Factur-X PHP library', $pdfDetails["xmp:creatortool"]);
+        $this->assertStringContainsString('2000-01-01', $pdfDetails["xmp:createdate"]);
+        $this->assertStringContainsString('2000-01-01', $pdfDetails["xmp:modifydate"]);
+    }
+
+    public function testCustomMetaInformation(): void
+    {
+        $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setTitleTemplate('%3$s : %2$s %1$s');
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $pdfParser = new PdfParser();
+        $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
+        $pdfDetails = $pdfParsed->getDetails();
+
+        $this->assertArrayHasKey("Producer", $pdfDetails);
+        $this->assertArrayHasKey("CreationDate", $pdfDetails);
+        $this->assertArrayHasKey("Title", $pdfDetails);
+        $this->assertArrayHasKey("Subject", $pdfDetails);
+        $this->assertArrayHasKey("Author", $pdfDetails);
+        $this->assertArrayHasKey("Keywords", $pdfDetails);
+        $this->assertArrayHasKey("Pages", $pdfDetails);
+        $this->assertArrayHasKey("fx:documenttype", $pdfDetails);
+        $this->assertArrayHasKey("fx:documentfilename", $pdfDetails);
+        $this->assertArrayHasKey("fx:version", $pdfDetails);
+        $this->assertArrayHasKey("fx:conformancelevel", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:part", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:conformance", $pdfDetails);
+        $this->assertArrayHasKey("dc:title", $pdfDetails);
+        $this->assertArrayHasKey("dc:creator", $pdfDetails);
+        $this->assertArrayHasKey("dc:description", $pdfDetails);
+        $this->assertArrayHasKey("xmp:creatortool", $pdfDetails);
+        $this->assertArrayHasKey("xmp:createdate", $pdfDetails);
+        $this->assertArrayHasKey("xmp:modifydate", $pdfDetails);
+        $this->assertStringContainsString('FPDF', $pdfDetails["Producer"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["CreationDate"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["Title"]);
+        $this->assertEquals("FacturX/ZUGFeRD Invoice 471102 dated 2018-03-05 issued by Lieferant GmbH", $pdfDetails["Subject"]);
+        $this->assertEquals("Lieferant GmbH", $pdfDetails["Author"]);
+        $this->assertEquals("1", $pdfDetails["Pages"]);
+        $this->assertEquals("INVOICE", $pdfDetails["fx:documenttype"]);
+        $this->assertEquals("factur-x.xml", $pdfDetails["fx:documentfilename"]);
+        $this->assertEquals("1.0", $pdfDetails["fx:version"]);
+        $this->assertEquals("EN 16931", $pdfDetails["fx:conformancelevel"]);
+        $this->assertEquals("3", $pdfDetails["pdfaid:part"]);
+        $this->assertEquals("B", $pdfDetails["pdfaid:conformance"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["dc:title"]);
+        $this->assertEquals("Lieferant GmbH", $pdfDetails["dc:creator"]);
+        $this->assertEquals("FacturX/ZUGFeRD Invoice 471102 dated 2018-03-05 issued by Lieferant GmbH", $pdfDetails["dc:description"]);
+        $this->assertStringContainsString('Factur-X PHP library', $pdfDetails["xmp:creatortool"]);
+        $this->assertStringContainsString("2018-03-05", $pdfDetails["xmp:createdate"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["xmp:modifydate"]);
+
+        $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setTitleTemplate('%3$s : %2$s %1$s');
+        $pdfBuilder->setKeywordTemplate('%1$s, %2$s, %3$s, %4$s');
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $pdfParser = new PdfParser();
+        $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
+        $pdfDetails = $pdfParsed->getDetails();
+
+        $this->assertArrayHasKey("Producer", $pdfDetails);
+        $this->assertArrayHasKey("CreationDate", $pdfDetails);
+        $this->assertArrayHasKey("Title", $pdfDetails);
+        $this->assertArrayHasKey("Subject", $pdfDetails);
+        $this->assertArrayHasKey("Author", $pdfDetails);
+        $this->assertArrayHasKey("Keywords", $pdfDetails);
+        $this->assertArrayHasKey("Pages", $pdfDetails);
+        $this->assertArrayHasKey("fx:documenttype", $pdfDetails);
+        $this->assertArrayHasKey("fx:documentfilename", $pdfDetails);
+        $this->assertArrayHasKey("fx:version", $pdfDetails);
+        $this->assertArrayHasKey("fx:conformancelevel", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:part", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:conformance", $pdfDetails);
+        $this->assertArrayHasKey("dc:title", $pdfDetails);
+        $this->assertArrayHasKey("dc:creator", $pdfDetails);
+        $this->assertArrayHasKey("dc:description", $pdfDetails);
+        $this->assertArrayHasKey("xmp:creatortool", $pdfDetails);
+        $this->assertArrayHasKey("xmp:createdate", $pdfDetails);
+        $this->assertArrayHasKey("xmp:modifydate", $pdfDetails);
+        $this->assertStringContainsString('FPDF', $pdfDetails["Producer"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["CreationDate"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["Title"]);
+        $this->assertEquals("FacturX/ZUGFeRD Invoice 471102 dated 2018-03-05 issued by Lieferant GmbH", $pdfDetails["Subject"]);
+        $this->assertEquals("Lieferant GmbH", $pdfDetails["Author"]);
+        $this->assertEquals("1", $pdfDetails["Pages"]);
+        $this->assertEquals("INVOICE", $pdfDetails["fx:documenttype"]);
+        $this->assertEquals("factur-x.xml", $pdfDetails["fx:documentfilename"]);
+        $this->assertEquals("1.0", $pdfDetails["fx:version"]);
+        $this->assertEquals("EN 16931", $pdfDetails["fx:conformancelevel"]);
+        $this->assertEquals("3", $pdfDetails["pdfaid:part"]);
+        $this->assertEquals("B", $pdfDetails["pdfaid:conformance"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["dc:title"]);
+        $this->assertEquals("Lieferant GmbH", $pdfDetails["dc:creator"]);
+        $this->assertEquals("FacturX/ZUGFeRD Invoice 471102 dated 2018-03-05 issued by Lieferant GmbH", $pdfDetails["dc:description"]);
+        $this->assertStringContainsString('Factur-X PHP library', $pdfDetails["xmp:creatortool"]);
+        $this->assertStringContainsString("2018-03-05", $pdfDetails["xmp:createdate"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["xmp:modifydate"]);
+
+        $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setTitleTemplate('%3$s : %2$s %1$s');
+        $pdfBuilder->setKeywordTemplate('%1$s, %2$s, %3$s, %4$s');
+        $pdfBuilder->setAuthorTemplate('Issued by seller with name %3$s');
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $pdfParser = new PdfParser();
+        $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
+        $pdfDetails = $pdfParsed->getDetails();
+
+        $this->assertArrayHasKey("Producer", $pdfDetails);
+        $this->assertArrayHasKey("CreationDate", $pdfDetails);
+        $this->assertArrayHasKey("Title", $pdfDetails);
+        $this->assertArrayHasKey("Subject", $pdfDetails);
+        $this->assertArrayHasKey("Author", $pdfDetails);
+        $this->assertArrayHasKey("Keywords", $pdfDetails);
+        $this->assertArrayHasKey("Pages", $pdfDetails);
+        $this->assertArrayHasKey("fx:documenttype", $pdfDetails);
+        $this->assertArrayHasKey("fx:documentfilename", $pdfDetails);
+        $this->assertArrayHasKey("fx:version", $pdfDetails);
+        $this->assertArrayHasKey("fx:conformancelevel", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:part", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:conformance", $pdfDetails);
+        $this->assertArrayHasKey("dc:title", $pdfDetails);
+        $this->assertArrayHasKey("dc:creator", $pdfDetails);
+        $this->assertArrayHasKey("dc:description", $pdfDetails);
+        $this->assertArrayHasKey("xmp:creatortool", $pdfDetails);
+        $this->assertArrayHasKey("xmp:createdate", $pdfDetails);
+        $this->assertArrayHasKey("xmp:modifydate", $pdfDetails);
+        $this->assertStringContainsString('FPDF', $pdfDetails["Producer"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["CreationDate"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["Title"]);
+        $this->assertEquals("FacturX/ZUGFeRD Invoice 471102 dated 2018-03-05 issued by Lieferant GmbH", $pdfDetails["Subject"]);
+        $this->assertEquals("Issued by seller with name Lieferant GmbH", $pdfDetails["Author"]);
+        $this->assertEquals("1", $pdfDetails["Pages"]);
+        $this->assertEquals("INVOICE", $pdfDetails["fx:documenttype"]);
+        $this->assertEquals("factur-x.xml", $pdfDetails["fx:documentfilename"]);
+        $this->assertEquals("1.0", $pdfDetails["fx:version"]);
+        $this->assertEquals("EN 16931", $pdfDetails["fx:conformancelevel"]);
+        $this->assertEquals("3", $pdfDetails["pdfaid:part"]);
+        $this->assertEquals("B", $pdfDetails["pdfaid:conformance"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["dc:title"]);
+        $this->assertEquals("Issued by seller with name Lieferant GmbH", $pdfDetails["dc:creator"]);
+        $this->assertEquals("FacturX/ZUGFeRD Invoice 471102 dated 2018-03-05 issued by Lieferant GmbH", $pdfDetails["dc:description"]);
+        $this->assertStringContainsString('Factur-X PHP library', $pdfDetails["xmp:creatortool"]);
+        $this->assertStringContainsString("2018-03-05", $pdfDetails["xmp:createdate"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["xmp:modifydate"]);
+
+        $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setTitleTemplate('%3$s : %2$s %1$s');
+        $pdfBuilder->setKeywordTemplate('%1$s, %2$s, %3$s, %4$s');
+        $pdfBuilder->setAuthorTemplate('Issued by seller with name %3$s');
+        $pdfBuilder->setSubjectTemplate('%2$s-Document, Issued by %3$s');
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $pdfParser = new PdfParser();
+        $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
+        $pdfDetails = $pdfParsed->getDetails();
+
+        $this->assertArrayHasKey("Producer", $pdfDetails);
+        $this->assertArrayHasKey("CreationDate", $pdfDetails);
+        $this->assertArrayHasKey("Title", $pdfDetails);
+        $this->assertArrayHasKey("Subject", $pdfDetails);
+        $this->assertArrayHasKey("Author", $pdfDetails);
+        $this->assertArrayHasKey("Keywords", $pdfDetails);
+        $this->assertArrayHasKey("Pages", $pdfDetails);
+        $this->assertArrayHasKey("fx:documenttype", $pdfDetails);
+        $this->assertArrayHasKey("fx:documentfilename", $pdfDetails);
+        $this->assertArrayHasKey("fx:version", $pdfDetails);
+        $this->assertArrayHasKey("fx:conformancelevel", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:part", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:conformance", $pdfDetails);
+        $this->assertArrayHasKey("dc:title", $pdfDetails);
+        $this->assertArrayHasKey("dc:creator", $pdfDetails);
+        $this->assertArrayHasKey("dc:description", $pdfDetails);
+        $this->assertArrayHasKey("xmp:creatortool", $pdfDetails);
+        $this->assertArrayHasKey("xmp:createdate", $pdfDetails);
+        $this->assertArrayHasKey("xmp:modifydate", $pdfDetails);
+        $this->assertStringContainsString('FPDF', $pdfDetails["Producer"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["CreationDate"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["Title"]);
+        $this->assertEquals("Invoice-Document, Issued by Lieferant GmbH", $pdfDetails["Subject"]);
+        $this->assertEquals("Issued by seller with name Lieferant GmbH", $pdfDetails["Author"]);
+        $this->assertEquals("1", $pdfDetails["Pages"]);
+        $this->assertEquals("INVOICE", $pdfDetails["fx:documenttype"]);
+        $this->assertEquals("factur-x.xml", $pdfDetails["fx:documentfilename"]);
+        $this->assertEquals("1.0", $pdfDetails["fx:version"]);
+        $this->assertEquals("EN 16931", $pdfDetails["fx:conformancelevel"]);
+        $this->assertEquals("3", $pdfDetails["pdfaid:part"]);
+        $this->assertEquals("B", $pdfDetails["pdfaid:conformance"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["dc:title"]);
+        $this->assertEquals("Issued by seller with name Lieferant GmbH", $pdfDetails["dc:creator"]);
+        $this->assertEquals("Invoice-Document, Issued by Lieferant GmbH", $pdfDetails["dc:description"]);
+        $this->assertStringContainsString('Factur-X PHP library', $pdfDetails["xmp:creatortool"]);
+        $this->assertStringContainsString("2018-03-05", $pdfDetails["xmp:createdate"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["xmp:modifydate"]);
+
+        $whichArray = [];
+
+        $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setMetaInformationCallback(
+            function ($which) use (&$whichArray) {
+                $whichArray[] = $which;
+
+                $this->assertIsString($which);
+                $this->assertContains($which, ['author', 'keywords', 'title', 'subject']);
+
+                if ($which === 'title') {
+                    return "DummyTitle";
+                }
+
+                if ($which === 'author') {
+                    return "DummyAuthor";
+                }
+
+                if ($which === 'subject') {
+                    return "DummySubject";
+                }
+            }
+        );
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $this->assertNotEmpty($whichArray);
+        $this->assertCount(4, $whichArray);
+        $this->assertContains('author', $whichArray);
+        $this->assertContains('keywords', $whichArray);
+        $this->assertContains('title', $whichArray);
+        $this->assertContains('subject', $whichArray);
+
+        $pdfParser = new PdfParser();
+        $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
+        $pdfDetails = $pdfParsed->getDetails();
+
+        $this->assertArrayHasKey("Producer", $pdfDetails);
+        $this->assertArrayHasKey("CreationDate", $pdfDetails);
+        $this->assertArrayHasKey("Title", $pdfDetails);
+        $this->assertArrayHasKey("Subject", $pdfDetails);
+        $this->assertArrayHasKey("Author", $pdfDetails);
+        $this->assertArrayHasKey("Keywords", $pdfDetails);
+        $this->assertArrayHasKey("Pages", $pdfDetails);
+        $this->assertArrayHasKey("fx:documenttype", $pdfDetails);
+        $this->assertArrayHasKey("fx:documentfilename", $pdfDetails);
+        $this->assertArrayHasKey("fx:version", $pdfDetails);
+        $this->assertArrayHasKey("fx:conformancelevel", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:part", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:conformance", $pdfDetails);
+        $this->assertArrayHasKey("dc:title", $pdfDetails);
+        $this->assertArrayHasKey("dc:creator", $pdfDetails);
+        $this->assertArrayHasKey("dc:description", $pdfDetails);
+        $this->assertArrayHasKey("xmp:creatortool", $pdfDetails);
+        $this->assertArrayHasKey("xmp:createdate", $pdfDetails);
+        $this->assertArrayHasKey("xmp:modifydate", $pdfDetails);
+        $this->assertStringContainsString('FPDF', $pdfDetails["Producer"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["CreationDate"]);
+        $this->assertEquals("DummyTitle", $pdfDetails["Title"]);
+        $this->assertEquals("DummySubject", $pdfDetails["Subject"]);
+        $this->assertEquals("DummyAuthor", $pdfDetails["Author"]);
+        $this->assertEquals("1", $pdfDetails["Pages"]);
+        $this->assertEquals("INVOICE", $pdfDetails["fx:documenttype"]);
+        $this->assertEquals("factur-x.xml", $pdfDetails["fx:documentfilename"]);
+        $this->assertEquals("1.0", $pdfDetails["fx:version"]);
+        $this->assertEquals("EN 16931", $pdfDetails["fx:conformancelevel"]);
+        $this->assertEquals("3", $pdfDetails["pdfaid:part"]);
+        $this->assertEquals("B", $pdfDetails["pdfaid:conformance"]);
+        $this->assertEquals("DummyTitle", $pdfDetails["dc:title"]);
+        $this->assertEquals("DummyAuthor", $pdfDetails["dc:creator"]);
+        $this->assertEquals("DummySubject", $pdfDetails["dc:description"]);
+        $this->assertStringContainsString('Factur-X PHP library', $pdfDetails["xmp:creatortool"]);
+        $this->assertStringContainsString("2018-03-05", $pdfDetails["xmp:createdate"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["xmp:modifydate"]);
+
+        $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setMetaInformationCallback(
+            function ($which) {
+                if ($which === 'title') {
+                    return "";
+                }
+
+                if ($which === 'author') {
+                    return "";
+                }
+
+                if ($which === 'subject') {
+                    return "";
+                }
+            }
+        );
+        $pdfBuilder->setTitleTemplate('%3$s : %2$s %1$s');
+        $pdfBuilder->setKeywordTemplate('%1$s, %2$s, %3$s, %4$s');
+        $pdfBuilder->setAuthorTemplate('Issued by seller with name %3$s');
+        $pdfBuilder->setSubjectTemplate('%2$s-Document, Issued by %3$s');
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $pdfParser = new PdfParser();
+        $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
+        $pdfDetails = $pdfParsed->getDetails();
+
+        $this->assertArrayHasKey("Producer", $pdfDetails);
+        $this->assertArrayHasKey("CreationDate", $pdfDetails);
+        $this->assertArrayHasKey("Title", $pdfDetails);
+        $this->assertArrayHasKey("Subject", $pdfDetails);
+        $this->assertArrayHasKey("Author", $pdfDetails);
+        $this->assertArrayHasKey("Keywords", $pdfDetails);
+        $this->assertArrayHasKey("Pages", $pdfDetails);
+        $this->assertArrayHasKey("fx:documenttype", $pdfDetails);
+        $this->assertArrayHasKey("fx:documentfilename", $pdfDetails);
+        $this->assertArrayHasKey("fx:version", $pdfDetails);
+        $this->assertArrayHasKey("fx:conformancelevel", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:part", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:conformance", $pdfDetails);
+        $this->assertArrayHasKey("dc:title", $pdfDetails);
+        $this->assertArrayHasKey("dc:creator", $pdfDetails);
+        $this->assertArrayHasKey("dc:description", $pdfDetails);
+        $this->assertArrayHasKey("xmp:creatortool", $pdfDetails);
+        $this->assertArrayHasKey("xmp:createdate", $pdfDetails);
+        $this->assertArrayHasKey("xmp:modifydate", $pdfDetails);
+        $this->assertStringContainsString('FPDF', $pdfDetails["Producer"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["CreationDate"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["Title"]);
+        $this->assertEquals("Invoice-Document, Issued by Lieferant GmbH", $pdfDetails["Subject"]);
+        $this->assertEquals("Issued by seller with name Lieferant GmbH", $pdfDetails["Author"]);
+        $this->assertEquals("1", $pdfDetails["Pages"]);
+        $this->assertEquals("INVOICE", $pdfDetails["fx:documenttype"]);
+        $this->assertEquals("factur-x.xml", $pdfDetails["fx:documentfilename"]);
+        $this->assertEquals("1.0", $pdfDetails["fx:version"]);
+        $this->assertEquals("EN 16931", $pdfDetails["fx:conformancelevel"]);
+        $this->assertEquals("3", $pdfDetails["pdfaid:part"]);
+        $this->assertEquals("B", $pdfDetails["pdfaid:conformance"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["dc:title"]);
+        $this->assertEquals("Issued by seller with name Lieferant GmbH", $pdfDetails["dc:creator"]);
+        $this->assertEquals("Invoice-Document, Issued by Lieferant GmbH", $pdfDetails["dc:description"]);
+        $this->assertStringContainsString('Factur-X PHP library', $pdfDetails["xmp:creatortool"]);
+        $this->assertStringContainsString("2018-03-05", $pdfDetails["xmp:createdate"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["xmp:modifydate"]);
+
+        $pdfBuilder = new ZugferdDocumentPdfBuilder(self::$document, self::$sourcePdfFilename);
+        $pdfBuilder->setMetaInformationCallback(null);
+        $pdfBuilder->setTitleTemplate('%3$s : %2$s %1$s');
+        $pdfBuilder->setKeywordTemplate('%1$s, %2$s, %3$s, %4$s');
+        $pdfBuilder->setAuthorTemplate('Issued by seller with name %3$s');
+        $pdfBuilder->setSubjectTemplate('%2$s-Document, Issued by %3$s');
+        $pdfBuilder->generateDocument();
+        $pdfBuilder->saveDocument(self::$destPdfFilename);
+
+        $pdfParser = new PdfParser();
+        $pdfParsed = $pdfParser->parseFile(self::$destPdfFilename);
+        $pdfDetails = $pdfParsed->getDetails();
+
+        $this->assertArrayHasKey("Producer", $pdfDetails);
+        $this->assertArrayHasKey("CreationDate", $pdfDetails);
+        $this->assertArrayHasKey("Title", $pdfDetails);
+        $this->assertArrayHasKey("Subject", $pdfDetails);
+        $this->assertArrayHasKey("Author", $pdfDetails);
+        $this->assertArrayHasKey("Keywords", $pdfDetails);
+        $this->assertArrayHasKey("Pages", $pdfDetails);
+        $this->assertArrayHasKey("fx:documenttype", $pdfDetails);
+        $this->assertArrayHasKey("fx:documentfilename", $pdfDetails);
+        $this->assertArrayHasKey("fx:version", $pdfDetails);
+        $this->assertArrayHasKey("fx:conformancelevel", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:part", $pdfDetails);
+        $this->assertArrayHasKey("pdfaid:conformance", $pdfDetails);
+        $this->assertArrayHasKey("dc:title", $pdfDetails);
+        $this->assertArrayHasKey("dc:creator", $pdfDetails);
+        $this->assertArrayHasKey("dc:description", $pdfDetails);
+        $this->assertArrayHasKey("xmp:creatortool", $pdfDetails);
+        $this->assertArrayHasKey("xmp:createdate", $pdfDetails);
+        $this->assertArrayHasKey("xmp:modifydate", $pdfDetails);
+        $this->assertStringContainsString('FPDF', $pdfDetails["Producer"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["CreationDate"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["Title"]);
+        $this->assertEquals("Invoice-Document, Issued by Lieferant GmbH", $pdfDetails["Subject"]);
+        $this->assertEquals("Issued by seller with name Lieferant GmbH", $pdfDetails["Author"]);
+        $this->assertEquals("1", $pdfDetails["Pages"]);
+        $this->assertEquals("INVOICE", $pdfDetails["fx:documenttype"]);
+        $this->assertEquals("factur-x.xml", $pdfDetails["fx:documentfilename"]);
+        $this->assertEquals("1.0", $pdfDetails["fx:version"]);
+        $this->assertEquals("EN 16931", $pdfDetails["fx:conformancelevel"]);
+        $this->assertEquals("3", $pdfDetails["pdfaid:part"]);
+        $this->assertEquals("B", $pdfDetails["pdfaid:conformance"]);
+        $this->assertEquals("Lieferant GmbH : Invoice 471102", $pdfDetails["dc:title"]);
+        $this->assertEquals("Issued by seller with name Lieferant GmbH", $pdfDetails["dc:creator"]);
+        $this->assertEquals("Invoice-Document, Issued by Lieferant GmbH", $pdfDetails["dc:description"]);
+        $this->assertStringContainsString('Factur-X PHP library', $pdfDetails["xmp:creatortool"]);
+        $this->assertStringContainsString("2018-03-05", $pdfDetails["xmp:createdate"]);
+        $this->assertStringContainsString(date("Y-m-d"), $pdfDetails["xmp:modifydate"]);
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderEn16931AllowanceChargeTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderEn16931AllowanceChargeTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderEn16931AllowanceChargeTest.php	(revision 8504)
@@ -3,9 +3,9 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdDocumentPdfReader;
-use \horstoeko\zugferd\ZugferdDocumentReader;
-use \horstoeko\zugferd\codelists\ZugferdInvoiceType;
-use \horstoeko\zugferd\ZugferdProfiles;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentPdfReader;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\ZugferdProfiles;
 
 class PdfReaderEn16931AllowanceChargeTest extends TestCase
@@ -16,10 +16,7 @@
     protected static $document;
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfReader::readAndGuessFromFile
-     */
     public function testCanReadPdf(): void
     {
-        self::$document = ZugferdDocumentPdfReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/zugferd_2p1_EN16931_Rabatte.pdf");
+        self::$document = ZugferdDocumentPdfReader::readAndGuessFromFile(__DIR__ . "/../assets/pdf_zf_en16931_3.pdf");
         $this->assertNotNull(self::$document);
     }
@@ -34,25 +31,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInformation
-     */
     public function testDocumentGenerals(): void
     {
         self::$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-        $this->assertEquals('471102', $documentno);
-        $this->assertEquals(ZugferdInvoiceType::INVOICE, $documenttypecode);
-        $this->assertNotNull($documentdate);
+        $this->assertSame('471102', $documentno);
+        $this->assertSame(ZugferdInvoiceType::INVOICE, $documenttypecode);
+        $this->assertInstanceOf(\DateTime::class, $documentdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20180605'))->format('Ymd'), $documentdate->format('Ymd'));
-        $this->assertEquals("EUR", $invoiceCurrency);
-        $this->assertEquals("", $taxCurrency);
-        $this->assertEquals("", $documentname);
-        $this->assertEquals("", $documentlanguage);
-        $this->assertNull($effectiveSpecifiedPeriod);
-        $this->assertNotNull(self::$document->getInvoiceObject());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentNotes
-     */
+        $this->assertSame("EUR", $invoiceCurrency);
+        $this->assertSame("", $taxCurrency);
+        $this->assertSame("", $documentname);
+        $this->assertSame("", $documentlanguage);
+        $this->assertNotInstanceOf(\DateTime::class, $effectiveSpecifiedPeriod);
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+    }
+
     public function testDocumentNotes(): void
     {
@@ -60,5 +52,5 @@
         $this->assertIsArray($notes);
         $this->assertNotEmpty($notes);
-        $this->assertEquals(3, count($notes));
+        $this->assertCount(3, $notes);
         $this->assertArrayHasKey(0, $notes);
         $this->assertArrayHasKey(1, $notes);
@@ -95,17 +87,11 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentGeneralPaymentInformation
-     */
     public function testDocumentGeneralPaymentInformation(): void
     {
         self::$document->getDocumentGeneralPaymentInformation($creditorReferenceID, $paymentReference);
-        $this->assertEquals("", $creditorReferenceID);
-        $this->assertEquals("", $paymentReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsDocumentCopy
-     */
+        $this->assertSame("", $creditorReferenceID);
+        $this->assertSame("", $paymentReference);
+    }
+
     public function testDocumentIsCopy(): void
     {
@@ -114,7 +100,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsTestDocument
-     */
     public function testDocumentIsTestDocument(): void
     {
@@ -123,46 +106,34 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSummation
-     */
     public function testDocumentSummation(): void
     {
         self::$document->getDocumentSummation($grandTotalAmount, $duePayableAmount, $lineTotalAmount, $chargeTotalAmount, $allowanceTotalAmount, $taxBasisTotalAmount, $taxTotalAmount, $roundingAmount, $totalPrepaidAmount);
-        $this->assertEquals(215.07, $grandTotalAmount);
-        $this->assertEquals(165.07, $duePayableAmount);
-        $this->assertEquals(202.70, $lineTotalAmount);
-        $this->assertEquals(5.80, $chargeTotalAmount);
-        $this->assertEquals(14.73, $allowanceTotalAmount);
-        $this->assertEquals(193.77, $taxBasisTotalAmount);
-        $this->assertEquals(21.30, $taxTotalAmount);
-        $this->assertEquals(0.00, $roundingAmount);
-        $this->assertEquals(50.00, $totalPrepaidAmount);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerReference
-     */
+        $this->assertEqualsWithDelta(215.07, $grandTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(165.07, $duePayableAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(202.70, $lineTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(5.80, $chargeTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(14.73, $allowanceTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(193.77, $taxBasisTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(21.30, $taxTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.00, $roundingAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(50.00, $totalPrepaidAmount, PHP_FLOAT_EPSILON);
+    }
+
     public function testGetDocumentBuyerReference(): void
     {
         self::$document->getDocumentBuyerReference($buyerReference);
-        $this->assertEquals("", $buyerReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSeller
-     */
+        $this->assertSame("", $buyerReference);
+    }
+
     public function testDocumentSellerGeneral(): void
     {
         self::$document->getDocumentSeller($sellername, $sellerids, $sellerdescription);
-        $this->assertEquals("Lieferant GmbH", $sellername);
+        $this->assertSame("Lieferant GmbH", $sellername);
         $this->assertIsArray($sellerids);
         $this->assertArrayNotHasKey(0, $sellerids);
         $this->assertArrayNotHasKey(1, $sellerids);
-        $this->assertEquals("", $sellerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerGlobalId
-     */
+        $this->assertSame("", $sellerdescription);
+    }
+
     public function testDocumentSellerGlobalId(): void
     {
@@ -173,7 +144,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRegistration
-     */
     public function testDocumentSellerTaxRegistration(): void
     {
@@ -189,36 +157,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerAddress
-     */
     public function testDocumentSellerAddress(): void
     {
         self::$document->getDocumentSellerAddress($sellerlineone, $sellerlinetwo, $sellerlinethree, $sellerpostcode, $sellercity, $sellercountry, $sellersubdivision);
-        $this->assertEquals("LieferantenstraÃe 20", $sellerlineone);
-        $this->assertEquals("", $sellerlinetwo);
-        $this->assertEquals("", $sellerlinethree);
-        $this->assertEquals("80333", $sellerpostcode);
-        $this->assertEquals("MÃŒnchen", $sellercity);
-        $this->assertEquals("DE", $sellercountry);
+        $this->assertSame("LieferantenstraÃe 20", $sellerlineone);
+        $this->assertSame("", $sellerlinetwo);
+        $this->assertSame("", $sellerlinethree);
+        $this->assertSame("80333", $sellerpostcode);
+        $this->assertSame("MÃŒnchen", $sellercity);
+        $this->assertSame("DE", $sellercountry);
         $this->assertIsArray($sellersubdivision);
         $this->assertEmpty($sellersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerLegalOrganisation
-     */
     public function testDocumentSellerLegalOrganization(): void
     {
         self::$document->getDocumentSellerLegalOrganisation($sellerlegalorgid, $sellerlegalorgtype, $sellerlegalorgname);
-        $this->assertEquals("", $sellerlegalorgid);
-        $this->assertEquals("", $sellerlegalorgtype);
-        $this->assertEquals("", $sellerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerContact
-     */
+        $this->assertSame("", $sellerlegalorgid);
+        $this->assertSame("", $sellerlegalorgtype);
+        $this->assertSame("", $sellerlegalorgname);
+    }
+
     public function testDocumentSellerContact(): void
     {
@@ -232,21 +189,22 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyer
-     */
+    public function testGetDocumentSellerCommunication(): void
+    {
+        self::$document->getDocumentSellerCommunication($uriScheme, $uri);
+        $this->assertSame("", $uriScheme);
+        $this->assertSame("", $uri);
+    }
+
     public function testDocumentBuyerGeneral(): void
     {
         self::$document->getDocumentBuyer($buyername, $buyerids, $buyerdescription);
-        $this->assertEquals("Kunden AG Mitte", $buyername);
+        $this->assertSame("Kunden AG Mitte", $buyername);
         $this->assertIsArray($buyerids);
         $this->assertArrayHasKey(0, $buyerids);
         $this->assertArrayNotHasKey(1, $buyerids);
         $this->assertEquals("GE2020211", $buyerids[0]);
-        $this->assertEquals("", $buyerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerGlobalId
-     */
+        $this->assertSame("", $buyerdescription);
+    }
+
     public function testDocumentBuyerGlobalId(): void
     {
@@ -256,7 +214,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerTaxRegistration
-     */
     public function testDocumentBuyerTaxRegistration(): void
     {
@@ -266,36 +221,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerAddress
-     */
     public function testDocumentBuyerAddress(): void
     {
         self::$document->getDocumentBuyerAddress($buyerlineone, $buyerlinetwo, $buyerlinethree, $buyerpostcode, $buyercity, $buyercountry, $buyersubdivision);
-        $this->assertEquals("KundenstraÃe 15", $buyerlineone);
-        $this->assertEquals("", $buyerlinetwo);
-        $this->assertEquals("", $buyerlinethree);
-        $this->assertEquals("69876", $buyerpostcode);
-        $this->assertEquals("Frankfurt", $buyercity);
-        $this->assertEquals("DE", $buyercountry);
+        $this->assertSame("KundenstraÃe 15", $buyerlineone);
+        $this->assertSame("", $buyerlinetwo);
+        $this->assertSame("", $buyerlinethree);
+        $this->assertSame("69876", $buyerpostcode);
+        $this->assertSame("Frankfurt", $buyercity);
+        $this->assertSame("DE", $buyercountry);
         $this->assertIsArray($buyersubdivision);
         $this->assertEmpty($buyersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerLegalOrganisation
-     */
     public function testDocumentBuyerLegalOrganization(): void
     {
         self::$document->getDocumentBuyerLegalOrganisation($buyerlegalorgid, $buyerlegalorgtype, $buyerlegalorgname);
-        $this->assertEquals("", $buyerlegalorgid);
-        $this->assertEquals("", $buyerlegalorgtype);
-        $this->assertEquals("", $buyerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentBuyerContact
-     */
+        $this->assertSame("", $buyerlegalorgid);
+        $this->assertSame("", $buyerlegalorgtype);
+        $this->assertSame("", $buyerlegalorgname);
+    }
+
     public function testDocumentBuyerContact(): void
     {
@@ -309,19 +253,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentative
-     */
+    public function testGetDocumentBuyerCommunication(): void
+    {
+        self::$document->getDocumentBuyerCommunication($uriScheme, $uri);
+        $this->assertSame("", $uriScheme);
+        $this->assertSame("", $uri);
+    }
+
     public function testDocumentSellerTaxRepresentativeGeneral(): void
     {
         self::$document->getDocumentSellerTaxRepresentative($sellertaxreprname, $sellertaxreprids, $sellertaxreprdescription);
-        $this->assertEquals("", $sellertaxreprname);
+        $this->assertSame("", $sellertaxreprname);
         $this->assertIsArray($sellertaxreprids);
         $this->assertEmpty($sellertaxreprids);
-        $this->assertEquals("", $sellertaxreprdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeGlobalId
-     */
+        $this->assertSame("", $sellertaxreprdescription);
+    }
+
     public function testDocumentSellerTaxRepresentativeGlobalId(): void
     {
@@ -331,7 +276,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeTaxRegistration
-     */
     public function testDocumentSellerTaxRepresentativeTaxRegistration(): void
     {
@@ -341,36 +283,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeAddress
-     */
     public function testDocumentSellerTaxRepresentativeAddress(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeAddress($sellertaxreprlineone, $sellertaxreprlinetwo, $sellertaxreprlinethree, $sellertaxreprpostcode, $sellertaxreprcity, $sellertaxreprcountry, $sellertaxreprsubdivision);
-        $this->assertEquals("", $sellertaxreprlineone);
-        $this->assertEquals("", $sellertaxreprlinetwo);
-        $this->assertEquals("", $sellertaxreprlinethree);
-        $this->assertEquals("", $sellertaxreprpostcode);
-        $this->assertEquals("", $sellertaxreprcity);
-        $this->assertEquals("", $sellertaxreprcountry);
+        $this->assertSame("", $sellertaxreprlineone);
+        $this->assertSame("", $sellertaxreprlinetwo);
+        $this->assertSame("", $sellertaxreprlinethree);
+        $this->assertSame("", $sellertaxreprpostcode);
+        $this->assertSame("", $sellertaxreprcity);
+        $this->assertSame("", $sellertaxreprcountry);
         $this->assertIsArray($sellertaxreprsubdivision);
         $this->assertEmpty($sellertaxreprsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeLegalOrganisation
-     */
     public function testDocumentSellerTaxRepresentativeLegalOrganization(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeLegalOrganisation($sellertaxreprlegalorgid, $sellertaxreprlegalorgtype, $sellertaxreprlegalorgname);
-        $this->assertEquals("", $sellertaxreprlegalorgid);
-        $this->assertEquals("", $sellertaxreprlegalorgtype);
-        $this->assertEquals("", $sellertaxreprlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerTaxRepresentativeContact
-     */
+        $this->assertSame("", $sellertaxreprlegalorgid);
+        $this->assertSame("", $sellertaxreprlegalorgtype);
+        $this->assertSame("", $sellertaxreprlegalorgname);
+    }
+
     public function testDocumentSellerTaxRepresentativeContact(): void
     {
@@ -384,19 +315,15 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipTo
-     */
     public function testDocumentShipToGeneral(): void
     {
         self::$document->getDocumentShipTo($shiptoname, $shiptoids, $shiptodescription);
-        $this->assertEquals("", $shiptoname);
+        $this->assertNotNull($shiptoname);
+        $this->assertSame("", $shiptoname);
         $this->assertIsArray($shiptoids);
         $this->assertEmpty($shiptoids);
-        $this->assertEquals("", $shiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToGlobalId
-     */
+        $this->assertNotNull($shiptodescription);
+        $this->assertSame("", $shiptodescription);
+    }
+
     public function testDocumentShipToGlobalId(): void
     {
@@ -406,7 +333,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToTaxRegistration
-     */
     public function testDocumentShipToTaxRegistration(): void
     {
@@ -416,36 +340,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToAddress
-     */
     public function testDocumentShipToAddress(): void
     {
         self::$document->getDocumentShipToAddress($shiptolineone, $shiptolinetwo, $shiptolinethree, $shiptopostcode, $shiptocity, $shiptocountry, $shiptosubdivision);
-        $this->assertEquals("", $shiptolineone);
-        $this->assertEquals("", $shiptolinetwo);
-        $this->assertEquals("", $shiptolinethree);
-        $this->assertEquals("", $shiptopostcode);
-        $this->assertEquals("", $shiptocity);
-        $this->assertEquals("", $shiptocountry);
+        $this->assertSame("", $shiptolineone);
+        $this->assertSame("", $shiptolinetwo);
+        $this->assertSame("", $shiptolinethree);
+        $this->assertSame("", $shiptopostcode);
+        $this->assertSame("", $shiptocity);
+        $this->assertSame("", $shiptocountry);
         $this->assertIsArray($shiptosubdivision);
         $this->assertEmpty($shiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToLegalOrganisation
-     */
     public function testDocumentShipToLegalOrganization(): void
     {
         self::$document->getDocumentShipToLegalOrganisation($shiptolegalorgid, $shiptolegalorgtype, $shiptolegalorgname);
-        $this->assertEquals("", $shiptolegalorgid);
-        $this->assertEquals("", $shiptolegalorgtype);
-        $this->assertEquals("", $shiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipToContact
-     */
+        $this->assertSame("", $shiptolegalorgid);
+        $this->assertSame("", $shiptolegalorgtype);
+        $this->assertSame("", $shiptolegalorgname);
+    }
+
     public function testDocumentShipToContact(): void
     {
@@ -459,19 +372,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipTo
-     */
     public function testDocumentUltimateShipToGeneral(): void
     {
         self::$document->getDocumentUltimateShipTo($ultimateshiptoname, $ultimateshiptoids, $ultimateshiptodescription);
-        $this->assertEquals("", $ultimateshiptoname);
+        $this->assertSame("", $ultimateshiptoname);
         $this->assertIsArray($ultimateshiptoids);
         $this->assertEmpty($ultimateshiptoids);
-        $this->assertEquals("", $ultimateshiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToGlobalId
-     */
+        $this->assertSame("", $ultimateshiptodescription);
+    }
+
     public function testDocumentUltimateShipToGlobalId(): void
     {
@@ -481,7 +388,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToTaxRegistration
-     */
     public function testDocumentUltimateShipToTaxRegistration(): void
     {
@@ -491,36 +395,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToAddress
-     */
     public function testDocumentUltimateShipToAddress(): void
     {
         self::$document->getDocumentUltimateShipToAddress($ultimateshiptolineone, $ultimateshiptolinetwo, $ultimateshiptolinethree, $ultimateshiptopostcode, $ultimateshiptocity, $ultimateshiptocountry, $ultimateshiptosubdivision);
-        $this->assertEquals("", $ultimateshiptolineone);
-        $this->assertEquals("", $ultimateshiptolinetwo);
-        $this->assertEquals("", $ultimateshiptolinethree);
-        $this->assertEquals("", $ultimateshiptopostcode);
-        $this->assertEquals("", $ultimateshiptocity);
-        $this->assertEquals("", $ultimateshiptocountry);
+        $this->assertSame("", $ultimateshiptolineone);
+        $this->assertSame("", $ultimateshiptolinetwo);
+        $this->assertSame("", $ultimateshiptolinethree);
+        $this->assertSame("", $ultimateshiptopostcode);
+        $this->assertSame("", $ultimateshiptocity);
+        $this->assertSame("", $ultimateshiptocountry);
         $this->assertIsArray($ultimateshiptosubdivision);
         $this->assertEmpty($ultimateshiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToLegalOrganisation
-     */
     public function testDocumentUltimateShipToLegalOrganization(): void
     {
         self::$document->getDocumentUltimateShipToLegalOrganisation($ultimateshiptolegalorgid, $ultimateshiptolegalorgtype, $ultimateshiptolegalorgname);
-        $this->assertEquals("", $ultimateshiptolegalorgid);
-        $this->assertEquals("", $ultimateshiptolegalorgtype);
-        $this->assertEquals("", $ultimateshiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateShipToContact
-     */
+        $this->assertSame("", $ultimateshiptolegalorgid);
+        $this->assertSame("", $ultimateshiptolegalorgtype);
+        $this->assertSame("", $ultimateshiptolegalorgname);
+    }
+
     public function testDocumentUltimateShipToContact(): void
     {
@@ -539,19 +432,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFrom
-     */
     public function testDocumentShipFromGeneral(): void
     {
         self::$document->getDocumentShipFrom($shipfromname, $shipfromids, $shipfromdescription);
-        $this->assertEquals("", $shipfromname);
+        $this->assertSame("", $shipfromname);
         $this->assertIsArray($shipfromids);
         $this->assertEmpty($shipfromids);
-        $this->assertEquals("", $shipfromdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromGlobalId
-     */
+        $this->assertSame("", $shipfromdescription);
+    }
+
     public function testDocumentShipFromGlobalId(): void
     {
@@ -561,7 +448,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromTaxRegistration
-     */
     public function testDocumentShipFromTaxRegistration(): void
     {
@@ -571,36 +455,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromAddress
-     */
     public function testDocumentShipFromAddress(): void
     {
         self::$document->getDocumentShipFromAddress($shipfromlineone, $shipfromlinetwo, $shipfromlinethree, $shipfrompostcode, $shipfromcity, $shipfromcountry, $shipfromsubdivision);
-        $this->assertEquals("", $shipfromlineone);
-        $this->assertEquals("", $shipfromlinetwo);
-        $this->assertEquals("", $shipfromlinethree);
-        $this->assertEquals("", $shipfrompostcode);
-        $this->assertEquals("", $shipfromcity);
-        $this->assertEquals("", $shipfromcountry);
+        $this->assertSame("", $shipfromlineone);
+        $this->assertSame("", $shipfromlinetwo);
+        $this->assertSame("", $shipfromlinethree);
+        $this->assertSame("", $shipfrompostcode);
+        $this->assertSame("", $shipfromcity);
+        $this->assertSame("", $shipfromcountry);
         $this->assertIsArray($shipfromsubdivision);
         $this->assertEmpty($shipfromsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromLegalOrganisation
-     */
     public function testDocumentShipFromLegalOrganization(): void
     {
         self::$document->getDocumentShipFromLegalOrganisation($shipfromlegalorgid, $shipfromlegalorgtype, $shipfromlegalorgname);
-        $this->assertEquals("", $shipfromlegalorgid);
-        $this->assertEquals("", $shipfromlegalorgtype);
-        $this->assertEquals("", $shipfromlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipFromContact
-     */
+        $this->assertSame("", $shipfromlegalorgid);
+        $this->assertSame("", $shipfromlegalorgtype);
+        $this->assertSame("", $shipfromlegalorgname);
+    }
+
     public function testDocumentShipFromContact(): void
     {
@@ -619,19 +492,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicer
-     */
     public function testDocumentInvoicerGeneral(): void
     {
         self::$document->getDocumentInvoicer($invoicername, $invoicerids, $invoicerdescription);
-        $this->assertEquals("", $invoicername);
+        $this->assertSame("", $invoicername);
         $this->assertIsArray($invoicerids);
         $this->assertEmpty($invoicerids);
-        $this->assertEquals("", $invoicerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerGlobalId
-     */
+        $this->assertSame("", $invoicerdescription);
+    }
+
     public function testDocumentInvoicerGlobalId(): void
     {
@@ -641,7 +508,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerTaxRegistration
-     */
     public function testDocumentInvoicerTaxRegistration(): void
     {
@@ -651,36 +515,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerAddress
-     */
     public function testDocumentInvoicerAddress(): void
     {
         self::$document->getDocumentInvoicerAddress($invoicerlineone, $invoicerlinetwo, $invoicerlinethree, $invoicerpostcode, $invoicercity, $invoicercountry, $invoicersubdivision);
-        $this->assertEquals("", $invoicerlineone);
-        $this->assertEquals("", $invoicerlinetwo);
-        $this->assertEquals("", $invoicerlinethree);
-        $this->assertEquals("", $invoicerpostcode);
-        $this->assertEquals("", $invoicercity);
-        $this->assertEquals("", $invoicercountry);
+        $this->assertSame("", $invoicerlineone);
+        $this->assertSame("", $invoicerlinetwo);
+        $this->assertSame("", $invoicerlinethree);
+        $this->assertSame("", $invoicerpostcode);
+        $this->assertSame("", $invoicercity);
+        $this->assertSame("", $invoicercountry);
         $this->assertIsArray($invoicersubdivision);
         $this->assertEmpty($invoicersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerLegalOrganisation
-     */
     public function testDocumentInvoicerLegalOrganization(): void
     {
         self::$document->getDocumentInvoicerLegalOrganisation($invoicerlegalorgid, $invoicerlegalorgtype, $invoicerlegalorgname);
-        $this->assertEquals("", $invoicerlegalorgid);
-        $this->assertEquals("", $invoicerlegalorgtype);
-        $this->assertEquals("", $invoicerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoicerContact
-     */
+        $this->assertSame("", $invoicerlegalorgid);
+        $this->assertSame("", $invoicerlegalorgtype);
+        $this->assertSame("", $invoicerlegalorgname);
+    }
+
     public function testDocumentInvoicerContact(): void
     {
@@ -699,19 +552,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicee
-     */
     public function testDocumentInvoiceeGeneral(): void
     {
         self::$document->getDocumentInvoicee($invoiceename, $invoiceeids, $invoiceedescription);
-        $this->assertEquals("", $invoiceename);
+        $this->assertSame("", $invoiceename);
         $this->assertIsArray($invoiceeids);
         $this->assertEmpty($invoiceeids);
-        $this->assertEquals("", $invoiceedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeGlobalId
-     */
+        $this->assertSame("", $invoiceedescription);
+    }
+
     public function testDocumentInvoiceeGlobalId(): void
     {
@@ -721,7 +568,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeTaxRegistration
-     */
     public function testDocumentInvoiceeTaxRegistration(): void
     {
@@ -731,36 +575,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeAddress
-     */
     public function testDocumentInvoiceeAddress(): void
     {
         self::$document->getDocumentInvoiceeAddress($invoiceelineone, $invoiceelinetwo, $invoiceelinethree, $invoiceepostcode, $invoiceecity, $invoiceecountry, $invoiceesubdivision);
-        $this->assertEquals("", $invoiceelineone);
-        $this->assertEquals("", $invoiceelinetwo);
-        $this->assertEquals("", $invoiceelinethree);
-        $this->assertEquals("", $invoiceepostcode);
-        $this->assertEquals("", $invoiceecity);
-        $this->assertEquals("", $invoiceecountry);
+        $this->assertSame("", $invoiceelineone);
+        $this->assertSame("", $invoiceelinetwo);
+        $this->assertSame("", $invoiceelinethree);
+        $this->assertSame("", $invoiceepostcode);
+        $this->assertSame("", $invoiceecity);
+        $this->assertSame("", $invoiceecountry);
         $this->assertIsArray($invoiceesubdivision);
         $this->assertEmpty($invoiceesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeLegalOrganisation
-     */
     public function testDocumentInvoiceeLegalOrganization(): void
     {
         self::$document->getDocumentInvoiceeLegalOrganisation($invoiceelegalorgid, $invoiceelegalorgtype, $invoiceelegalorgname);
-        $this->assertEquals("", $invoiceelegalorgid);
-        $this->assertEquals("", $invoiceelegalorgtype);
-        $this->assertEquals("", $invoiceelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoiceeContact
-     */
+        $this->assertSame("", $invoiceelegalorgid);
+        $this->assertSame("", $invoiceelegalorgtype);
+        $this->assertSame("", $invoiceelegalorgname);
+    }
+
     public function testDocumentInvoiceeContact(): void
     {
@@ -779,19 +612,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayee
-     */
     public function testDocumentPayeeGeneral(): void
     {
         self::$document->getDocumentPayee($payeename, $payeeids, $payeedescription);
-        $this->assertEquals("", $payeename);
+        $this->assertSame("", $payeename);
         $this->assertIsArray($payeeids);
         $this->assertEmpty($payeeids);
-        $this->assertEquals("", $payeedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeGlobalId
-     */
+        $this->assertSame("", $payeedescription);
+    }
+
     public function testDocumentPayeeGlobalId(): void
     {
@@ -801,7 +628,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeTaxRegistration
-     */
     public function testDocumentPayeeTaxRegistration(): void
     {
@@ -811,36 +635,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeAddress
-     */
     public function testDocumentPayeeAddress(): void
     {
         self::$document->getDocumentPayeeAddress($payeelineone, $payeelinetwo, $payeelinethree, $payeepostcode, $payeecity, $payeecountry, $payeesubdivision);
-        $this->assertEquals("", $payeelineone);
-        $this->assertEquals("", $payeelinetwo);
-        $this->assertEquals("", $payeelinethree);
-        $this->assertEquals("", $payeepostcode);
-        $this->assertEquals("", $payeecity);
-        $this->assertEquals("", $payeecountry);
+        $this->assertSame("", $payeelineone);
+        $this->assertSame("", $payeelinetwo);
+        $this->assertSame("", $payeelinethree);
+        $this->assertSame("", $payeepostcode);
+        $this->assertSame("", $payeecity);
+        $this->assertSame("", $payeecountry);
         $this->assertIsArray($payeesubdivision);
         $this->assertEmpty($payeesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeLegalOrganisation
-     */
     public function testDocumentPayeeLegalOrganization(): void
     {
         self::$document->getDocumentPayeeLegalOrganisation($payeelegalorgid, $payeelegalorgtype, $payeelegalorgname);
-        $this->assertEquals("", $payeelegalorgid);
-        $this->assertEquals("", $payeelegalorgtype);
-        $this->assertEquals("", $payeelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPayeeContact
-     */
+        $this->assertSame("", $payeelegalorgid);
+        $this->assertSame("", $payeelegalorgtype);
+        $this->assertSame("", $payeelegalorgname);
+    }
+
     public function testDocumentPayeeContact(): void
     {
@@ -859,20 +672,14 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUser
-     */
     public function testDocumentProductEndUserGeneral(): void
     {
         self::$document->getDocumentProductEndUser($producendusername, $producenduserids, $producenduserdescription);
-        $this->assertEquals("", $producendusername);
+        $this->assertSame("", $producendusername);
         $this->assertIsArray($producenduserids);
         $this->assertArrayNotHasKey(0, $producenduserids);
         $this->assertArrayNotHasKey(1, $producenduserids);
-        $this->assertEquals("", $producenduserdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserGlobalId
-     */
+        $this->assertSame("", $producenduserdescription);
+    }
+
     public function testDocumentProductEndUserGlobalId(): void
     {
@@ -882,7 +689,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserTaxRegistration
-     */
     public function testDocumentProductEndUserTaxRegistration(): void
     {
@@ -896,36 +700,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserAddress
-     */
     public function testDocumentProductEndUserAddress(): void
     {
         self::$document->getDocumentProductEndUserAddress($producenduserlineone, $producenduserlinetwo, $producenduserlinethree, $producenduserpostcode, $producendusercity, $producendusercountry, $producendusersubdivision);
-        $this->assertEquals("", $producenduserlineone);
-        $this->assertEquals("", $producenduserlinetwo);
-        $this->assertEquals("", $producenduserlinethree);
-        $this->assertEquals("", $producenduserpostcode);
-        $this->assertEquals("", $producendusercity);
-        $this->assertEquals("", $producendusercountry);
+        $this->assertSame("", $producenduserlineone);
+        $this->assertSame("", $producenduserlinetwo);
+        $this->assertSame("", $producenduserlinethree);
+        $this->assertSame("", $producenduserpostcode);
+        $this->assertSame("", $producendusercity);
+        $this->assertSame("", $producendusercountry);
         $this->assertIsArray($producendusersubdivision);
         $this->assertEmpty($producendusersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserLegalOrganisation
-     */
     public function testDocumentProductEndUserLegalOrganization(): void
     {
         self::$document->getDocumentProductEndUserLegalOrganisation($producenduserlegalorgid, $producenduserlegalorgtype, $producenduserlegalorgname);
-        $this->assertEquals("", $producenduserlegalorgid);
-        $this->assertEquals("", $producenduserlegalorgtype);
-        $this->assertEquals("", $producenduserlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentProductEndUserContactContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentProductEndUserContactContact
-     */
+        $this->assertSame("", $producenduserlegalorgid);
+        $this->assertSame("", $producenduserlegalorgtype);
+        $this->assertSame("", $producenduserlegalorgname);
+    }
+
     public function testDocumentProductEndUserContact(): void
     {
@@ -939,37 +732,32 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerOrderReferencedDocument
-     */
     public function testDocumentSellerOrderReferencedDocument(): void
     {
         self::$document->getDocumentSellerOrderReferencedDocument($sellerorderrefdocid, $sellerorderrefdocdate);
-        $this->assertEquals("", $sellerorderrefdocid);
-        $this->assertNull($sellerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerOrderReferencedDocument
-     */
+        $this->assertSame("", $sellerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $sellerorderrefdocdate);
+    }
+
     public function testDocumentBuyerOrderReferencedDocument(): void
     {
         self::$document->getDocumentBuyerOrderReferencedDocument($buyerorderrefdocid, $buyerorderrefdocdate);
-        $this->assertEquals("2013-471331", $buyerorderrefdocid);
-        $this->assertNull($buyerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentContractReferencedDocument
-     */
+        $this->assertSame("2013-471331", $buyerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $buyerorderrefdocdate);
+    }
+
+    public function testDocumentQuotationReferencedDocument(): void
+    {
+        self::$document->getDocumentQuotationReferencedDocument($quotationrefdocid, $quotationrefdocdate);
+        $this->assertSame("", $quotationrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $quotationrefdocdate);
+    }
+
     public function testDocumentContractReferencedDocument(): void
     {
         self::$document->getDocumentContractReferencedDocument($contractrefdocid, $contractrefdocdate);
-        $this->assertEquals("", $contractrefdocid);
-        $this->assertNull($contractrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocuments
-     */
+        $this->assertSame("", $contractrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $contractrefdocdate);
+    }
+
     public function testDocumentAdditionalReferencedDocuments(): void
     {
@@ -979,73 +767,47 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProcuringProject
-     */
     public function testDocumentProcuringProject(): void
     {
         self::$document->getDocumentProcuringProject($projectid, $projectname);
-        $this->assertEquals("", $projectid);
-        $this->assertEquals("", $projectname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSupplyChainEvent
-     */
+        $this->assertSame("", $projectid);
+        $this->assertSame("", $projectname);
+    }
+
     public function testDocumentSupplyChainEvent(): void
     {
         self::$document->getDocumentSupplyChainEvent($supplychainevent);
-        $this->assertNotNull($supplychainevent);
+        $this->assertInstanceOf(\DateTime::class, $supplychainevent);
         $this->assertInstanceOf("DateTime", $supplychainevent);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20180603'))->format('Ymd'), $supplychainevent->format('Ymd'));
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDespatchAdviceReferencedDocument
-     */
     public function testDocumentDespatchAdviceReferencedDocument(): void
     {
         self::$document->getDocumentDespatchAdviceReferencedDocument($despatchdocid, $despatchdocdate);
-        $this->assertEquals("", $despatchdocid);
-        $this->assertNull($despatchdocdate);
-        $this->assertNotInstanceOf("DateTime", $despatchdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentReceivingAdviceReferencedDocument
-     */
+        $this->assertSame("", $despatchdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $despatchdocdate);
+    }
+
     public function testDocumentReceivingAdviceReferencedDocument(): void
     {
         self::$document->getDocumentReceivingAdviceReferencedDocument($recadvid, $recadvdate);
-        $this->assertEquals("", $recadvid);
-        $this->assertNull($recadvdate);
-        $this->assertNotInstanceOf("DateTime", $recadvdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryNoteReferencedDocument
-     */
+        $this->assertSame("", $recadvid);
+        $this->assertNotInstanceOf(\DateTime::class, $recadvdate);
+    }
+
     public function testDocumentDeliveryNoteReferencedDocument(): void
     {
         self::$document->getDocumentDeliveryNoteReferencedDocument($deliverynoterefdocid, $deliverynoterefdocdate);
-        $this->assertEquals("", $deliverynoterefdocid);
-        $this->assertNull($deliverynoterefdocdate);
-        $this->assertNotInstanceOf("DateTime", $deliverynoterefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBillingPeriod
-     */
+        $this->assertSame("", $deliverynoterefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $deliverynoterefdocdate);
+    }
+
     public function testDocumentBillingPeriod(): void
     {
         self::$document->getDocumentBillingPeriod($docbillingperiodstart, $docbillingperiodend);
-        $this->assertNull($docbillingperiodstart);
-        $this->assertNotInstanceOf("DateTime", $docbillingperiodstart);
-        $this->assertNull($docbillingperiodend);
-        $this->assertNotInstanceOf("DateTime", $docbillingperiodend);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharges
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $docbillingperiodstart);
+        $this->assertNotInstanceOf(\DateTime::class, $docbillingperiodend);
+    }
+
     public function testDocumentAllowanceCharges(): void
     {
@@ -1055,7 +817,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerms
-     */
     public function testDocumentPaymentTerms(): void
     {
@@ -1073,20 +832,13 @@
         $this->assertNotInstanceOf("DateTime", $docpaymentterms[0]["duedate"]);
         $this->assertEquals("", $docpaymentterms[0]["directdebitmandateid"]);
-        $this->assertEquals(0.0, $docpaymentterms[0]["partialpaymentamount"]);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryTerms
-     */
+        $this->assertEqualsWithDelta(0.0, $docpaymentterms[0]["partialpaymentamount"], PHP_FLOAT_EPSILON);
+    }
+
     public function testDocumentDeliveryTerms(): void
     {
         self::$document->getDocumentDeliveryTerms($devtermcode);
-        $this->assertEquals("", $devtermcode);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument
-     */
+        $this->assertSame("", $devtermcode);
+    }
+
     public function testDocumentAdditionalReferencedDocumentLoop(): void
     {
@@ -1095,8 +847,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateCustomerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateCustomerOrderReferencedDocument
-     */
     public function testDocumentUltimateCustomerOrderReferencedDocumentLoop(): void
     {
@@ -1105,8 +853,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextGetDocumentPaymentMeans
-     */
     public function testDocumentDocumentPaymentMeansLoop(): void
     {
@@ -1115,8 +859,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     */
     public function testDocumentTaxLoop(): void
     {
@@ -1125,32 +865,23 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentTax
-     */
     public function testDocumentTax(): void
     {
         $this->assertTrue(self::$document->firstDocumentTax());
         self::$document->getDocumentTax($categoryCode, $typeCode, $basisAmount, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, $lineTotalBasisAmount, $allowanceChargeBasisAmount, $taxPointDate, $dueDateTypeCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(129.37, $basisAmount);
-        $this->assertEquals(9.06, $calculatedAmount);
-        $this->assertEquals(7.0, $rateApplicablePercent);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(129.37, $basisAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(9.06, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(7.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
 
         $this->assertTrue(self::$document->nextDocumentTax());
         self::$document->getDocumentTax($categoryCode, $typeCode, $basisAmount, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, $lineTotalBasisAmount, $allowanceChargeBasisAmount, $taxPointDate, $dueDateTypeCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(64.40, $basisAmount);
-        $this->assertEquals(12.24, $calculatedAmount);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAllowanceCharge
-     */
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(64.40, $basisAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(12.24, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+    }
+
     public function testtDocumentAllowanceChargeLoop(): void
     {
@@ -1161,61 +892,52 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharge
-     */
     public function testtDocumentAllowanceCharge(): void
     {
         $this->assertTrue(self::$document->firstDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(1.00, $actualAmount);
+        $this->assertEqualsWithDelta(1.00, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(19.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(19.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
-        $this->assertEquals(10.0, $basisAmount);
+        $this->assertEqualsWithDelta(10.0, $basisAmount, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("Sondernachlass", $reason);
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("Sondernachlass", $reason);
 
         $this->assertTrue(self::$document->nextDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(13.73, $actualAmount);
+        $this->assertEqualsWithDelta(13.73, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(7.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(7.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
-        $this->assertEquals(137.30, $basisAmount);
+        $this->assertEqualsWithDelta(137.30, $basisAmount, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("Sondernachlass", $reason);
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("Sondernachlass", $reason);
 
         $this->assertTrue(self::$document->nextDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(5.80, $actualAmount);
+        $this->assertEqualsWithDelta(5.80, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertTrue($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(7.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(7.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
-        $this->assertEquals(137.30, $basisAmount);
+        $this->assertEqualsWithDelta(137.30, $basisAmount, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("Versandkosten", $reason);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentLogisticsServiceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentLogisticsServiceCharge
-     */
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("Versandkosten", $reason);
+    }
+
     public function testtDocumentLogisticsServiceChargeLoop(): void
     {
@@ -1224,8 +946,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     */
     public function testtDocumentPaymentTermsLoop(): void
     {
@@ -1234,10 +952,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDiscountTermsFromPaymentTerm
-     */
     public function testtDocumentPaymentTerms(): void
     {
@@ -1245,22 +957,30 @@
         self::$document->getDocumentPaymentTerm($termdescription, $termduedate, $termmandate);
         self::$document->getDiscountTermsFromPaymentTerm($dispercent, $discbasedatetime, $discmeasureval, $discmeasureunit, $discbaseamount, $discamount);
-
-        $this->assertEquals("Zahlbar innerhalb 30 Tagen netto bis 04.07.2018, 3% Skonto innerhalb 10 Tagen bis 15.06.2018", $termdescription);
-        $this->assertNull($termduedate);
-        $this->assertEquals("", $termmandate);
+        self::$document->getPenaltyTermsFromPaymentTerm($penaltypercent, $penaltybasedatetime, $penaltymeasureval, $penaltymeasureunit, $penaltybaseamount, $penaltyamount);
+
+        $this->assertSame("Zahlbar innerhalb 30 Tagen netto bis 04.07.2018, 3% Skonto innerhalb 10 Tagen bis 15.06.2018", $termdescription);
+        $this->assertNotInstanceOf(\DateTime::class, $termduedate);
+        $this->assertSame("", $termmandate);
         $this->assertEquals(0, $dispercent);
-        $this->assertNull($discbasedatetime);
+        $this->assertNotInstanceOf(\DateTime::class, $discbasedatetime);
         $this->assertEquals(0, $discmeasureval);
-        $this->assertEquals("", $discmeasureunit);
+        $this->assertSame("", $discmeasureunit);
         $this->assertEquals(0, $discbaseamount);
         $this->assertEquals(0, $discamount);
+        $this->assertNotInstanceOf(\DateTime::class, $penaltybasedatetime);
+        $this->assertEquals(0, $penaltymeasureval);
+        $this->assertSame("", $penaltymeasureunit);
+        $this->assertEquals(0, $penaltybaseamount);
+        $this->assertEquals(0, $penaltyamount);
 
         $this->assertFalse(self::$document->nextDocumentPaymentTerms());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     */
+    public function testDocumentReceivableSpecifiedTradeAccountingAccount(): void
+    {
+        $this->assertFalse(self::$document->firstDocumentReceivableSpecifiedTradeAccountingAccount());
+        $this->assertFalse(self::$document->nextDocumentReceivableSpecifiedTradeAccountingAccount());
+    }
+
     public function testDocumentPositionLoop(): void
     {
@@ -1272,34 +992,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
     public function testDocumentPositionFirst(): void
     {
@@ -1307,70 +997,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("1", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("1", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Kunstrasen grÃŒn 3m breit", $prodname);
-        $this->assertEquals("300cm x 100 cm", $proddesc);
-        $this->assertEquals("KR3M", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0160", $prodglobalidtype);
-        $this->assertEquals("4012345001235", $prodglobalid);
+        $this->assertSame("Kunstrasen grÃŒn 3m breit", $prodname);
+        $this->assertSame("300cm x 100 cm", $proddesc);
+        $this->assertSame("KR3M", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0160", $prodglobalidtype);
+        $this->assertSame("4012345001235", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(4.00, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(4.00, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(3.3333, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(3.3333, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(3.0, $billedquantity);
-        $this->assertEquals("MTK", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(3.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("MTK", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertTrue(self::$document->firstDocumentPositionNote());
@@ -1395,16 +1095,16 @@
             $docPosAllowanceChargereasonCode
         );
-        $this->assertEquals(0.6667, $docPosAllowanceChargeactualAmount);
+        $this->assertEqualsWithDelta(0.6667, $docPosAllowanceChargeactualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($docPosAllowanceChargeisCharge);
         $this->assertEquals(0, $docPosAllowanceChargecalculationPercent);
         $this->assertEquals(0, $docPosAllowanceChargebasisAmount);
-        $this->assertEquals("", $docPosAllowanceChargereason);
-        $this->assertEquals("", $docPosAllowanceChargeTaxTypeCode);
-        $this->assertEquals("", $docPosAllowanceChargeTaxCategoryCode);
+        $this->assertSame("", $docPosAllowanceChargereason);
+        $this->assertSame("", $docPosAllowanceChargeTaxTypeCode);
+        $this->assertSame("", $docPosAllowanceChargeTaxCategoryCode);
         $this->assertEquals(0, $docPosAllowanceChargerateApplicablePercent);
         $this->assertEquals(0, $docPosAllowanceChargesequence);
         $this->assertEquals(0, $docPosAllowanceChargebasisQuantity);
-        $this->assertEquals("", $docPosAllowanceChargebasisQuantityUnitCode);
-        $this->assertEquals("", $docPosAllowanceChargereasonCode);
+        $this->assertSame("", $docPosAllowanceChargebasisQuantityUnitCode);
+        $this->assertSame("", $docPosAllowanceChargereasonCode);
 
         $this->assertTrue(self::$document->firstDocumentPositionTax());
@@ -1413,20 +1113,19 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(10.0, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(10.0, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         $this->assertTrue(self::$document->firstDocumentPositionNote());
         self::$document->getDocumentPositionNote($content, $contentcode, $subjectcode);
-        $this->assertEquals("Wir erlauben uns Ihnen folgende Positionen aus der Lieferung Nr. 2018-51112 in Rechnung zu stellen:", $content);
-        $this->assertEquals("", $contentcode);
-        $this->assertEquals("", $subjectcode);
+        $this->assertSame("Wir erlauben uns Ihnen folgende Positionen aus der Lieferung Nr. 2018-51112 in Rechnung zu stellen:", $content);
+        $this->assertSame("", $contentcode);
+        $this->assertSame("", $subjectcode);
 
         $this->assertFalse(self::$document->nextDocumentPositionNote());
@@ -1436,36 +1135,7 @@
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionSecond(): void
     {
@@ -1473,70 +1143,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("2", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("2", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Schweinesteak", $prodname);
-        $this->assertEquals("aus Deutschland", $proddesc);
-        $this->assertEquals("SFK5", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0160", $prodglobalidtype);
-        $this->assertEquals("4000050986428", $prodglobalid);
+        $this->assertSame("Schweinesteak", $prodname);
+        $this->assertSame("aus Deutschland", $proddesc);
+        $this->assertSame("SFK5", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0160", $prodglobalidtype);
+        $this->assertSame("4000050986428", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(5.50, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(5.50, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(5.50, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(5.50, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(5.0, $billedquantity);
-        $this->assertEquals("KGM", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(5.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("KGM", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1551,14 +1231,13 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(7.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(27.5, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(7.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(27.5, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1569,36 +1248,7 @@
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionThird(): void
     {
@@ -1606,70 +1256,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("3", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("3", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
         $this->assertStringContainsString("Mineralwasser Medium 12 x 1,0l PET", $prodname);
-        $this->assertEquals("", $proddesc);
-        $this->assertEquals("GTRWA5", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0160", $prodglobalidtype);
-        $this->assertEquals("4000001234561", $prodglobalid);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("GTRWA5", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0160", $prodglobalidtype);
+        $this->assertSame("4000001234561", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(5.49, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(5.49, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(5.49, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(5.49, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(20.0, $billedquantity);
-        $this->assertEquals("H87", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(20.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("H87", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1684,14 +1344,13 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(7.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(109.80, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(7.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(109.80, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1702,36 +1361,7 @@
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionFourth(): void
     {
@@ -1739,70 +1369,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("4", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("4", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
         $this->assertStringContainsString("Pfand", $prodname);
-        $this->assertEquals("", $proddesc);
-        $this->assertEquals("PFA5", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0160", $prodglobalidtype);
-        $this->assertEquals("4000001234578", $prodglobalid);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("PFA5", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0160", $prodglobalidtype);
+        $this->assertSame("4000001234578", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(2.77, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(2.77, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(2.77, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(2.77, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(20.0, $billedquantity);
-        $this->assertEquals("C62", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(20.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("C62", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1817,14 +1457,13 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(55.40, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(55.40, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1835,11 +1474,7 @@
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAdditionalReferencedDocument
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionAdditionalReferencedDocument(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderExtended2Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderExtended2Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderExtended2Test.php	(revision 8504)
@@ -3,9 +3,9 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\codelists\ZugferdInvoiceType;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentReader;
-use \horstoeko\zugferd\ZugferdDocumentPdfReader;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\ZugferdProfiles;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdDocumentPdfReader;
 
 class PdfReaderExtended2Test extends TestCase
@@ -16,10 +16,7 @@
     protected static $document;
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfReader::readAndGuessFromFile
-     */
     public function testCanReadPdf(): void
     {
-        self::$document = ZugferdDocumentPdfReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/Facture_F20200027_EXTENDED.pdf");
+        self::$document = ZugferdDocumentPdfReader::readAndGuessFromFile(__DIR__ . "/../assets/pdf_fx_extended_1.pdf");
         $this->assertNotNull(self::$document);
     }
@@ -33,25 +30,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInformation
-     */
     public function testDocumentGenerals(): void
     {
         self::$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-        $this->assertEquals('F20200027', $documentno);
-        $this->assertEquals(ZugferdInvoiceType::INVOICE, $documenttypecode);
-        $this->assertNotNull($documentdate);
+        $this->assertSame('F20200027', $documentno);
+        $this->assertSame(ZugferdInvoiceType::INVOICE, $documenttypecode);
+        $this->assertInstanceOf(\DateTime::class, $documentdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20200115'))->format('Ymd'), $documentdate->format('Ymd'));
-        $this->assertEquals("EUR", $invoiceCurrency);
-        $this->assertEquals("", $taxCurrency);
-        $this->assertEquals("", $documentname);
-        $this->assertEquals("", $documentlanguage);
-        $this->assertNull($effectiveSpecifiedPeriod);
-        $this->assertNotNull(self::$document->getInvoiceObject());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentNotes
-     */
+        $this->assertSame("EUR", $invoiceCurrency);
+        $this->assertSame("", $taxCurrency);
+        $this->assertSame("", $documentname);
+        $this->assertSame("", $documentlanguage);
+        $this->assertNotInstanceOf(\DateTime::class, $effectiveSpecifiedPeriod);
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+    }
+
     public function testDocumentNotes(): void
     {
@@ -59,5 +51,5 @@
         $this->assertIsArray($notes);
         $this->assertNotEmpty($notes);
-        $this->assertEquals(2, count($notes));
+        $this->assertCount(2, $notes);
         $this->assertArrayHasKey(0, $notes);
         $this->assertArrayHasKey(1, $notes);
@@ -80,17 +72,11 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentGeneralPaymentInformation
-     */
     public function testDocumentGeneralPaymentInformation(): void
     {
         self::$document->getDocumentGeneralPaymentInformation($creditorReferenceID, $paymentReference);
-        $this->assertEquals("", $creditorReferenceID);
-        $this->assertEquals("F20180023BUYER", $paymentReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsDocumentCopy
-     */
+        $this->assertSame("", $creditorReferenceID);
+        $this->assertSame("F20180023BUYER", $paymentReference);
+    }
+
     public function testDocumentIsCopy(): void
     {
@@ -99,7 +85,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsTestDocument
-     */
     public function testDocumentIsTestDocument(): void
     {
@@ -108,46 +91,34 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSummation
-     */
     public function testDocumentSummation(): void
     {
         self::$document->getDocumentSummation($grandTotalAmount, $duePayableAmount, $lineTotalAmount, $chargeTotalAmount, $allowanceTotalAmount, $taxBasisTotalAmount, $taxTotalAmount, $roundingAmount, $totalPrepaidAmount);
-        $this->assertEquals(110.0, $grandTotalAmount);
-        $this->assertEquals(100.0, $duePayableAmount);
-        $this->assertEquals(95.0, $lineTotalAmount);
-        $this->assertEquals(10.0, $chargeTotalAmount);
-        $this->assertEquals(5.0, $allowanceTotalAmount);
-        $this->assertEquals(100.0, $taxBasisTotalAmount);
-        $this->assertEquals(10.0, $taxTotalAmount);
-        $this->assertEquals(0.00, $roundingAmount);
-        $this->assertEquals(10.00, $totalPrepaidAmount);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerReference
-     */
+        $this->assertEqualsWithDelta(110.0, $grandTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(100.0, $duePayableAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(95.0, $lineTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.0, $chargeTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(5.0, $allowanceTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(100.0, $taxBasisTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.0, $taxTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.00, $roundingAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.00, $totalPrepaidAmount, PHP_FLOAT_EPSILON);
+    }
+
     public function testGetDocumentBuyerReference(): void
     {
         self::$document->getDocumentBuyerReference($buyerReference);
-        $this->assertEquals("SERVEXEC", $buyerReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSeller
-     */
+        $this->assertSame("SERVEXEC", $buyerReference);
+    }
+
     public function testDocumentSellerGeneral(): void
     {
         self::$document->getDocumentSeller($sellername, $sellerids, $sellerdescription);
-        $this->assertEquals("LE FOURNISSEUR", $sellername);
+        $this->assertSame("LE FOURNISSEUR", $sellername);
         $this->assertIsArray($sellerids);
         $this->assertArrayNotHasKey(0, $sellerids);
         $this->assertArrayNotHasKey(1, $sellerids);
-        $this->assertEquals("", $sellerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerGlobalId
-     */
+        $this->assertSame("", $sellerdescription);
+    }
+
     public function testDocumentSellerGlobalId(): void
     {
@@ -158,7 +129,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRegistration
-     */
     public function testDocumentSellerTaxRegistration(): void
     {
@@ -173,36 +141,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerAddress
-     */
     public function testDocumentSellerAddress(): void
     {
         self::$document->getDocumentSellerAddress($sellerlineone, $sellerlinetwo, $sellerlinethree, $sellerpostcode, $sellercity, $sellercountry, $sellersubdivision);
-        $this->assertEquals("35 rue d'ici", $sellerlineone);
-        $this->assertEquals("Seller line 2", $sellerlinetwo);
-        $this->assertEquals("", $sellerlinethree);
-        $this->assertEquals("75018", $sellerpostcode);
-        $this->assertEquals("PARIS", $sellercity);
-        $this->assertEquals("FR", $sellercountry);
+        $this->assertSame("35 rue d'ici", $sellerlineone);
+        $this->assertSame("Seller line 2", $sellerlinetwo);
+        $this->assertSame("", $sellerlinethree);
+        $this->assertSame("75018", $sellerpostcode);
+        $this->assertSame("PARIS", $sellercity);
+        $this->assertSame("FR", $sellercountry);
         $this->assertIsArray($sellersubdivision);
         $this->assertEmpty($sellersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerLegalOrganisation
-     */
     public function testDocumentSellerLegalOrganization(): void
     {
         self::$document->getDocumentSellerLegalOrganisation($sellerlegalorgid, $sellerlegalorgtype, $sellerlegalorgname);
-        $this->assertEquals("12345678900014", $sellerlegalorgid);
-        $this->assertEquals("0002", $sellerlegalorgtype);
-        $this->assertEquals("SELLER TRADE NAME", $sellerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerContact
-     */
+        $this->assertSame("12345678900014", $sellerlegalorgid);
+        $this->assertSame("0002", $sellerlegalorgtype);
+        $this->assertSame("SELLER TRADE NAME", $sellerlegalorgname);
+    }
+
     public function testDocumentSellerContact(): void
     {
@@ -216,20 +173,21 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyer
-     */
+    public function testGetDocumentSellerCommunication(): void
+    {
+        self::$document->getDocumentSellerCommunication($uriScheme, $uri);
+        $this->assertSame("EM", $uriScheme);
+        $this->assertSame("moi@seller.com", $uri);
+    }
+
     public function testDocumentBuyerGeneral(): void
     {
         self::$document->getDocumentBuyer($buyername, $buyerids, $buyerdescription);
-        $this->assertEquals("LE CLIENT", $buyername);
+        $this->assertSame("LE CLIENT", $buyername);
         $this->assertIsArray($buyerids);
         $this->assertArrayNotHasKey(0, $buyerids);
         $this->assertArrayNotHasKey(1, $buyerids);
-        $this->assertEquals("", $buyerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerGlobalId
-     */
+        $this->assertSame("", $buyerdescription);
+    }
+
     public function testDocumentBuyerGlobalId(): void
     {
@@ -240,7 +198,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerTaxRegistration
-     */
     public function testDocumentBuyerTaxRegistration(): void
     {
@@ -255,36 +210,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerAddress
-     */
     public function testDocumentBuyerAddress(): void
     {
         self::$document->getDocumentBuyerAddress($buyerlineone, $buyerlinetwo, $buyerlinethree, $buyerpostcode, $buyercity, $buyercountry, $buyersubdivision);
-        $this->assertEquals("58 rue de la mer", $buyerlineone);
-        $this->assertEquals("Buyer line 2", $buyerlinetwo);
-        $this->assertEquals("", $buyerlinethree);
-        $this->assertEquals("06000", $buyerpostcode);
-        $this->assertEquals("NICE", $buyercity);
-        $this->assertEquals("FR", $buyercountry);
+        $this->assertSame("58 rue de la mer", $buyerlineone);
+        $this->assertSame("Buyer line 2", $buyerlinetwo);
+        $this->assertSame("", $buyerlinethree);
+        $this->assertSame("06000", $buyerpostcode);
+        $this->assertSame("NICE", $buyercity);
+        $this->assertSame("FR", $buyercountry);
         $this->assertIsArray($buyersubdivision);
         $this->assertEmpty($buyersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerLegalOrganisation
-     */
     public function testDocumentBuyerLegalOrganization(): void
     {
         self::$document->getDocumentBuyerLegalOrganisation($buyerlegalorgid, $buyerlegalorgtype, $buyerlegalorgname);
-        $this->assertEquals("98765432100029", $buyerlegalorgid);
-        $this->assertEquals("0002", $buyerlegalorgtype);
-        $this->assertEquals("", $buyerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentBuyerContact
-     */
+        $this->assertSame("98765432100029", $buyerlegalorgid);
+        $this->assertSame("0002", $buyerlegalorgtype);
+        $this->assertSame("", $buyerlegalorgname);
+    }
+
     public function testDocumentBuyerContact(): void
     {
@@ -298,19 +242,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentative
-     */
+    public function testGetDocumentBuyerCommunication(): void
+    {
+        self::$document->getDocumentBuyerCommunication($uriScheme, $uri);
+        $this->assertSame("EM", $uriScheme);
+        $this->assertSame("me@buyer.com", $uri);
+    }
+
     public function testDocumentSellerTaxRepresentativeGeneral(): void
     {
         self::$document->getDocumentSellerTaxRepresentative($sellertaxreprname, $sellertaxreprids, $sellertaxreprdescription);
-        $this->assertEquals("", $sellertaxreprname);
+        $this->assertSame("", $sellertaxreprname);
         $this->assertIsArray($sellertaxreprids);
         $this->assertEmpty($sellertaxreprids);
-        $this->assertEquals("", $sellertaxreprdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeGlobalId
-     */
+        $this->assertSame("", $sellertaxreprdescription);
+    }
+
     public function testDocumentSellerTaxRepresentativeGlobalId(): void
     {
@@ -320,7 +265,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeTaxRegistration
-     */
     public function testDocumentSellerTaxRepresentativeTaxRegistration(): void
     {
@@ -330,36 +272,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeAddress
-     */
     public function testDocumentSellerTaxRepresentativeAddress(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeAddress($sellertaxreprlineone, $sellertaxreprlinetwo, $sellertaxreprlinethree, $sellertaxreprpostcode, $sellertaxreprcity, $sellertaxreprcountry, $sellertaxreprsubdivision);
-        $this->assertEquals("", $sellertaxreprlineone);
-        $this->assertEquals("", $sellertaxreprlinetwo);
-        $this->assertEquals("", $sellertaxreprlinethree);
-        $this->assertEquals("", $sellertaxreprpostcode);
-        $this->assertEquals("", $sellertaxreprcity);
-        $this->assertEquals("", $sellertaxreprcountry);
+        $this->assertSame("", $sellertaxreprlineone);
+        $this->assertSame("", $sellertaxreprlinetwo);
+        $this->assertSame("", $sellertaxreprlinethree);
+        $this->assertSame("", $sellertaxreprpostcode);
+        $this->assertSame("", $sellertaxreprcity);
+        $this->assertSame("", $sellertaxreprcountry);
         $this->assertIsArray($sellertaxreprsubdivision);
         $this->assertEmpty($sellertaxreprsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeLegalOrganisation
-     */
     public function testDocumentSellerTaxRepresentativeLegalOrganization(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeLegalOrganisation($sellertaxreprlegalorgid, $sellertaxreprlegalorgtype, $sellertaxreprlegalorgname);
-        $this->assertEquals("", $sellertaxreprlegalorgid);
-        $this->assertEquals("", $sellertaxreprlegalorgtype);
-        $this->assertEquals("", $sellertaxreprlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerTaxRepresentativeContact
-     */
+        $this->assertSame("", $sellertaxreprlegalorgid);
+        $this->assertSame("", $sellertaxreprlegalorgtype);
+        $this->assertSame("", $sellertaxreprlegalorgname);
+    }
+
     public function testDocumentSellerTaxRepresentativeContact(): void
     {
@@ -373,19 +304,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipTo
-     */
     public function testDocumentShipToGeneral(): void
     {
         self::$document->getDocumentShipTo($shiptoname, $shiptoids, $shiptodescription);
-        $this->assertEquals("DEL Name", $shiptoname);
+        $this->assertSame("DEL Name", $shiptoname);
         $this->assertIsArray($shiptoids);
         $this->assertEmpty($shiptoids);
-        $this->assertEquals("", $shiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToGlobalId
-     */
+        $this->assertSame("", $shiptodescription);
+    }
+
     public function testDocumentShipToGlobalId(): void
     {
@@ -396,7 +321,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToTaxRegistration
-     */
     public function testDocumentShipToTaxRegistration(): void
     {
@@ -406,36 +328,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToAddress
-     */
     public function testDocumentShipToAddress(): void
     {
         self::$document->getDocumentShipToAddress($shiptolineone, $shiptolinetwo, $shiptolinethree, $shiptopostcode, $shiptocity, $shiptocountry, $shiptosubdivision);
-        $this->assertEquals("DEL 58 rue de la mer", $shiptolineone);
-        $this->assertEquals("DEL line 2", $shiptolinetwo);
-        $this->assertEquals("", $shiptolinethree);
-        $this->assertEquals("06000", $shiptopostcode);
-        $this->assertEquals("NICE", $shiptocity);
-        $this->assertEquals("FR", $shiptocountry);
+        $this->assertSame("DEL 58 rue de la mer", $shiptolineone);
+        $this->assertSame("DEL line 2", $shiptolinetwo);
+        $this->assertSame("", $shiptolinethree);
+        $this->assertSame("06000", $shiptopostcode);
+        $this->assertSame("NICE", $shiptocity);
+        $this->assertSame("FR", $shiptocountry);
         $this->assertIsArray($shiptosubdivision);
         $this->assertEmpty($shiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToLegalOrganisation
-     */
     public function testDocumentShipToLegalOrganization(): void
     {
         self::$document->getDocumentShipToLegalOrganisation($shiptolegalorgid, $shiptolegalorgtype, $shiptolegalorgname);
-        $this->assertEquals("", $shiptolegalorgid);
-        $this->assertEquals("", $shiptolegalorgtype);
-        $this->assertEquals("", $shiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipToContact
-     */
+        $this->assertSame("", $shiptolegalorgid);
+        $this->assertSame("", $shiptolegalorgtype);
+        $this->assertSame("", $shiptolegalorgname);
+    }
+
     public function testDocumentShipToContact(): void
     {
@@ -449,19 +360,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipTo
-     */
     public function testDocumentUltimateShipToGeneral(): void
     {
         self::$document->getDocumentUltimateShipTo($ultimateshiptoname, $ultimateshiptoids, $ultimateshiptodescription);
-        $this->assertEquals("", $ultimateshiptoname);
+        $this->assertSame("", $ultimateshiptoname);
         $this->assertIsArray($ultimateshiptoids);
         $this->assertEmpty($ultimateshiptoids);
-        $this->assertEquals("", $ultimateshiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToGlobalId
-     */
+        $this->assertSame("", $ultimateshiptodescription);
+    }
+
     public function testDocumentUltimateShipToGlobalId(): void
     {
@@ -471,7 +376,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToTaxRegistration
-     */
     public function testDocumentUltimateShipToTaxRegistration(): void
     {
@@ -481,36 +383,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToAddress
-     */
     public function testDocumentUltimateShipToAddress(): void
     {
         self::$document->getDocumentUltimateShipToAddress($ultimateshiptolineone, $ultimateshiptolinetwo, $ultimateshiptolinethree, $ultimateshiptopostcode, $ultimateshiptocity, $ultimateshiptocountry, $ultimateshiptosubdivision);
-        $this->assertEquals("", $ultimateshiptolineone);
-        $this->assertEquals("", $ultimateshiptolinetwo);
-        $this->assertEquals("", $ultimateshiptolinethree);
-        $this->assertEquals("", $ultimateshiptopostcode);
-        $this->assertEquals("", $ultimateshiptocity);
-        $this->assertEquals("", $ultimateshiptocountry);
+        $this->assertSame("", $ultimateshiptolineone);
+        $this->assertSame("", $ultimateshiptolinetwo);
+        $this->assertSame("", $ultimateshiptolinethree);
+        $this->assertSame("", $ultimateshiptopostcode);
+        $this->assertSame("", $ultimateshiptocity);
+        $this->assertSame("", $ultimateshiptocountry);
         $this->assertIsArray($ultimateshiptosubdivision);
         $this->assertEmpty($ultimateshiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToLegalOrganisation
-     */
     public function testDocumentUltimateShipToLegalOrganization(): void
     {
         self::$document->getDocumentUltimateShipToLegalOrganisation($ultimateshiptolegalorgid, $ultimateshiptolegalorgtype, $ultimateshiptolegalorgname);
-        $this->assertEquals("", $ultimateshiptolegalorgid);
-        $this->assertEquals("", $ultimateshiptolegalorgtype);
-        $this->assertEquals("", $ultimateshiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateShipToContact
-     */
+        $this->assertSame("", $ultimateshiptolegalorgid);
+        $this->assertSame("", $ultimateshiptolegalorgtype);
+        $this->assertSame("", $ultimateshiptolegalorgname);
+    }
+
     public function testDocumentUltimateShipToContact(): void
     {
@@ -529,19 +420,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFrom
-     */
     public function testDocumentShipFromGeneral(): void
     {
         self::$document->getDocumentShipFrom($shipfromname, $shipfromids, $shipfromdescription);
-        $this->assertEquals("", $shipfromname);
+        $this->assertSame("", $shipfromname);
         $this->assertIsArray($shipfromids);
         $this->assertEmpty($shipfromids);
-        $this->assertEquals("", $shipfromdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromGlobalId
-     */
+        $this->assertSame("", $shipfromdescription);
+    }
+
     public function testDocumentShipFromGlobalId(): void
     {
@@ -551,7 +436,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromTaxRegistration
-     */
     public function testDocumentShipFromTaxRegistration(): void
     {
@@ -561,36 +443,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromAddress
-     */
     public function testDocumentShipFromAddress(): void
     {
         self::$document->getDocumentShipFromAddress($shipfromlineone, $shipfromlinetwo, $shipfromlinethree, $shipfrompostcode, $shipfromcity, $shipfromcountry, $shipfromsubdivision);
-        $this->assertEquals("", $shipfromlineone);
-        $this->assertEquals("", $shipfromlinetwo);
-        $this->assertEquals("", $shipfromlinethree);
-        $this->assertEquals("", $shipfrompostcode);
-        $this->assertEquals("", $shipfromcity);
-        $this->assertEquals("", $shipfromcountry);
+        $this->assertSame("", $shipfromlineone);
+        $this->assertSame("", $shipfromlinetwo);
+        $this->assertSame("", $shipfromlinethree);
+        $this->assertSame("", $shipfrompostcode);
+        $this->assertSame("", $shipfromcity);
+        $this->assertSame("", $shipfromcountry);
         $this->assertIsArray($shipfromsubdivision);
         $this->assertEmpty($shipfromsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromLegalOrganisation
-     */
     public function testDocumentShipFromLegalOrganization(): void
     {
         self::$document->getDocumentShipFromLegalOrganisation($shipfromlegalorgid, $shipfromlegalorgtype, $shipfromlegalorgname);
-        $this->assertEquals("", $shipfromlegalorgid);
-        $this->assertEquals("", $shipfromlegalorgtype);
-        $this->assertEquals("", $shipfromlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipFromContact
-     */
+        $this->assertSame("", $shipfromlegalorgid);
+        $this->assertSame("", $shipfromlegalorgtype);
+        $this->assertSame("", $shipfromlegalorgname);
+    }
+
     public function testDocumentShipFromContact(): void
     {
@@ -609,19 +480,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicer
-     */
     public function testDocumentInvoicerGeneral(): void
     {
         self::$document->getDocumentInvoicer($invoicername, $invoicerids, $invoicerdescription);
-        $this->assertEquals("", $invoicername);
+        $this->assertSame("", $invoicername);
         $this->assertIsArray($invoicerids);
         $this->assertEmpty($invoicerids);
-        $this->assertEquals("", $invoicerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerGlobalId
-     */
+        $this->assertSame("", $invoicerdescription);
+    }
+
     public function testDocumentInvoicerGlobalId(): void
     {
@@ -631,7 +496,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerTaxRegistration
-     */
     public function testDocumentInvoicerTaxRegistration(): void
     {
@@ -641,36 +503,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerAddress
-     */
     public function testDocumentInvoicerAddress(): void
     {
         self::$document->getDocumentInvoicerAddress($invoicerlineone, $invoicerlinetwo, $invoicerlinethree, $invoicerpostcode, $invoicercity, $invoicercountry, $invoicersubdivision);
-        $this->assertEquals("", $invoicerlineone);
-        $this->assertEquals("", $invoicerlinetwo);
-        $this->assertEquals("", $invoicerlinethree);
-        $this->assertEquals("", $invoicerpostcode);
-        $this->assertEquals("", $invoicercity);
-        $this->assertEquals("", $invoicercountry);
+        $this->assertSame("", $invoicerlineone);
+        $this->assertSame("", $invoicerlinetwo);
+        $this->assertSame("", $invoicerlinethree);
+        $this->assertSame("", $invoicerpostcode);
+        $this->assertSame("", $invoicercity);
+        $this->assertSame("", $invoicercountry);
         $this->assertIsArray($invoicersubdivision);
         $this->assertEmpty($invoicersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerLegalOrganisation
-     */
     public function testDocumentInvoicerLegalOrganization(): void
     {
         self::$document->getDocumentInvoicerLegalOrganisation($invoicerlegalorgid, $invoicerlegalorgtype, $invoicerlegalorgname);
-        $this->assertEquals("", $invoicerlegalorgid);
-        $this->assertEquals("", $invoicerlegalorgtype);
-        $this->assertEquals("", $invoicerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoicerContact
-     */
+        $this->assertSame("", $invoicerlegalorgid);
+        $this->assertSame("", $invoicerlegalorgtype);
+        $this->assertSame("", $invoicerlegalorgname);
+    }
+
     public function testDocumentInvoicerContact(): void
     {
@@ -689,19 +540,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicee
-     */
     public function testDocumentInvoiceeGeneral(): void
     {
         self::$document->getDocumentInvoicee($invoiceename, $invoiceeids, $invoiceedescription);
-        $this->assertEquals("", $invoiceename);
+        $this->assertSame("", $invoiceename);
         $this->assertIsArray($invoiceeids);
         $this->assertEmpty($invoiceeids);
-        $this->assertEquals("", $invoiceedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeGlobalId
-     */
+        $this->assertSame("", $invoiceedescription);
+    }
+
     public function testDocumentInvoiceeGlobalId(): void
     {
@@ -711,7 +556,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeTaxRegistration
-     */
     public function testDocumentInvoiceeTaxRegistration(): void
     {
@@ -721,36 +563,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeAddress
-     */
     public function testDocumentInvoiceeAddress(): void
     {
         self::$document->getDocumentInvoiceeAddress($invoiceelineone, $invoiceelinetwo, $invoiceelinethree, $invoiceepostcode, $invoiceecity, $invoiceecountry, $invoiceesubdivision);
-        $this->assertEquals("", $invoiceelineone);
-        $this->assertEquals("", $invoiceelinetwo);
-        $this->assertEquals("", $invoiceelinethree);
-        $this->assertEquals("", $invoiceepostcode);
-        $this->assertEquals("", $invoiceecity);
-        $this->assertEquals("", $invoiceecountry);
+        $this->assertSame("", $invoiceelineone);
+        $this->assertSame("", $invoiceelinetwo);
+        $this->assertSame("", $invoiceelinethree);
+        $this->assertSame("", $invoiceepostcode);
+        $this->assertSame("", $invoiceecity);
+        $this->assertSame("", $invoiceecountry);
         $this->assertIsArray($invoiceesubdivision);
         $this->assertEmpty($invoiceesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeLegalOrganisation
-     */
     public function testDocumentInvoiceeLegalOrganization(): void
     {
         self::$document->getDocumentInvoiceeLegalOrganisation($invoiceelegalorgid, $invoiceelegalorgtype, $invoiceelegalorgname);
-        $this->assertEquals("", $invoiceelegalorgid);
-        $this->assertEquals("", $invoiceelegalorgtype);
-        $this->assertEquals("", $invoiceelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoiceeContact
-     */
+        $this->assertSame("", $invoiceelegalorgid);
+        $this->assertSame("", $invoiceelegalorgtype);
+        $this->assertSame("", $invoiceelegalorgname);
+    }
+
     public function testDocumentInvoiceeContact(): void
     {
@@ -769,19 +600,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayee
-     */
     public function testDocumentPayeeGeneral(): void
     {
         self::$document->getDocumentPayee($payeename, $payeeids, $payeedescription);
-        $this->assertEquals("", $payeename);
+        $this->assertSame("", $payeename);
         $this->assertIsArray($payeeids);
         $this->assertEmpty($payeeids);
-        $this->assertEquals("", $payeedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeGlobalId
-     */
+        $this->assertSame("", $payeedescription);
+    }
+
     public function testDocumentPayeeGlobalId(): void
     {
@@ -791,7 +616,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeTaxRegistration
-     */
     public function testDocumentPayeeTaxRegistration(): void
     {
@@ -801,36 +623,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeAddress
-     */
     public function testDocumentPayeeAddress(): void
     {
         self::$document->getDocumentPayeeAddress($payeelineone, $payeelinetwo, $payeelinethree, $payeepostcode, $payeecity, $payeecountry, $payeesubdivision);
-        $this->assertEquals("", $payeelineone);
-        $this->assertEquals("", $payeelinetwo);
-        $this->assertEquals("", $payeelinethree);
-        $this->assertEquals("", $payeepostcode);
-        $this->assertEquals("", $payeecity);
-        $this->assertEquals("", $payeecountry);
+        $this->assertSame("", $payeelineone);
+        $this->assertSame("", $payeelinetwo);
+        $this->assertSame("", $payeelinethree);
+        $this->assertSame("", $payeepostcode);
+        $this->assertSame("", $payeecity);
+        $this->assertSame("", $payeecountry);
         $this->assertIsArray($payeesubdivision);
         $this->assertEmpty($payeesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeLegalOrganisation
-     */
     public function testDocumentPayeeLegalOrganization(): void
     {
         self::$document->getDocumentPayeeLegalOrganisation($payeelegalorgid, $payeelegalorgtype, $payeelegalorgname);
-        $this->assertEquals("", $payeelegalorgid);
-        $this->assertEquals("", $payeelegalorgtype);
-        $this->assertEquals("", $payeelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPayeeContact
-     */
+        $this->assertSame("", $payeelegalorgid);
+        $this->assertSame("", $payeelegalorgtype);
+        $this->assertSame("", $payeelegalorgname);
+    }
+
     public function testDocumentPayeeContact(): void
     {
@@ -849,20 +660,14 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUser
-     */
     public function testDocumentProductEndUserGeneral(): void
     {
         self::$document->getDocumentProductEndUser($producendusername, $producenduserids, $producenduserdescription);
-        $this->assertEquals("", $producendusername);
+        $this->assertSame("", $producendusername);
         $this->assertIsArray($producenduserids);
         $this->assertArrayNotHasKey(0, $producenduserids);
         $this->assertArrayNotHasKey(1, $producenduserids);
-        $this->assertEquals("", $producenduserdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserGlobalId
-     */
+        $this->assertSame("", $producenduserdescription);
+    }
+
     public function testDocumentProductEndUserGlobalId(): void
     {
@@ -872,7 +677,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserTaxRegistration
-     */
     public function testDocumentProductEndUserTaxRegistration(): void
     {
@@ -886,36 +688,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserAddress
-     */
     public function testDocumentProductEndUserAddress(): void
     {
         self::$document->getDocumentProductEndUserAddress($producenduserlineone, $producenduserlinetwo, $producenduserlinethree, $producenduserpostcode, $producendusercity, $producendusercountry, $producendusersubdivision);
-        $this->assertEquals("", $producenduserlineone);
-        $this->assertEquals("", $producenduserlinetwo);
-        $this->assertEquals("", $producenduserlinethree);
-        $this->assertEquals("", $producenduserpostcode);
-        $this->assertEquals("", $producendusercity);
-        $this->assertEquals("", $producendusercountry);
+        $this->assertSame("", $producenduserlineone);
+        $this->assertSame("", $producenduserlinetwo);
+        $this->assertSame("", $producenduserlinethree);
+        $this->assertSame("", $producenduserpostcode);
+        $this->assertSame("", $producendusercity);
+        $this->assertSame("", $producendusercountry);
         $this->assertIsArray($producendusersubdivision);
         $this->assertEmpty($producendusersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserLegalOrganisation
-     */
     public function testDocumentProductEndUserLegalOrganization(): void
     {
         self::$document->getDocumentProductEndUserLegalOrganisation($producenduserlegalorgid, $producenduserlegalorgtype, $producenduserlegalorgname);
-        $this->assertEquals("", $producenduserlegalorgid);
-        $this->assertEquals("", $producenduserlegalorgtype);
-        $this->assertEquals("", $producenduserlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentProductEndUserContactContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentProductEndUserContactContact
-     */
+        $this->assertSame("", $producenduserlegalorgid);
+        $this->assertSame("", $producenduserlegalorgtype);
+        $this->assertSame("", $producenduserlegalorgname);
+    }
+
     public function testDocumentProductEndUserContact(): void
     {
@@ -929,37 +720,32 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerOrderReferencedDocument
-     */
     public function testDocumentSellerOrderReferencedDocument(): void
     {
         self::$document->getDocumentSellerOrderReferencedDocument($sellerorderrefdocid, $sellerorderrefdocdate);
-        $this->assertEquals("SALES REF 2547", $sellerorderrefdocid);
-        $this->assertNull($sellerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerOrderReferencedDocument
-     */
+        $this->assertSame("SALES REF 2547", $sellerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $sellerorderrefdocdate);
+    }
+
     public function testDocumentBuyerOrderReferencedDocument(): void
     {
         self::$document->getDocumentBuyerOrderReferencedDocument($buyerorderrefdocid, $buyerorderrefdocdate);
-        $this->assertEquals("PO201925478", $buyerorderrefdocid);
-        $this->assertNull($buyerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentContractReferencedDocument
-     */
+        $this->assertSame("PO201925478", $buyerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $buyerorderrefdocdate);
+    }
+
+    public function testDocumentQuotationReferencedDocument(): void
+    {
+        self::$document->getDocumentQuotationReferencedDocument($quotationrefdocid, $quotationrefdocdate);
+        $this->assertSame("", $quotationrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $quotationrefdocdate);
+    }
+
     public function testDocumentContractReferencedDocument(): void
     {
         self::$document->getDocumentContractReferencedDocument($contractrefdocid, $contractrefdocdate);
-        $this->assertEquals("CT2018120802", $contractrefdocid);
-        $this->assertNull($contractrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocuments
-     */
+        $this->assertSame("CT2018120802", $contractrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $contractrefdocdate);
+    }
+
     public function testDocumentAdditionalReferencedDocuments(): void
     {
@@ -975,61 +761,40 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProcuringProject
-     */
     public function testDocumentProcuringProject(): void
     {
         self::$document->getDocumentProcuringProject($projectid, $projectname);
-        $this->assertEquals("PROJET2547", $projectid);
-        $this->assertEquals("Project reference", $projectname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSupplyChainEvent
-     */
+        $this->assertSame("PROJET2547", $projectid);
+        $this->assertSame("Project reference", $projectname);
+    }
+
     public function testDocumentSupplyChainEvent(): void
     {
         self::$document->getDocumentSupplyChainEvent($supplychainevent);
-        $this->assertNotNull($supplychainevent);
+        $this->assertInstanceOf(\DateTime::class, $supplychainevent);
         $this->assertInstanceOf("DateTime", $supplychainevent);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20200115'))->format('Ymd'), $supplychainevent->format('Ymd'));
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDespatchAdviceReferencedDocument
-     */
     public function testDocumentDespatchAdviceReferencedDocument(): void
     {
         self::$document->getDocumentDespatchAdviceReferencedDocument($despatchdocid, $despatchdocdate);
-        $this->assertEquals("DESPADV002", $despatchdocid);
-        $this->assertNull($despatchdocdate);
-        $this->assertNotInstanceOf("DateTime", $despatchdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentReceivingAdviceReferencedDocument
-     */
+        $this->assertSame("DESPADV002", $despatchdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $despatchdocdate);
+    }
+
     public function testDocumentReceivingAdviceReferencedDocument(): void
     {
         self::$document->getDocumentReceivingAdviceReferencedDocument($recadvid, $recadvdate);
-        $this->assertEquals("RECEIV-ADV002", $recadvid);
-        $this->assertNull($recadvdate);
-        $this->assertNotInstanceOf("DateTime", $recadvdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryNoteReferencedDocument
-     */
+        $this->assertSame("RECEIV-ADV002", $recadvid);
+        $this->assertNotInstanceOf(\DateTime::class, $recadvdate);
+    }
+
     public function testDocumentDeliveryNoteReferencedDocument(): void
     {
         self::$document->getDocumentDeliveryNoteReferencedDocument($deliverynoterefdocid, $deliverynoterefdocdate);
-        $this->assertEquals("", $deliverynoterefdocid);
-        $this->assertNull($deliverynoterefdocdate);
-        $this->assertNotInstanceOf("DateTime", $deliverynoterefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBillingPeriod
-     */
+        $this->assertSame("", $deliverynoterefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $deliverynoterefdocdate);
+    }
+
     public function testDocumentBillingPeriod(): void
     {
@@ -1041,7 +806,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharges
-     */
     public function testDocumentAllowanceCharges(): void
     {
@@ -1049,10 +811,7 @@
         $this->assertIsArray($docallowancecharge);
         $this->assertNotEmpty($docallowancecharge);
-        $this->assertEquals(2, count($docallowancecharge));
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerms
-     */
+        $this->assertCount(2, $docallowancecharge);
+    }
+
     public function testDocumentPaymentTerms(): void
     {
@@ -1070,20 +829,13 @@
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20200215'))->format('Ymd'), $docpaymentterms[0]["duedate"]->format('Ymd'));
         $this->assertEquals("", $docpaymentterms[0]["directdebitmandateid"]);
-        $this->assertEquals(0.0, $docpaymentterms[0]["partialpaymentamount"]);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryTerms
-     */
+        $this->assertEqualsWithDelta(0.0, $docpaymentterms[0]["partialpaymentamount"], PHP_FLOAT_EPSILON);
+    }
+
     public function testDocumentDeliveryTerms(): void
     {
         self::$document->getDocumentDeliveryTerms($devtermcode);
-        $this->assertEquals("", $devtermcode);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument
-     */
+        $this->assertSame("", $devtermcode);
+    }
+
     public function testDocumentAdditionalReferencedDocumentLoop(): void
     {
@@ -1094,27 +846,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocument
-     */
     public function testGetDocumentAdditionalReferencedDocument(): void
     {
         $this->assertTrue(self::$document->firstDocumentAdditionalReferencedDocument());
         self::$document->getDocumentAdditionalReferencedDocument($issuerassignedid, $typecode, $uriid, $name, $reftypecode, $issueddate, $binarydatafilename);
-        $this->assertEquals("SUPPort doc", $issuerassignedid);
-        $this->assertEquals("916", $typecode);
-        $this->assertEquals("url:gffter", $uriid);
+        $this->assertSame("SUPPort doc", $issuerassignedid);
+        $this->assertSame("916", $typecode);
+        $this->assertSame("url:gffter", $uriid);
         $this->assertIsArray($name);
         $this->assertNotEmpty($name);
         $this->assertArrayHasKey(0, $name);
-        $this->assertEquals("", $reftypecode);
-        $this->assertNull($issueddate);
-        $this->assertEquals("", $binarydatafilename);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateCustomerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateCustomerOrderReferencedDocument
-     */
+        $this->assertEquals("support descript", $name[0]);
+        $this->assertSame("", $reftypecode);
+        $this->assertNotInstanceOf(\DateTime::class, $issueddate);
+        $this->assertSame("", $binarydatafilename);
+    }
+
     public function testDocumentUltimateCustomerOrderReferencedDocumentLoop(): void
     {
@@ -1123,8 +868,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextGetDocumentPaymentMeans
-     */
     public function testDocumentPaymentMeansLoop(): void
     {
@@ -1133,28 +874,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentMeans
-     */
     public function testGetDocumentPaymentMeans(): void
     {
         $this->assertTrue(self::$document->firstGetDocumentPaymentMeans());
         self::$document->getDocumentPaymentMeans($typeCode, $information, $cardType, $cardId, $cardHolderName, $buyerIban, $payeeIban, $payeeAccountName, $payeePropId, $payeeBic);
-        $this->assertEquals("30", $typeCode);
-        $this->assertEquals("", $information);
-        $this->assertEquals("", $cardType);
-        $this->assertEquals("", $cardId);
-        $this->assertEquals("", $cardHolderName);
-        $this->assertEquals("", $buyerIban);
-        $this->assertEquals("FR76 1254 2547 2569 8542 5874 698", $payeeIban);
-        $this->assertEquals("", $payeeAccountName);
-        $this->assertEquals("", $payeePropId);
-        $this->assertEquals("", $payeeBic);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     */
+        $this->assertSame("30", $typeCode);
+        $this->assertSame("", $information);
+        $this->assertSame("", $cardType);
+        $this->assertSame("", $cardId);
+        $this->assertSame("", $cardHolderName);
+        $this->assertSame("", $buyerIban);
+        $this->assertSame("FR76 1254 2547 2569 8542 5874 698", $payeeIban);
+        $this->assertSame("", $payeeAccountName);
+        $this->assertSame("", $payeePropId);
+        $this->assertSame("", $payeeBic);
+    }
+
     public function testDocumentTaxLoop(): void
     {
@@ -1163,25 +896,16 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentTax
-     */
     public function testDocumentTax(): void
     {
         $this->assertTrue(self::$document->firstDocumentTax());
         self::$document->getDocumentTax($categoryCode, $typeCode, $basisAmount, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, $lineTotalBasisAmount, $allowanceChargeBasisAmount, $taxPointDate, $dueDateTypeCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(100.0, $basisAmount);
-        $this->assertEquals(10.0, $calculatedAmount);
-        $this->assertEquals(10.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $allowanceChargeBasisAmount);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAllowanceCharge
-     */
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(100.0, $basisAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $allowanceChargeBasisAmount, PHP_FLOAT_EPSILON);
+    }
+
     public function testtDocumentAllowanceChargeLoop(): void
     {
@@ -1192,45 +916,37 @@
 
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharge
-     */
     public function testtDocumentAllowanceCharge(): void
     {
         $this->assertTrue(self::$document->firstDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(5.0, $actualAmount);
+        $this->assertEqualsWithDelta(5.0, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(10.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(10.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
         $this->assertEquals(0, $basisAmount);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("REMISE COMMERCIALE", $reason);
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("REMISE COMMERCIALE", $reason);
 
         $this->assertTrue(self::$document->nextDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(10.0, $actualAmount);
+        $this->assertEqualsWithDelta(10.0, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertTrue($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(10.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(10.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
         $this->assertEquals(0, $basisAmount);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("FRAIS DEPLACEMENT", $reason);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentLogisticsServiceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentLogisticsServiceCharge
-     */
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("FRAIS DEPLACEMENT", $reason);
+    }
+
     public function testtDocumentLogisticsServiceChargeLoop(): void
     {
@@ -1239,8 +955,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     */
     public function testtDocumentPaymentTermsLoop(): void
     {
@@ -1249,10 +961,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDiscountTermsFromPaymentTerm
-     */
     public function testtDocumentPaymentTerms(): void
     {
@@ -1260,23 +966,37 @@
         self::$document->getDocumentPaymentTerm($termdescription, $termduedate, $termmandate);
         self::$document->getDiscountTermsFromPaymentTerm($dispercent, $discbasedatetime, $discmeasureval, $discmeasureunit, $discbaseamount, $discamount);
-
-        $this->assertEquals("", $termdescription);
+        self::$document->getPenaltyTermsFromPaymentTerm($penaltypercent, $penaltybasedatetime, $penaltymeasureval, $penaltymeasureunit, $penaltybaseamount, $penaltyamount);
+
+        $this->assertSame("", $termdescription);
         $this->assertInstanceOf("DateTime", $termduedate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20200215'))->format('Ymd'), $termduedate->format('Ymd'));
-        $this->assertEquals("", $termmandate);
-        $this->assertEquals(0.0, $dispercent);
-        $this->assertNull($discbasedatetime);
+        $this->assertSame("", $termmandate);
+        $this->assertEqualsWithDelta(0.0, $dispercent, PHP_FLOAT_EPSILON);
+        $this->assertNotInstanceOf(\DateTime::class, $discbasedatetime);
         $this->assertEquals(0, $discmeasureval);
-        $this->assertEquals("", $discmeasureunit);
+        $this->assertSame("", $discmeasureunit);
         $this->assertEquals(0, $discbaseamount);
         $this->assertEquals(0, $discamount);
+        $this->assertNotInstanceOf(\DateTime::class, $penaltybasedatetime);
+        $this->assertEquals(0, $penaltymeasureval);
+        $this->assertSame("", $penaltymeasureunit);
+        $this->assertEquals(0, $penaltybaseamount);
+        $this->assertEquals(0, $penaltyamount);
 
         $this->assertFalse(self::$document->nextDocumentPaymentTerms());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     */
+    public function testDocumentReceivableSpecifiedTradeAccountingAccount(): void
+    {
+        $this->assertTrue(self::$document->firstDocumentReceivableSpecifiedTradeAccountingAccount());
+
+        self::$document->getDocumentReceivableSpecifiedTradeAccountingAccount($accountId, $accountType);
+
+        $this->assertSame("BUYER ACCOUNT REF", $accountId);
+        $this->assertSame("", $accountType);
+
+        $this->assertFalse(self::$document->nextDocumentReceivableSpecifiedTradeAccountingAccount());
+    }
+
     public function testDocumentPositionLoop(): void
     {
@@ -1287,28 +1007,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
     public function testDocumentPositionFirst(): void
     {
@@ -1316,66 +1012,76 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("1", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("1", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("PRESTATION SUPPORT", $prodname);
-        $this->assertEquals("Description", $proddesc);
-        $this->assertEquals("", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("598785412598745", $prodglobalid);
+        $this->assertSame("PRESTATION SUPPORT", $prodname);
+        $this->assertSame("Description", $proddesc);
+        $this->assertSame("", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("598785412598745", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("1", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("1", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(60.0, $netpriceamount);
-        $this->assertEquals(1.0, $netpricebasisquantity);
-        $this->assertEquals("C62", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(60.0, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(1.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("C62", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(1.0, $billedquantity);
-        $this->assertEquals("C62", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(1.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("C62", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
@@ -1396,43 +1102,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(10.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(60.00, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(10.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(60.00, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionSecond(): void
     {
@@ -1440,71 +1121,81 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("2", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("2", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("FOURNITURES DIVERSES", $prodname);
-        $this->assertEquals("Description", $proddesc);
-        $this->assertEquals("", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("", $prodglobalidtype);
-        $this->assertEquals("", $prodglobalid);
+        $this->assertSame("FOURNITURES DIVERSES", $prodname);
+        $this->assertSame("Description", $proddesc);
+        $this->assertSame("", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("", $prodglobalidtype);
+        $this->assertSame("", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("3", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("3", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(10.0, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(10.0, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
         $this->assertEquals(3, $billedquantity);
-        $this->assertEquals("C62", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertSame("C62", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
         $this->assertInstanceOf("DateTime", $docposstartdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20191201'))->format('Ymd'), $docposstartdate->format('Ymd'));
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1519,44 +1210,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(10.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(30.0, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(10.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(30.0, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionThird(): void
     {
@@ -1564,69 +1229,79 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("3", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("3", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("APPEL", $prodname);
-        $this->assertEquals("Description", $proddesc);
-        $this->assertEquals("", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("", $prodglobalidtype);
-        $this->assertEquals("", $prodglobalid);
+        $this->assertSame("APPEL", $prodname);
+        $this->assertSame("Description", $proddesc);
+        $this->assertSame("", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("", $prodglobalidtype);
+        $this->assertSame("", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0000, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0000, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(5.0, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(5.0, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(1.0, $billedquantity);
-        $this->assertEquals("C62", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(1.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("C62", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
         $this->assertInstanceOf("DateTime", $docpostenddate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20191231'))->format('Ymd'), $docpostenddate->format('Ymd'));
@@ -1643,23 +1318,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(10.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(5.0, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(10.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(5.0, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAdditionalReferencedDocument
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionAdditionalReferencedDocument(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderExtendedTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderExtendedTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderExtendedTest.php	(revision 8504)
@@ -3,9 +3,9 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentReader;
-use \horstoeko\zugferd\ZugferdDocumentPdfReader;
-use \horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdProfiles;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdDocumentPdfReader;
+use horstoeko\zugferd\codelists\ZugferdInvoiceType;
 
 class PdfReaderExtendedTest extends TestCase
@@ -16,10 +16,7 @@
     protected static $document;
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfReader::readAndGuessFromFile
-     */
     public function testCanReadPdf(): void
     {
-        self::$document = ZugferdDocumentPdfReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/zugferd_2p1_EXTENDED_Kostenrechnung.pdf");
+        self::$document = ZugferdDocumentPdfReader::readAndGuessFromFile(__DIR__ . "/../assets/pdf_zf_extended_1.pdf");
         $this->assertNotNull(self::$document);
     }
@@ -34,25 +31,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInformation
-     */
     public function testDocumentGenerals(): void
     {
         self::$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-        $this->assertEquals('KR87654321012', $documentno);
-        $this->assertEquals(ZugferdInvoiceType::INVOICE, $documenttypecode);
-        $this->assertNotNull($documentdate);
+        $this->assertSame('KR87654321012', $documentno);
+        $this->assertSame(ZugferdInvoiceType::INVOICE, $documenttypecode);
+        $this->assertInstanceOf(\DateTime::class, $documentdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20181006'))->format('Ymd'), $documentdate->format('Ymd'));
-        $this->assertEquals("EUR", $invoiceCurrency);
-        $this->assertEquals("", $taxCurrency);
-        $this->assertEquals("KOSTENRECHNUNG", $documentname);
-        $this->assertEquals("", $documentlanguage);
-        $this->assertNull($effectiveSpecifiedPeriod);
-        $this->assertNotNull(self::$document->getInvoiceObject());
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentNotes
-     */
+        $this->assertSame("EUR", $invoiceCurrency);
+        $this->assertSame("", $taxCurrency);
+        $this->assertSame("KOSTENRECHNUNG", $documentname);
+        $this->assertSame("", $documentlanguage);
+        $this->assertNotInstanceOf(\DateTime::class, $effectiveSpecifiedPeriod);
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+    }
+
     public function testDocumentNotes(): void
     {
@@ -60,5 +52,5 @@
         $this->assertIsArray($notes);
         $this->assertNotEmpty($notes);
-        $this->assertEquals(3, count($notes));
+        $this->assertCount(3, $notes);
         $this->assertArrayHasKey(0, $notes);
         $this->assertArrayHasKey(1, $notes);
@@ -100,17 +92,11 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentGeneralPaymentInformation
-     */
     public function testDocumentGeneralPaymentInformation(): void
     {
         self::$document->getDocumentGeneralPaymentInformation($creditorReferenceID, $paymentReference);
-        $this->assertEquals("", $creditorReferenceID);
-        $this->assertEquals("", $paymentReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsDocumentCopy
-     */
+        $this->assertSame("", $creditorReferenceID);
+        $this->assertSame("", $paymentReference);
+    }
+
     public function testDocumentIsCopy(): void
     {
@@ -119,7 +105,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsTestDocument
-     */
     public function testDocumentIsTestDocument(): void
     {
@@ -128,38 +111,29 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSummation
-     */
     public function testDocumentSummation(): void
     {
         self::$document->getDocumentSummation($grandTotalAmount, $duePayableAmount, $lineTotalAmount, $chargeTotalAmount, $allowanceTotalAmount, $taxBasisTotalAmount, $taxTotalAmount, $roundingAmount, $totalPrepaidAmount);
-        $this->assertEquals(480.22, $grandTotalAmount);
-        $this->assertEquals(480.22, $duePayableAmount);
-        $this->assertEquals(410.10, $lineTotalAmount);
-        $this->assertEquals(15.00, $chargeTotalAmount);
-        $this->assertEquals(21.55, $allowanceTotalAmount);
-        $this->assertEquals(403.55, $taxBasisTotalAmount);
-        $this->assertEquals(76.67, $taxTotalAmount);
-        $this->assertEquals(0.00, $roundingAmount);
-        $this->assertEquals(0.00, $totalPrepaidAmount);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSeller
-     */
+        $this->assertEqualsWithDelta(480.22, $grandTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(480.22, $duePayableAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(410.10, $lineTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(15.00, $chargeTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(21.55, $allowanceTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(403.55, $taxBasisTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(76.67, $taxTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.00, $roundingAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.00, $totalPrepaidAmount, PHP_FLOAT_EPSILON);
+    }
+
     public function testDocumentSellerGeneral(): void
     {
         self::$document->getDocumentSeller($sellername, $sellerids, $sellerdescription);
-        $this->assertEquals("MUSTERLIEFERANT GMBH", $sellername);
+        $this->assertSame("MUSTERLIEFERANT GMBH", $sellername);
         $this->assertIsArray($sellerids);
         $this->assertArrayHasKey(0, $sellerids);
         $this->assertArrayNotHasKey(1, $sellerids);
         $this->assertEquals("549910", $sellerids[0]);
-        $this->assertEquals("", $sellerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerGlobalId
-     */
+        $this->assertSame("", $sellerdescription);
+    }
+
     public function testDocumentSellerGlobalId(): void
     {
@@ -170,7 +144,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRegistration
-     */
     public function testDocumentSellerTaxRegistration(): void
     {
@@ -185,65 +156,55 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerAddress
-     */
     public function testDocumentSellerAddress(): void
     {
         self::$document->getDocumentSellerAddress($sellerlineone, $sellerlinetwo, $sellerlinethree, $sellerpostcode, $sellercity, $sellercountry, $sellersubdivision);
-        $this->assertEquals("BAHNHOFSTRASSE 99", $sellerlineone);
-        $this->assertEquals("", $sellerlinetwo);
-        $this->assertEquals("", $sellerlinethree);
-        $this->assertEquals("99199", $sellerpostcode);
-        $this->assertEquals("MUSTERHAUSEN", $sellercity);
-        $this->assertEquals("DE", $sellercountry);
+        $this->assertSame("BAHNHOFSTRASSE 99", $sellerlineone);
+        $this->assertSame("", $sellerlinetwo);
+        $this->assertSame("", $sellerlinethree);
+        $this->assertSame("99199", $sellerpostcode);
+        $this->assertSame("MUSTERHAUSEN", $sellercity);
+        $this->assertSame("DE", $sellercountry);
         $this->assertIsArray($sellersubdivision);
         $this->assertEmpty($sellersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerLegalOrganisation
-     */
     public function testDocumentSellerLegalOrganization(): void
     {
         self::$document->getDocumentSellerLegalOrganisation($sellerlegalorgid, $sellerlegalorgtype, $sellerlegalorgname);
-        $this->assertEquals("", $sellerlegalorgid);
-        $this->assertEquals("", $sellerlegalorgtype);
-        $this->assertEquals("", $sellerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerContact
-     */
+        $this->assertSame("", $sellerlegalorgid);
+        $this->assertSame("", $sellerlegalorgtype);
+        $this->assertSame("", $sellerlegalorgname);
+    }
+
     public function testDocumentSellerContact(): void
     {
         $this->assertTrue(self::$document->firstDocumentSellerContact());
         self::$document->getDocumentSellerContact($sellercontactpersonname, $sellercontactdepartmentname, $sellercontactphoneno, $sellercontactfaxno, $sellercontactemailaddr);
-        $this->assertEquals("", $sellercontactpersonname);
-        $this->assertEquals("", $sellercontactdepartmentname);
-        $this->assertEquals("+49 932 431 500", $sellercontactphoneno);
-        $this->assertEquals("", $sellercontactfaxno);
-        $this->assertEquals("max.mustermann@musterlieferant.de", $sellercontactemailaddr);
+        $this->assertSame("", $sellercontactpersonname);
+        $this->assertSame("", $sellercontactdepartmentname);
+        $this->assertSame("+49 932 431 500", $sellercontactphoneno);
+        $this->assertSame("", $sellercontactfaxno);
+        $this->assertSame("max.mustermann@musterlieferant.de", $sellercontactemailaddr);
         $this->assertFalse(self::$document->nextDocumentSellerContact());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyer
-     */
+    public function testGetDocumentSellerCommunication(): void
+    {
+        self::$document->getDocumentSellerCommunication($uriScheme, $uri);
+        $this->assertSame("", $uriScheme);
+        $this->assertSame("", $uri);
+    }
+
     public function testDocumentBuyerGeneral(): void
     {
         self::$document->getDocumentBuyer($buyername, $buyerids, $buyerdescription);
-        $this->assertEquals("MUSTER-KUNDE GMBH", $buyername);
+        $this->assertSame("MUSTER-KUNDE GMBH", $buyername);
         $this->assertIsArray($buyerids);
         $this->assertArrayHasKey(0, $buyerids);
         $this->assertArrayNotHasKey(1, $buyerids);
         $this->assertEquals("339420", $buyerids[0]);
-        $this->assertEquals("", $buyerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerGlobalId
-     */
+        $this->assertSame("", $buyerdescription);
+    }
+
     public function testDocumentBuyerGlobalId(): void
     {
@@ -254,7 +215,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerTaxRegistration
-     */
     public function testDocumentBuyerTaxRegistration(): void
     {
@@ -264,36 +222,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerAddress
-     */
     public function testDocumentBuyerAddress(): void
     {
         self::$document->getDocumentBuyerAddress($buyerlineone, $buyerlinetwo, $buyerlinethree, $buyerpostcode, $buyercity, $buyercountry, $buyersubdivision);
-        $this->assertEquals("KUNDENWEG 88", $buyerlineone);
-        $this->assertEquals("", $buyerlinetwo);
-        $this->assertEquals("", $buyerlinethree);
-        $this->assertEquals("40235", $buyerpostcode);
-        $this->assertEquals("DUESSELDORF", $buyercity);
-        $this->assertEquals("DE", $buyercountry);
+        $this->assertSame("KUNDENWEG 88", $buyerlineone);
+        $this->assertSame("", $buyerlinetwo);
+        $this->assertSame("", $buyerlinethree);
+        $this->assertSame("40235", $buyerpostcode);
+        $this->assertSame("DUESSELDORF", $buyercity);
+        $this->assertSame("DE", $buyercountry);
         $this->assertIsArray($buyersubdivision);
         $this->assertEmpty($buyersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerLegalOrganisation
-     */
     public function testDocumentBuyerLegalOrganization(): void
     {
         self::$document->getDocumentBuyerLegalOrganisation($buyerlegalorgid, $buyerlegalorgtype, $buyerlegalorgname);
-        $this->assertEquals("", $buyerlegalorgid);
-        $this->assertEquals("", $buyerlegalorgtype);
-        $this->assertEquals("", $buyerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentBuyerContact
-     */
+        $this->assertSame("", $buyerlegalorgid);
+        $this->assertSame("", $buyerlegalorgtype);
+        $this->assertSame("", $buyerlegalorgname);
+    }
+
     public function testDocumentBuyerContact(): void
     {
@@ -307,19 +254,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentative
-     */
+    public function testGetDocumentBuyerCommunication(): void
+    {
+        self::$document->getDocumentBuyerCommunication($uriScheme, $uri);
+        $this->assertSame("", $uriScheme);
+        $this->assertSame("", $uri);
+    }
+
     public function testDocumentSellerTaxRepresentativeGeneral(): void
     {
         self::$document->getDocumentSellerTaxRepresentative($sellertaxreprname, $sellertaxreprids, $sellertaxreprdescription);
-        $this->assertEquals("", $sellertaxreprname);
+        $this->assertSame("", $sellertaxreprname);
         $this->assertIsArray($sellertaxreprids);
         $this->assertEmpty($sellertaxreprids);
-        $this->assertEquals("", $sellertaxreprdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeGlobalId
-     */
+        $this->assertSame("", $sellertaxreprdescription);
+    }
+
     public function testDocumentSellerTaxRepresentativeGlobalId(): void
     {
@@ -329,7 +277,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeTaxRegistration
-     */
     public function testDocumentSellerTaxRepresentativeTaxRegistration(): void
     {
@@ -339,36 +284,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeAddress
-     */
     public function testDocumentSellerTaxRepresentativeAddress(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeAddress($sellertaxreprlineone, $sellertaxreprlinetwo, $sellertaxreprlinethree, $sellertaxreprpostcode, $sellertaxreprcity, $sellertaxreprcountry, $sellertaxreprsubdivision);
-        $this->assertEquals("", $sellertaxreprlineone);
-        $this->assertEquals("", $sellertaxreprlinetwo);
-        $this->assertEquals("", $sellertaxreprlinethree);
-        $this->assertEquals("", $sellertaxreprpostcode);
-        $this->assertEquals("", $sellertaxreprcity);
-        $this->assertEquals("", $sellertaxreprcountry);
+        $this->assertSame("", $sellertaxreprlineone);
+        $this->assertSame("", $sellertaxreprlinetwo);
+        $this->assertSame("", $sellertaxreprlinethree);
+        $this->assertSame("", $sellertaxreprpostcode);
+        $this->assertSame("", $sellertaxreprcity);
+        $this->assertSame("", $sellertaxreprcountry);
         $this->assertIsArray($sellertaxreprsubdivision);
         $this->assertEmpty($sellertaxreprsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeLegalOrganisation
-     */
     public function testDocumentSellerTaxRepresentativeLegalOrganization(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeLegalOrganisation($sellertaxreprlegalorgid, $sellertaxreprlegalorgtype, $sellertaxreprlegalorgname);
-        $this->assertEquals("", $sellertaxreprlegalorgid);
-        $this->assertEquals("", $sellertaxreprlegalorgtype);
-        $this->assertEquals("", $sellertaxreprlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerTaxRepresentativeContact
-     */
+        $this->assertSame("", $sellertaxreprlegalorgid);
+        $this->assertSame("", $sellertaxreprlegalorgtype);
+        $this->assertSame("", $sellertaxreprlegalorgname);
+    }
+
     public function testDocumentSellerTaxRepresentativeContact(): void
     {
@@ -382,19 +316,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipTo
-     */
     public function testDocumentShipToGeneral(): void
     {
         self::$document->getDocumentShipTo($shiptoname, $shiptoids, $shiptodescription);
-        $this->assertEquals("MUSTER-MARKT", $shiptoname);
+        $this->assertSame("MUSTER-MARKT", $shiptoname);
         $this->assertIsArray($shiptoids);
         $this->assertEmpty($shiptoids);
-        $this->assertEquals("", $shiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToGlobalId
-     */
+        $this->assertSame("", $shiptodescription);
+    }
+
     public function testDocumentShipToGlobalId(): void
     {
@@ -404,7 +332,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToTaxRegistration
-     */
     public function testDocumentShipToTaxRegistration(): void
     {
@@ -414,63 +339,46 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToAddress
-     */
     public function testDocumentShipToAddress(): void
     {
         self::$document->getDocumentShipToAddress($shiptolineone, $shiptolinetwo, $shiptolinethree, $shiptopostcode, $shiptocity, $shiptocountry, $shiptosubdivision);
-        $this->assertEquals("HAUPTSTRASSE 44", $shiptolineone);
-        $this->assertEquals("", $shiptolinetwo);
-        $this->assertEquals("", $shiptolinethree);
-        $this->assertEquals("31157", $shiptopostcode);
-        $this->assertEquals("SARSTEDT", $shiptocity);
-        $this->assertEquals("DE", $shiptocountry);
+        $this->assertSame("HAUPTSTRASSE 44", $shiptolineone);
+        $this->assertSame("", $shiptolinetwo);
+        $this->assertSame("", $shiptolinethree);
+        $this->assertSame("31157", $shiptopostcode);
+        $this->assertSame("SARSTEDT", $shiptocity);
+        $this->assertSame("DE", $shiptocountry);
         $this->assertIsArray($shiptosubdivision);
         $this->assertEmpty($shiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToLegalOrganisation
-     */
     public function testDocumentShipToLegalOrganization(): void
     {
         self::$document->getDocumentShipToLegalOrganisation($shiptolegalorgid, $shiptolegalorgtype, $shiptolegalorgname);
-        $this->assertEquals("", $shiptolegalorgid);
-        $this->assertEquals("", $shiptolegalorgtype);
-        $this->assertEquals("", $shiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipToContact
-     */
+        $this->assertSame("", $shiptolegalorgid);
+        $this->assertSame("", $shiptolegalorgtype);
+        $this->assertSame("", $shiptolegalorgname);
+    }
+
     public function testDocumentShipToContact(): void
     {
         $this->assertTrue(self::$document->firstDocumentShipToContact());
         self::$document->getDocumentShipToContact($shiptocontactpersonname, $shiptocontactdepartmentname, $shiptocontactphoneno, $shiptocontactfaxno, $shiptocontactemailaddr);
-        $this->assertEquals("", $shiptocontactpersonname);
-        $this->assertEquals("7322", $shiptocontactdepartmentname);
-        $this->assertEquals("", $shiptocontactphoneno);
-        $this->assertEquals("", $shiptocontactfaxno);
-        $this->assertEquals("", $shiptocontactemailaddr);
+        $this->assertSame("", $shiptocontactpersonname);
+        $this->assertSame("7322", $shiptocontactdepartmentname);
+        $this->assertSame("", $shiptocontactphoneno);
+        $this->assertSame("", $shiptocontactfaxno);
+        $this->assertSame("", $shiptocontactemailaddr);
         $this->assertFalse(self::$document->nextDocumentShipToContact());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipTo
-     */
     public function testDocumentUltimateShipToGeneral(): void
     {
         self::$document->getDocumentUltimateShipTo($ultimateshiptoname, $ultimateshiptoids, $ultimateshiptodescription);
-        $this->assertEquals("", $ultimateshiptoname);
+        $this->assertSame("", $ultimateshiptoname);
         $this->assertIsArray($ultimateshiptoids);
         $this->assertEmpty($ultimateshiptoids);
-        $this->assertEquals("", $ultimateshiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToGlobalId
-     */
+        $this->assertSame("", $ultimateshiptodescription);
+    }
+
     public function testDocumentUltimateShipToGlobalId(): void
     {
@@ -480,7 +388,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToTaxRegistration
-     */
     public function testDocumentUltimateShipToTaxRegistration(): void
     {
@@ -490,36 +395,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToAddress
-     */
     public function testDocumentUltimateShipToAddress(): void
     {
         self::$document->getDocumentUltimateShipToAddress($ultimateshiptolineone, $ultimateshiptolinetwo, $ultimateshiptolinethree, $ultimateshiptopostcode, $ultimateshiptocity, $ultimateshiptocountry, $ultimateshiptosubdivision);
-        $this->assertEquals("", $ultimateshiptolineone);
-        $this->assertEquals("", $ultimateshiptolinetwo);
-        $this->assertEquals("", $ultimateshiptolinethree);
-        $this->assertEquals("", $ultimateshiptopostcode);
-        $this->assertEquals("", $ultimateshiptocity);
-        $this->assertEquals("", $ultimateshiptocountry);
+        $this->assertSame("", $ultimateshiptolineone);
+        $this->assertSame("", $ultimateshiptolinetwo);
+        $this->assertSame("", $ultimateshiptolinethree);
+        $this->assertSame("", $ultimateshiptopostcode);
+        $this->assertSame("", $ultimateshiptocity);
+        $this->assertSame("", $ultimateshiptocountry);
         $this->assertIsArray($ultimateshiptosubdivision);
         $this->assertEmpty($ultimateshiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToLegalOrganisation
-     */
     public function testDocumentUltimateShipToLegalOrganization(): void
     {
         self::$document->getDocumentUltimateShipToLegalOrganisation($ultimateshiptolegalorgid, $ultimateshiptolegalorgtype, $ultimateshiptolegalorgname);
-        $this->assertEquals("", $ultimateshiptolegalorgid);
-        $this->assertEquals("", $ultimateshiptolegalorgtype);
-        $this->assertEquals("", $ultimateshiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateShipToContact
-     */
+        $this->assertSame("", $ultimateshiptolegalorgid);
+        $this->assertSame("", $ultimateshiptolegalorgtype);
+        $this->assertSame("", $ultimateshiptolegalorgname);
+    }
+
     public function testDocumentUltimateShipToContact(): void
     {
@@ -538,19 +432,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFrom
-     */
     public function testDocumentShipFromGeneral(): void
     {
         self::$document->getDocumentShipFrom($shipfromname, $shipfromids, $shipfromdescription);
-        $this->assertEquals("", $shipfromname);
+        $this->assertSame("", $shipfromname);
         $this->assertIsArray($shipfromids);
         $this->assertEmpty($shipfromids);
-        $this->assertEquals("", $shipfromdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromGlobalId
-     */
+        $this->assertSame("", $shipfromdescription);
+    }
+
     public function testDocumentShipFromGlobalId(): void
     {
@@ -560,7 +448,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromTaxRegistration
-     */
     public function testDocumentShipFromTaxRegistration(): void
     {
@@ -570,36 +455,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromAddress
-     */
     public function testDocumentShipFromAddress(): void
     {
         self::$document->getDocumentShipFromAddress($shipfromlineone, $shipfromlinetwo, $shipfromlinethree, $shipfrompostcode, $shipfromcity, $shipfromcountry, $shipfromsubdivision);
-        $this->assertEquals("", $shipfromlineone);
-        $this->assertEquals("", $shipfromlinetwo);
-        $this->assertEquals("", $shipfromlinethree);
-        $this->assertEquals("", $shipfrompostcode);
-        $this->assertEquals("", $shipfromcity);
-        $this->assertEquals("", $shipfromcountry);
+        $this->assertSame("", $shipfromlineone);
+        $this->assertSame("", $shipfromlinetwo);
+        $this->assertSame("", $shipfromlinethree);
+        $this->assertSame("", $shipfrompostcode);
+        $this->assertSame("", $shipfromcity);
+        $this->assertSame("", $shipfromcountry);
         $this->assertIsArray($shipfromsubdivision);
         $this->assertEmpty($shipfromsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromLegalOrganisation
-     */
     public function testDocumentShipFromLegalOrganization(): void
     {
         self::$document->getDocumentShipFromLegalOrganisation($shipfromlegalorgid, $shipfromlegalorgtype, $shipfromlegalorgname);
-        $this->assertEquals("", $shipfromlegalorgid);
-        $this->assertEquals("", $shipfromlegalorgtype);
-        $this->assertEquals("", $shipfromlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipFromContact
-     */
+        $this->assertSame("", $shipfromlegalorgid);
+        $this->assertSame("", $shipfromlegalorgtype);
+        $this->assertSame("", $shipfromlegalorgname);
+    }
+
     public function testDocumentShipFromContact(): void
     {
@@ -618,19 +492,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicer
-     */
     public function testDocumentInvoicerGeneral(): void
     {
         self::$document->getDocumentInvoicer($invoicername, $invoicerids, $invoicerdescription);
-        $this->assertEquals("", $invoicername);
+        $this->assertSame("", $invoicername);
         $this->assertIsArray($invoicerids);
         $this->assertEmpty($invoicerids);
-        $this->assertEquals("", $invoicerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerGlobalId
-     */
+        $this->assertSame("", $invoicerdescription);
+    }
+
     public function testDocumentInvoicerGlobalId(): void
     {
@@ -640,7 +508,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerTaxRegistration
-     */
     public function testDocumentInvoicerTaxRegistration(): void
     {
@@ -650,36 +515,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerAddress
-     */
     public function testDocumentInvoicerAddress(): void
     {
         self::$document->getDocumentInvoicerAddress($invoicerlineone, $invoicerlinetwo, $invoicerlinethree, $invoicerpostcode, $invoicercity, $invoicercountry, $invoicersubdivision);
-        $this->assertEquals("", $invoicerlineone);
-        $this->assertEquals("", $invoicerlinetwo);
-        $this->assertEquals("", $invoicerlinethree);
-        $this->assertEquals("", $invoicerpostcode);
-        $this->assertEquals("", $invoicercity);
-        $this->assertEquals("", $invoicercountry);
+        $this->assertSame("", $invoicerlineone);
+        $this->assertSame("", $invoicerlinetwo);
+        $this->assertSame("", $invoicerlinethree);
+        $this->assertSame("", $invoicerpostcode);
+        $this->assertSame("", $invoicercity);
+        $this->assertSame("", $invoicercountry);
         $this->assertIsArray($invoicersubdivision);
         $this->assertEmpty($invoicersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerLegalOrganisation
-     */
     public function testDocumentInvoicerLegalOrganization(): void
     {
         self::$document->getDocumentInvoicerLegalOrganisation($invoicerlegalorgid, $invoicerlegalorgtype, $invoicerlegalorgname);
-        $this->assertEquals("", $invoicerlegalorgid);
-        $this->assertEquals("", $invoicerlegalorgtype);
-        $this->assertEquals("", $invoicerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoicerContact
-     */
+        $this->assertSame("", $invoicerlegalorgid);
+        $this->assertSame("", $invoicerlegalorgtype);
+        $this->assertSame("", $invoicerlegalorgname);
+    }
+
     public function testDocumentInvoicerContact(): void
     {
@@ -698,20 +552,14 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicee
-     */
     public function testDocumentInvoiceeGeneral(): void
     {
         self::$document->getDocumentInvoicee($invoiceename, $invoiceeids, $invoiceedescription);
-        $this->assertEquals("MUSTER-KUNDE GMBH", $invoiceename);
+        $this->assertSame("MUSTER-KUNDE GMBH", $invoiceename);
         $this->assertIsArray($invoiceeids);
         $this->assertNotEmpty($invoiceeids);
         $this->assertArrayHasKey(0, $invoiceeids);
-        $this->assertEquals("", $invoiceedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeGlobalId
-     */
+        $this->assertSame("", $invoiceedescription);
+    }
+
     public function testDocumentInvoiceeGlobalId(): void
     {
@@ -723,7 +571,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeTaxRegistration
-     */
     public function testDocumentInvoiceeTaxRegistration(): void
     {
@@ -733,36 +578,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeAddress
-     */
     public function testDocumentInvoiceeAddress(): void
     {
         self::$document->getDocumentInvoiceeAddress($invoiceelineone, $invoiceelinetwo, $invoiceelinethree, $invoiceepostcode, $invoiceecity, $invoiceecountry, $invoiceesubdivision);
-        $this->assertEquals("KUNDENWEG 88", $invoiceelineone);
-        $this->assertEquals("", $invoiceelinetwo);
-        $this->assertEquals("", $invoiceelinethree);
-        $this->assertEquals("40235", $invoiceepostcode);
-        $this->assertEquals("DUESSELDORF", $invoiceecity);
-        $this->assertEquals("DE", $invoiceecountry);
+        $this->assertSame("KUNDENWEG 88", $invoiceelineone);
+        $this->assertSame("", $invoiceelinetwo);
+        $this->assertSame("", $invoiceelinethree);
+        $this->assertSame("40235", $invoiceepostcode);
+        $this->assertSame("DUESSELDORF", $invoiceecity);
+        $this->assertSame("DE", $invoiceecountry);
         $this->assertIsArray($invoiceesubdivision);
         $this->assertEmpty($invoiceesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeLegalOrganisation
-     */
     public function testDocumentInvoiceeLegalOrganization(): void
     {
         self::$document->getDocumentInvoiceeLegalOrganisation($invoiceelegalorgid, $invoiceelegalorgtype, $invoiceelegalorgname);
-        $this->assertEquals("", $invoiceelegalorgid);
-        $this->assertEquals("", $invoiceelegalorgtype);
-        $this->assertEquals("", $invoiceelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoiceeContact
-     */
+        $this->assertSame("", $invoiceelegalorgid);
+        $this->assertSame("", $invoiceelegalorgtype);
+        $this->assertSame("", $invoiceelegalorgname);
+    }
+
     public function testDocumentInvoiceeContact(): void
     {
@@ -781,19 +615,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayee
-     */
     public function testDocumentPayeeGeneral(): void
     {
         self::$document->getDocumentPayee($payeename, $payeeids, $payeedescription);
-        $this->assertEquals("", $payeename);
+        $this->assertSame("", $payeename);
         $this->assertIsArray($payeeids);
         $this->assertEmpty($payeeids);
-        $this->assertEquals("", $payeedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeGlobalId
-     */
+        $this->assertSame("", $payeedescription);
+    }
+
     public function testDocumentPayeeGlobalId(): void
     {
@@ -803,7 +631,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeTaxRegistration
-     */
     public function testDocumentPayeeTaxRegistration(): void
     {
@@ -813,36 +638,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeAddress
-     */
     public function testDocumentPayeeAddress(): void
     {
         self::$document->getDocumentPayeeAddress($payeelineone, $payeelinetwo, $payeelinethree, $payeepostcode, $payeecity, $payeecountry, $payeesubdivision);
-        $this->assertEquals("", $payeelineone);
-        $this->assertEquals("", $payeelinetwo);
-        $this->assertEquals("", $payeelinethree);
-        $this->assertEquals("", $payeepostcode);
-        $this->assertEquals("", $payeecity);
-        $this->assertEquals("", $payeecountry);
+        $this->assertSame("", $payeelineone);
+        $this->assertSame("", $payeelinetwo);
+        $this->assertSame("", $payeelinethree);
+        $this->assertSame("", $payeepostcode);
+        $this->assertSame("", $payeecity);
+        $this->assertSame("", $payeecountry);
         $this->assertIsArray($payeesubdivision);
         $this->assertEmpty($payeesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeLegalOrganisation
-     */
     public function testDocumentPayeeLegalOrganization(): void
     {
         self::$document->getDocumentPayeeLegalOrganisation($payeelegalorgid, $payeelegalorgtype, $payeelegalorgname);
-        $this->assertEquals("", $payeelegalorgid);
-        $this->assertEquals("", $payeelegalorgtype);
-        $this->assertEquals("", $payeelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPayeeContact
-     */
+        $this->assertSame("", $payeelegalorgid);
+        $this->assertSame("", $payeelegalorgtype);
+        $this->assertSame("", $payeelegalorgname);
+    }
+
     public function testDocumentPayeeContact(): void
     {
@@ -861,20 +675,14 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUser
-     */
     public function testDocumentProductEndUserGeneral(): void
     {
         self::$document->getDocumentProductEndUser($producendusername, $producenduserids, $producenduserdescription);
-        $this->assertEquals("", $producendusername);
+        $this->assertSame("", $producendusername);
         $this->assertIsArray($producenduserids);
         $this->assertArrayNotHasKey(0, $producenduserids);
         $this->assertArrayNotHasKey(1, $producenduserids);
-        $this->assertEquals("", $producenduserdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserGlobalId
-     */
+        $this->assertSame("", $producenduserdescription);
+    }
+
     public function testDocumentProductEndUserGlobalId(): void
     {
@@ -884,7 +692,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserTaxRegistration
-     */
     public function testDocumentProductEndUserTaxRegistration(): void
     {
@@ -898,36 +703,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserAddress
-     */
     public function testDocumentProductEndUserAddress(): void
     {
         self::$document->getDocumentProductEndUserAddress($producenduserlineone, $producenduserlinetwo, $producenduserlinethree, $producenduserpostcode, $producendusercity, $producendusercountry, $producendusersubdivision);
-        $this->assertEquals("", $producenduserlineone);
-        $this->assertEquals("", $producenduserlinetwo);
-        $this->assertEquals("", $producenduserlinethree);
-        $this->assertEquals("", $producenduserpostcode);
-        $this->assertEquals("", $producendusercity);
-        $this->assertEquals("", $producendusercountry);
+        $this->assertSame("", $producenduserlineone);
+        $this->assertSame("", $producenduserlinetwo);
+        $this->assertSame("", $producenduserlinethree);
+        $this->assertSame("", $producenduserpostcode);
+        $this->assertSame("", $producendusercity);
+        $this->assertSame("", $producendusercountry);
         $this->assertIsArray($producendusersubdivision);
         $this->assertEmpty($producendusersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserLegalOrganisation
-     */
     public function testDocumentProductEndUserLegalOrganization(): void
     {
         self::$document->getDocumentProductEndUserLegalOrganisation($producenduserlegalorgid, $producenduserlegalorgtype, $producenduserlegalorgname);
-        $this->assertEquals("", $producenduserlegalorgid);
-        $this->assertEquals("", $producenduserlegalorgtype);
-        $this->assertEquals("", $producenduserlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentProductEndUserContactContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentProductEndUserContactContact
-     */
+        $this->assertSame("", $producenduserlegalorgid);
+        $this->assertSame("", $producenduserlegalorgtype);
+        $this->assertSame("", $producenduserlegalorgname);
+    }
+
     public function testDocumentProductEndUserContact(): void
     {
@@ -941,37 +735,32 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerOrderReferencedDocument
-     */
     public function testDocumentSellerOrderReferencedDocument(): void
     {
         self::$document->getDocumentSellerOrderReferencedDocument($sellerorderrefdocid, $sellerorderrefdocdate);
-        $this->assertEquals("", $sellerorderrefdocid);
-        $this->assertNull($sellerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerOrderReferencedDocument
-     */
+        $this->assertSame("", $sellerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $sellerorderrefdocdate);
+    }
+
     public function testDocumentBuyerOrderReferencedDocument(): void
     {
         self::$document->getDocumentBuyerOrderReferencedDocument($buyerorderrefdocid, $buyerorderrefdocdate);
-        $this->assertEquals("", $buyerorderrefdocid);
-        $this->assertNull($buyerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentContractReferencedDocument
-     */
+        $this->assertSame("", $buyerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $buyerorderrefdocdate);
+    }
+
+    public function testDocumentQuotationReferencedDocument(): void
+    {
+        self::$document->getDocumentQuotationReferencedDocument($quotationrefdocid, $quotationrefdocdate);
+        $this->assertSame("", $quotationrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $quotationrefdocdate);
+    }
+
     public function testDocumentContractReferencedDocument(): void
     {
         self::$document->getDocumentContractReferencedDocument($contractrefdocid, $contractrefdocdate);
-        $this->assertEquals("", $contractrefdocid);
-        $this->assertNull($contractrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocuments
-     */
+        $this->assertSame("", $contractrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $contractrefdocdate);
+    }
+
     public function testDocumentAdditionalReferencedDocuments(): void
     {
@@ -987,73 +776,47 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProcuringProject
-     */
     public function testDocumentProcuringProject(): void
     {
         self::$document->getDocumentProcuringProject($projectid, $projectname);
-        $this->assertEquals("", $projectid);
-        $this->assertEquals("", $projectname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSupplyChainEvent
-     */
+        $this->assertSame("", $projectid);
+        $this->assertSame("", $projectname);
+    }
+
     public function testDocumentSupplyChainEvent(): void
     {
         self::$document->getDocumentSupplyChainEvent($supplychainevent);
-        $this->assertNotNull($supplychainevent);
+        $this->assertInstanceOf(\DateTime::class, $supplychainevent);
         $this->assertInstanceOf("DateTime", $supplychainevent);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20180930'))->format('Ymd'), $supplychainevent->format('Ymd'));
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDespatchAdviceReferencedDocument
-     */
     public function testDocumentDespatchAdviceReferencedDocument(): void
     {
         self::$document->getDocumentDespatchAdviceReferencedDocument($despatchdocid, $despatchdocdate);
-        $this->assertEquals("", $despatchdocid);
-        $this->assertNull($despatchdocdate);
-        $this->assertNotInstanceOf("DateTime", $despatchdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentReceivingAdviceReferencedDocument
-     */
+        $this->assertSame("", $despatchdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $despatchdocdate);
+    }
+
     public function testDocumentReceivingAdviceReferencedDocument(): void
     {
         self::$document->getDocumentReceivingAdviceReferencedDocument($recadvid, $recadvdate);
-        $this->assertEquals("", $recadvid);
-        $this->assertNull($recadvdate);
-        $this->assertNotInstanceOf("DateTime", $recadvdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryNoteReferencedDocument
-     */
+        $this->assertSame("", $recadvid);
+        $this->assertNotInstanceOf(\DateTime::class, $recadvdate);
+    }
+
     public function testDocumentDeliveryNoteReferencedDocument(): void
     {
         self::$document->getDocumentDeliveryNoteReferencedDocument($deliverynoterefdocid, $deliverynoterefdocdate);
-        $this->assertEquals("L87654321012", $deliverynoterefdocid);
-        $this->assertNull($deliverynoterefdocdate);
-        $this->assertNotInstanceOf("DateTime", $deliverynoterefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBillingPeriod
-     */
+        $this->assertSame("L87654321012", $deliverynoterefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $deliverynoterefdocdate);
+    }
+
     public function testDocumentBillingPeriod(): void
     {
         self::$document->getDocumentBillingPeriod($docbillingperiodstart, $docbillingperiodend);
-        $this->assertNull($docbillingperiodstart);
-        $this->assertNotInstanceOf("DateTime", $docbillingperiodstart);
-        $this->assertNull($docbillingperiodend);
-        $this->assertNotInstanceOf("DateTime", $docbillingperiodend);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharges
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $docbillingperiodstart);
+        $this->assertNotInstanceOf(\DateTime::class, $docbillingperiodend);
+    }
+
     public function testDocumentAllowanceCharges(): void
     {
@@ -1061,10 +824,7 @@
         $this->assertIsArray($docallowancecharge);
         $this->assertNotEmpty($docallowancecharge);
-        $this->assertEquals(1, count($docallowancecharge));
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerms
-     */
+        $this->assertCount(1, $docallowancecharge);
+    }
+
     public function testDocumentPaymentTerms(): void
     {
@@ -1082,20 +842,13 @@
         $this->assertNotInstanceOf("DateTime", $docpaymentterms[0]["duedate"]);
         $this->assertEquals("", $docpaymentterms[0]["directdebitmandateid"]);
-        $this->assertEquals(0.0, $docpaymentterms[0]["partialpaymentamount"]);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryTerms
-     */
+        $this->assertEqualsWithDelta(0.0, $docpaymentterms[0]["partialpaymentamount"], PHP_FLOAT_EPSILON);
+    }
+
     public function testDocumentDeliveryTerms(): void
     {
         self::$document->getDocumentDeliveryTerms($devtermcode);
-        $this->assertEquals("", $devtermcode);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument
-     */
+        $this->assertSame("", $devtermcode);
+    }
+
     public function testDocumentAdditionalReferencedDocumentLoop(): void
     {
@@ -1104,26 +857,18 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocument
-     */
     public function testGetDocumentAdditionalReferencedDocument(): void
     {
         $this->assertTrue(self::$document->firstDocumentAdditionalReferencedDocument());
         self::$document->getDocumentAdditionalReferencedDocument($issuerassignedid, $typecode, $uriid, $name, $reftypecode, $issueddate, $binarydatafilename);
-        $this->assertEquals("A777123", $issuerassignedid);
-        $this->assertEquals("130", $typecode);
-        $this->assertEquals("", $uriid);
+        $this->assertSame("A777123", $issuerassignedid);
+        $this->assertSame("130", $typecode);
+        $this->assertSame("", $uriid);
         $this->assertIsArray($name);
         $this->assertEmpty($name);
-        $this->assertEquals("", $reftypecode);
-        $this->assertNull($issueddate);
-        $this->assertEquals("", $binarydatafilename);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateCustomerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateCustomerOrderReferencedDocument
-     */
+        $this->assertSame("", $reftypecode);
+        $this->assertNotInstanceOf(\DateTime::class, $issueddate);
+        $this->assertSame("", $binarydatafilename);
+    }
+
     public function testDocumentUltimateCustomerOrderReferencedDocumentLoop(): void
     {
@@ -1132,8 +877,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextGetDocumentPaymentMeans
-     */
     public function testDocumentPaymentMeansLoop(): void
     {
@@ -1142,8 +883,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     */
     public function testDocumentTaxLoop(): void
     {
@@ -1152,25 +889,16 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentTax
-     */
     public function testDocumentTax(): void
     {
         $this->assertTrue(self::$document->firstDocumentTax());
         self::$document->getDocumentTax($categoryCode, $typeCode, $basisAmount, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, $lineTotalBasisAmount, $allowanceChargeBasisAmount, $taxPointDate, $dueDateTypeCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(403.55, $basisAmount);
-        $this->assertEquals(76.67, $calculatedAmount);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(-6.55, $allowanceChargeBasisAmount);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAllowanceCharge
-     */
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(403.55, $basisAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(76.67, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertSame(-6.55, $allowanceChargeBasisAmount);
+    }
+
     public function testtDocumentAllowanceChargeLoop(): void
     {
@@ -1180,30 +908,22 @@
 
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharge
-     */
     public function testtDocumentAllowanceCharge(): void
     {
         $this->assertTrue(self::$document->firstDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(21.55, $actualAmount);
+        $this->assertEqualsWithDelta(21.55, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(19.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(19.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
-        $this->assertEquals(410.10, $basisAmount);
+        $this->assertEqualsWithDelta(410.10, $basisAmount, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("Sonderrabatt", $reason);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentLogisticsServiceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentLogisticsServiceCharge
-     */
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("Sonderrabatt", $reason);
+    }
+
     public function testtDocumentLogisticsServiceChargeLoop(): void
     {
@@ -1212,32 +932,24 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentLogisticsServiceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentLogisticsServiceCharge
-     */
     public function testGetDocumentLogisticsServiceCharge(): void
     {
         $this->assertTrue(self::$document->firstDocumentLogisticsServiceCharge());
         self::$document->getDocumentLogisticsServiceCharge($description, $appliedAmount, $taxTypeCodes, $taxCategoryCodes, $rateApplicablePercents);
-        $this->assertEquals("Transportkosten: Frachbetrag", $description);
-        $this->assertEquals(15.00, $appliedAmount);
+        $this->assertSame("Transportkosten: Frachbetrag", $description);
+        $this->assertEqualsWithDelta(15.00, $appliedAmount, PHP_FLOAT_EPSILON);
         $this->assertIsArray($taxTypeCodes);
-        $this->assertEquals(1, count($taxTypeCodes));
+        $this->assertCount(1, $taxTypeCodes);
         $this->assertArrayHasKey(0, $taxTypeCodes);
         $this->assertEquals("VAT", $taxTypeCodes[0]);
         $this->assertIsArray($taxCategoryCodes);
-        $this->assertEquals(1, count($taxCategoryCodes));
+        $this->assertCount(1, $taxCategoryCodes);
         $this->assertArrayHasKey(0, $taxCategoryCodes);
         $this->assertEquals("S", $taxCategoryCodes[0]);
         $this->assertIsArray($rateApplicablePercents);
-        $this->assertEquals(1, count($rateApplicablePercents));
+        $this->assertCount(1, $rateApplicablePercents);
         $this->assertArrayHasKey(0, $rateApplicablePercents);
-        $this->assertEquals(19.0, $rateApplicablePercents[0]);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     */
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercents[0], PHP_FLOAT_EPSILON);
+    }
+
     public function testtDocumentPaymentTermsLoop(): void
     {
@@ -1246,10 +958,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDiscountTermsFromPaymentTerm
-     */
     public function testtDocumentPaymentTerms(): void
     {
@@ -1257,22 +963,30 @@
         self::$document->getDocumentPaymentTerm($termdescription, $termduedate, $termmandate);
         self::$document->getDiscountTermsFromPaymentTerm($dispercent, $discbasedatetime, $discmeasureval, $discmeasureunit, $discbaseamount, $discamount);
-
-        $this->assertEquals("Skontovereinbarung: 2% bei Zahlung innerhalb 10 Tagen nach Rechnungsdatum", $termdescription);
-        $this->assertNull($termduedate);
-        $this->assertEquals("", $termmandate);
-        $this->assertEquals(2.0, $dispercent);
-        $this->assertNull($discbasedatetime);
+        self::$document->getPenaltyTermsFromPaymentTerm($penaltypercent, $penaltybasedatetime, $penaltymeasureval, $penaltymeasureunit, $penaltybaseamount, $penaltyamount);
+
+        $this->assertSame("Skontovereinbarung: 2% bei Zahlung innerhalb 10 Tagen nach Rechnungsdatum", $termdescription);
+        $this->assertNotInstanceOf(\DateTime::class, $termduedate);
+        $this->assertSame("", $termmandate);
+        $this->assertEqualsWithDelta(2.0, $dispercent, PHP_FLOAT_EPSILON);
+        $this->assertNotInstanceOf(\DateTime::class, $discbasedatetime);
         $this->assertEquals(10, $discmeasureval);
-        $this->assertEquals("DAY", $discmeasureunit);
+        $this->assertSame("DAY", $discmeasureunit);
         $this->assertEquals(0, $discbaseamount);
         $this->assertEquals(0, $discamount);
+        $this->assertNotInstanceOf(\DateTime::class, $penaltybasedatetime);
+        $this->assertEquals(0, $penaltymeasureval);
+        $this->assertSame("", $penaltymeasureunit);
+        $this->assertEquals(0, $penaltybaseamount);
+        $this->assertEquals(0, $penaltyamount);
 
         $this->assertFalse(self::$document->nextDocumentPaymentTerms());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     */
+    public function testDocumentReceivableSpecifiedTradeAccountingAccount(): void
+    {
+        $this->assertFalse(self::$document->firstDocumentReceivableSpecifiedTradeAccountingAccount());
+        $this->assertFalse(self::$document->nextDocumentReceivableSpecifiedTradeAccountingAccount());
+    }
+
     public function testDocumentPositionLoop(): void
     {
@@ -1285,28 +999,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
     public function testDocumentPositionFirst(): void
     {
@@ -1314,70 +1004,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("1", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("1", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Wirkarbeit HT", $prodname);
-        $this->assertEquals("", $proddesc);
-        $this->assertEquals("WA997", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("4123456000014", $prodglobalid);
+        $this->assertSame("Wirkarbeit HT", $prodname);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("WA997", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("4123456000014", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0520, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0520, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(0.0520, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0520, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(10000.0, $billedquantity);
-        $this->assertEquals("KWH", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(10000.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("KWH", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1392,43 +1092,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(52.00, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(52.00, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionSecond(): void
     {
@@ -1436,70 +1111,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("2", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("2", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Ãkosteuer Lieferant", $prodname);
-        $this->assertEquals("", $proddesc);
-        $this->assertEquals("ÃST250", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("4123456000021", $prodglobalid);
+        $this->assertSame("Ãkosteuer Lieferant", $prodname);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("ÃST250", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("4123456000021", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0205, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0205, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(0.0205, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0205, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
         $this->assertEquals(10000, $billedquantity);
-        $this->assertEquals("KWH", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertSame("KWH", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1514,44 +1199,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(20.50, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(20.50, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionThird(): void
     {
@@ -1559,70 +1218,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("3", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("3", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Kommissionierer 1250032 D. Muster", $prodname);
-        $this->assertEquals("Besteller: Hr. Mayer, Personalnr. 4488", $proddesc);
-        $this->assertEquals("", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("4260331811362", $prodglobalid);
+        $this->assertSame("Kommissionierer 1250032 D. Muster", $prodname);
+        $this->assertSame("Besteller: Hr. Mayer, Personalnr. 4488", $proddesc);
+        $this->assertSame("", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("4260331811362", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(15.0000, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(15.0000, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(10.5000, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(10.5000, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(27.5000, $billedquantity);
-        $this->assertEquals("HUR", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(27.5000, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("HUR", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1647,16 +1316,16 @@
             $docPosAllowanceChargereasonCode
         );
-        $this->assertEquals(4.5000, $docPosAllowanceChargeactualAmount);
+        $this->assertEqualsWithDelta(4.5000, $docPosAllowanceChargeactualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($docPosAllowanceChargeisCharge);
         $this->assertEquals(0, $docPosAllowanceChargecalculationPercent);
         $this->assertEquals(0, $docPosAllowanceChargebasisAmount);
-        $this->assertEquals("Artikelrabatt 1", $docPosAllowanceChargereason);
-        $this->assertEquals("", $docPosAllowanceChargeTaxTypeCode);
-        $this->assertEquals("", $docPosAllowanceChargeTaxCategoryCode);
+        $this->assertSame("Artikelrabatt 1", $docPosAllowanceChargereason);
+        $this->assertSame("", $docPosAllowanceChargeTaxTypeCode);
+        $this->assertSame("", $docPosAllowanceChargeTaxCategoryCode);
         $this->assertEquals(0, $docPosAllowanceChargerateApplicablePercent);
         $this->assertEquals(0, $docPosAllowanceChargesequence);
         $this->assertEquals(0, $docPosAllowanceChargebasisQuantity);
-        $this->assertEquals("", $docPosAllowanceChargebasisQuantityUnitCode);
-        $this->assertEquals("", $docPosAllowanceChargereasonCode);
+        $this->assertSame("", $docPosAllowanceChargebasisQuantityUnitCode);
+        $this->assertSame("", $docPosAllowanceChargereasonCode);
 
         $this->assertTrue(self::$document->firstDocumentPositionTax());
@@ -1665,43 +1334,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(288.75, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(288.75, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionFourth(): void
     {
@@ -1709,70 +1353,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("4", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("4", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("FALTENBEUTEL 16x6x28 CM", $prodname);
-        $this->assertEquals("", $proddesc);
-        $this->assertEquals("FB05", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("2001015001325", $prodglobalid);
+        $this->assertSame("FALTENBEUTEL 16x6x28 CM", $prodname);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("FB05", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("2001015001325", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0105, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0105, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(0.0105, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0105, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(3500.0, $billedquantity);
-        $this->assertEquals("H87", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(3500.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("H87", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1787,43 +1441,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(36.75, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(36.75, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionFifth(): void
     {
@@ -1831,70 +1460,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("5", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("5", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Kopierpapier A4", $prodname);
-        $this->assertEquals("ZÃ€hlerstand von-bis: 543210 - 544420", $proddesc);
-        $this->assertEquals("KOP05", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("4123456000038", $prodglobalid);
+        $this->assertSame("Kopierpapier A4", $prodname);
+        $this->assertSame("ZÃ€hlerstand von-bis: 543210 - 544420", $proddesc);
+        $this->assertSame("KOP05", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("4123456000038", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0100, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0100, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(0.0100, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0100, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(1210.0, $billedquantity);
-        $this->assertEquals("H87", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(1210.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("H87", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1909,23 +1548,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(12.10, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(12.10, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAdditionalReferencedDocument
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionAdditionalReferencedDocument(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderMultipleAttachmentsTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderMultipleAttachmentsTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/PdfReaderMultipleAttachmentsTest.php	(revision 8504)
@@ -3,8 +3,8 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdDocumentPdfReader;
-use \horstoeko\zugferd\ZugferdDocumentReader;
-use \horstoeko\zugferd\ZugferdProfiles;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentPdfReader;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdProfiles;
 
 class PdfReaderMultipleAttachmentsTest extends TestCase
@@ -15,10 +15,7 @@
     protected static $document;
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentPdfReader::readAndGuessFromFile
-     */
     public function testCanReadPdf(): void
     {
-        self::$document = ZugferdDocumentPdfReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/zugferd_2p1_EN16931_Elektron.pdf");
+        self::$document = ZugferdDocumentPdfReader::readAndGuessFromFile(__DIR__ . "/../assets/pdf_zf_en16931_2.pdf");
         $this->assertNotNull(self::$document);
     }
@@ -33,20 +30,18 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInformation
-     */
     public function testDocumentGenerals(): void
     {
         self::$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-        $this->assertEquals('181301674', $documentno);
-        $this->assertEquals("204", $documenttypecode);
-        $this->assertNotNull($documentdate);
+        $this->assertSame('181301674', $documentno);
+        $this->assertSame("204", $documenttypecode);
+        $this->assertInstanceOf(\DateTime::class, $documentdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20180425'))->format('Ymd'), $documentdate->format('Ymd'));
-        $this->assertEquals("EUR", $invoiceCurrency);
-        $this->assertEquals("", $taxCurrency);
-        $this->assertEquals("", $documentname);
-        $this->assertEquals("", $documentlanguage);
-        $this->assertNull($effectiveSpecifiedPeriod);
-        $this->assertNotNull(self::$document->getInvoiceObject());
+        $this->assertSame("EUR", $invoiceCurrency);
+        $this->assertSame("", $taxCurrency);
+        $this->assertSame("", $documentname);
+        $this->assertSame("", $documentlanguage);
+        $this->assertNotInstanceOf(\DateTime::class, $effectiveSpecifiedPeriod);
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ProfileResolverTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ProfileResolverTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ProfileResolverTest.php	(revision 8504)
@@ -3,7 +3,10 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
+use Throwable;
+use SimpleXMLElement;
+use horstoeko\zugferd\tests\TestCase;
 use horstoeko\zugferd\ZugferdProfiles;
 use horstoeko\zugferd\ZugferdProfileResolver;
+use horstoeko\zugferd\exception\ZugferdUnknownProfileException;
 use horstoeko\zugferd\exception\ZugferdUnknownProfileIdException;
 
@@ -19,5 +22,11 @@
         return <<<HDR
 <?xml version="1.0" encoding="UTF-8"?>
-<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:10" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
+ xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
+ xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:10"
+ xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <rsm:ExchangedDocumentContext>
 <ram:GuidelineSpecifiedDocumentContextParameter>
@@ -38,5 +47,11 @@
         return <<<HDR
 <?xml version="1.0" encoding="UTF-8"?>
-<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:10" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
+ xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
+ xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:10"
+ xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <rsm:ExchangedDocumentContext>
 <ram:GuidelineSpecifiedDocumentContextParameter>
@@ -57,17 +72,104 @@
         return <<<HDR
 <?xml version="1.0" encoding="UTF-8"?>
-<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:10" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-</rsm:CrossIndustryInvoice>
-HDR;
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdProfileResolver::resolve
-     */
+<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
+ xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
+ xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:10"
+ xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+</rsm:CrossIndustryInvoice>
+HDR;
+    }
+
+    private function deliverOldZF20BasicProfile(): string
+    {
+        return <<<HDR
+<?xml version="1.0" encoding="UTF-8"?>
+<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
+ xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
+ xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:10"
+ xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<rsm:ExchangedDocumentContext>
+<ram:GuidelineSpecifiedDocumentContextParameter>
+<ram:ID>urn:cen.eu:en16931:2017#compliant#urn:zugferd.de:2p0:basic</ram:ID>
+</ram:GuidelineSpecifiedDocumentContextParameter>
+</rsm:ExchangedDocumentContext>
+</rsm:CrossIndustryInvoice>
+HDR;
+    }
+
+    private function deliverOldZF20BasicWlProfile(): string
+    {
+        return <<<HDR
+<?xml version="1.0" encoding="UTF-8"?>
+<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
+ xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
+ xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:10"
+ xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<rsm:ExchangedDocumentContext>
+<ram:GuidelineSpecifiedDocumentContextParameter>
+<ram:ID>urn:zugferd.de:2p0:basicwl</ram:ID>
+</ram:GuidelineSpecifiedDocumentContextParameter>
+</rsm:ExchangedDocumentContext>
+</rsm:CrossIndustryInvoice>
+HDR;
+    }
+
+    private function deliverOldZF20MinimumProfile(): string
+    {
+        return <<<HDR
+<?xml version="1.0" encoding="UTF-8"?>
+<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
+ xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
+ xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:10"
+ xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<rsm:ExchangedDocumentContext>
+<ram:GuidelineSpecifiedDocumentContextParameter>
+<ram:ID>urn:zugferd.de:2p0:minimum</ram:ID>
+</ram:GuidelineSpecifiedDocumentContextParameter>
+</rsm:ExchangedDocumentContext>
+</rsm:CrossIndustryInvoice>
+HDR;
+    }
+
+    private function deliverOldZF20ExtendedProfile(): string
+    {
+        return <<<HDR
+<?xml version="1.0" encoding="UTF-8"?>
+<rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"
+ xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100"
+ xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:10"
+ xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<rsm:ExchangedDocumentContext>
+<ram:GuidelineSpecifiedDocumentContextParameter>
+<ram:ID>urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended</ram:ID>
+</ram:GuidelineSpecifiedDocumentContextParameter>
+</rsm:ExchangedDocumentContext>
+</rsm:CrossIndustryInvoice>
+HDR;
+    }
+
+    private function deliverStringWhichIsNotXml(): string
+    {
+        return "This is not a XML";
+    }
+
     public function testResolveEn16931()
     {
         $resolved = ZugferdProfileResolver::resolve($this->deliverEn16931Header());
 
-        $this->assertIsArray($resolved);
         $this->assertArrayHasKey(0, $resolved);
         $this->assertArrayHasKey(1, $resolved);
@@ -81,8 +183,9 @@
         $this->assertArrayHasKey("attachmentfilename", $resolved[1]);
         $this->assertArrayHasKey("xmpname", $resolved[1]);
+        $this->assertArrayHasKey("xmpversion", $resolved[1]);
         $this->assertArrayHasKey("xsdfilename", $resolved[1]);
         $this->assertArrayHasKey("schematronfilename", $resolved[1]);
 
-        $this->assertEquals(ZugferdProfiles::PROFILE_EN16931, $resolved[0]);
+        $this->assertSame(ZugferdProfiles::PROFILE_EN16931, $resolved[0]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['name'], $resolved[1]["name"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['altname'], $resolved[1]["altname"]);
@@ -92,34 +195,28 @@
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['attachmentfilename'], $resolved[1]["attachmentfilename"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xmpname'], $resolved[1]["xmpname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xmpversion'], $resolved[1]["xmpversion"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xsdfilename'], $resolved[1]["xsdfilename"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['schematronfilename'], $resolved[1]["schematronfilename"]);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdProfileResolver::resolveProfileId
-     */
     public function testResolveProfileIdEn16931()
     {
         $resolved = ZugferdProfileResolver::resolveProfileId($this->deliverEn16931Header());
 
-        $this->assertIsInt($resolved);
-        $this->assertEquals(ZugferdProfiles::PROFILE_EN16931, $resolved);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdProfileResolver::resolveProfileDef
-     */
+        $this->assertSame(ZugferdProfiles::PROFILE_EN16931, $resolved);
+    }
+
     public function testResolveProfileDefEn16931()
     {
         $resolved = ZugferdProfileResolver::resolveProfileDef($this->deliverEn16931Header());
 
-        $this->assertIsArray($resolved);
-        $this->assertArrayHasKey("name", $resolved);
-        $this->assertArrayHasKey("altname", $resolved);
-        $this->assertArrayHasKey("description", $resolved);
-        $this->assertArrayHasKey("contextparameter", $resolved);
-        $this->assertArrayHasKey("businessprocess", $resolved);
-        $this->assertArrayHasKey("attachmentfilename", $resolved);
-        $this->assertArrayHasKey("xmpname", $resolved);
+        $this->assertArrayHasKey("name", $resolved);
+        $this->assertArrayHasKey("altname", $resolved);
+        $this->assertArrayHasKey("description", $resolved);
+        $this->assertArrayHasKey("contextparameter", $resolved);
+        $this->assertArrayHasKey("businessprocess", $resolved);
+        $this->assertArrayHasKey("attachmentfilename", $resolved);
+        $this->assertArrayHasKey("xmpname", $resolved);
+        $this->assertArrayHasKey("xmpversion", $resolved);
         $this->assertArrayHasKey("xsdfilename", $resolved);
         $this->assertArrayHasKey("schematronfilename", $resolved);
@@ -132,22 +229,125 @@
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['attachmentfilename'], $resolved["attachmentfilename"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xmpname'], $resolved["xmpname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xmpversion'], $resolved["xmpversion"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xsdfilename'], $resolved["xsdfilename"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['schematronfilename'], $resolved["schematronfilename"]);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdProfileResolver::resolve
-     */
+    public function testResolveProfileDefOldZF20Basic()
+    {
+        $resolved = ZugferdProfileResolver::resolveProfileDef($this->deliverOldZF20BasicProfile());
+
+        $this->assertArrayHasKey("name", $resolved);
+        $this->assertArrayHasKey("altname", $resolved);
+        $this->assertArrayHasKey("description", $resolved);
+        $this->assertArrayHasKey("contextparameter", $resolved);
+        $this->assertArrayHasKey("businessprocess", $resolved);
+        $this->assertArrayHasKey("attachmentfilename", $resolved);
+        $this->assertArrayHasKey("xmpname", $resolved);
+        $this->assertArrayHasKey("xmpversion", $resolved);
+        $this->assertArrayHasKey("xsdfilename", $resolved);
+        $this->assertArrayHasKey("schematronfilename", $resolved);
+
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASIC]['name'], $resolved["name"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASIC]['altname'], $resolved["altname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASIC]['description'], $resolved["description"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASIC]['contextparameter'], $resolved["contextparameter"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASIC]['businessprocess'], $resolved["businessprocess"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASIC]['attachmentfilename'], $resolved["attachmentfilename"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASIC]['xmpname'], $resolved["xmpname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASIC]['xmpversion'], $resolved["xmpversion"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASIC]['xsdfilename'], $resolved["xsdfilename"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASIC]['schematronfilename'], $resolved["schematronfilename"]);
+    }
+
+    public function testResolveProfileDefOldZF20BasicWl()
+    {
+        $resolved = ZugferdProfileResolver::resolveProfileDef($this->deliverOldZF20BasicWlProfile());
+
+        $this->assertArrayHasKey("name", $resolved);
+        $this->assertArrayHasKey("altname", $resolved);
+        $this->assertArrayHasKey("description", $resolved);
+        $this->assertArrayHasKey("contextparameter", $resolved);
+        $this->assertArrayHasKey("businessprocess", $resolved);
+        $this->assertArrayHasKey("attachmentfilename", $resolved);
+        $this->assertArrayHasKey("xmpname", $resolved);
+        $this->assertArrayHasKey("xmpversion", $resolved);
+        $this->assertArrayHasKey("xsdfilename", $resolved);
+        $this->assertArrayHasKey("schematronfilename", $resolved);
+
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASICWL]['name'], $resolved["name"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASICWL]['altname'], $resolved["altname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASICWL]['description'], $resolved["description"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASICWL]['contextparameter'], $resolved["contextparameter"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASICWL]['businessprocess'], $resolved["businessprocess"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASICWL]['attachmentfilename'], $resolved["attachmentfilename"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASICWL]['xmpname'], $resolved["xmpname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASICWL]['xmpversion'], $resolved["xmpversion"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASICWL]['xsdfilename'], $resolved["xsdfilename"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_BASICWL]['schematronfilename'], $resolved["schematronfilename"]);
+    }
+
+    public function testResolveProfileDefOldZF20Minimum()
+    {
+        $resolved = ZugferdProfileResolver::resolveProfileDef($this->deliverOldZF20MinimumProfile());
+
+        $this->assertArrayHasKey("name", $resolved);
+        $this->assertArrayHasKey("altname", $resolved);
+        $this->assertArrayHasKey("description", $resolved);
+        $this->assertArrayHasKey("contextparameter", $resolved);
+        $this->assertArrayHasKey("businessprocess", $resolved);
+        $this->assertArrayHasKey("attachmentfilename", $resolved);
+        $this->assertArrayHasKey("xmpname", $resolved);
+        $this->assertArrayHasKey("xmpversion", $resolved);
+        $this->assertArrayHasKey("xsdfilename", $resolved);
+        $this->assertArrayHasKey("schematronfilename", $resolved);
+
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_MINIMUM]['name'], $resolved["name"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_MINIMUM]['altname'], $resolved["altname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_MINIMUM]['description'], $resolved["description"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_MINIMUM]['contextparameter'], $resolved["contextparameter"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_MINIMUM]['businessprocess'], $resolved["businessprocess"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_MINIMUM]['attachmentfilename'], $resolved["attachmentfilename"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_MINIMUM]['xmpname'], $resolved["xmpname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_MINIMUM]['xmpversion'], $resolved["xmpversion"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_MINIMUM]['xsdfilename'], $resolved["xsdfilename"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_MINIMUM]['schematronfilename'], $resolved["schematronfilename"]);
+    }
+
+    public function testResolveProfileDefOldZF20Extended()
+    {
+        $resolved = ZugferdProfileResolver::resolveProfileDef($this->deliverOldZF20ExtendedProfile());
+
+        $this->assertArrayHasKey("name", $resolved);
+        $this->assertArrayHasKey("altname", $resolved);
+        $this->assertArrayHasKey("description", $resolved);
+        $this->assertArrayHasKey("contextparameter", $resolved);
+        $this->assertArrayHasKey("businessprocess", $resolved);
+        $this->assertArrayHasKey("attachmentfilename", $resolved);
+        $this->assertArrayHasKey("xmpname", $resolved);
+        $this->assertArrayHasKey("xmpversion", $resolved);
+        $this->assertArrayHasKey("xsdfilename", $resolved);
+        $this->assertArrayHasKey("schematronfilename", $resolved);
+
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EXTENDED]['name'], $resolved["name"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EXTENDED]['altname'], $resolved["altname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EXTENDED]['description'], $resolved["description"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EXTENDED]['contextparameter'], $resolved["contextparameter"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EXTENDED]['businessprocess'], $resolved["businessprocess"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EXTENDED]['attachmentfilename'], $resolved["attachmentfilename"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EXTENDED]['xmpname'], $resolved["xmpname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EXTENDED]['xmpversion'], $resolved["xmpversion"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EXTENDED]['xsdfilename'], $resolved["xsdfilename"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EXTENDED]['schematronfilename'], $resolved["schematronfilename"]);
+    }
+
     public function testResolveUnknownProfile()
     {
-        $this->expectException(\Exception::class);
-        $this->expectExceptionMessage('A context parameter was found, but the content of "unknown" is not a valid profile');
+        $this->expectException(ZugferdUnknownProfileException::class);
+        $this->expectExceptionMessage('Cannot determain the profile by unknown');
 
         ZugferdProfileResolver::resolveProfileId($this->deliverUnknownProfile());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdProfileResolver::resolve
-     */
     public function testResolveInvalidXml()
     {
@@ -158,12 +358,8 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdProfileResolver::resolveById
-     */
     public function testResolveProfileByIdEn16931()
     {
         $resolved = ZugferdProfileResolver::resolveById(ZugferdProfiles::PROFILE_EN16931);
 
-        $this->assertIsArray($resolved);
         $this->assertArrayHasKey(0, $resolved);
         $this->assertArrayHasKey(1, $resolved);
@@ -177,8 +373,9 @@
         $this->assertArrayHasKey("attachmentfilename", $resolved[1]);
         $this->assertArrayHasKey("xmpname", $resolved[1]);
+        $this->assertArrayHasKey("xmpversion", $resolved[1]);
         $this->assertArrayHasKey("xsdfilename", $resolved[1]);
         $this->assertArrayHasKey("schematronfilename", $resolved[1]);
 
-        $this->assertEquals(ZugferdProfiles::PROFILE_EN16931, $resolved[0]);
+        $this->assertSame(ZugferdProfiles::PROFILE_EN16931, $resolved[0]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['name'], $resolved[1]["name"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['altname'], $resolved[1]["altname"]);
@@ -188,23 +385,21 @@
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['attachmentfilename'], $resolved[1]["attachmentfilename"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xmpname'], $resolved[1]["xmpname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xmpversion'], $resolved[1]["xmpversion"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xsdfilename'], $resolved[1]["xsdfilename"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['schematronfilename'], $resolved[1]["schematronfilename"]);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdProfileResolver::resolveProfileDefById
-     */
     public function testResolveProfileDefByIdEn16931()
     {
         $resolved = ZugferdProfileResolver::resolveProfileDefById(ZugferdProfiles::PROFILE_EN16931);
 
-        $this->assertIsArray($resolved);
-        $this->assertArrayHasKey("name", $resolved);
-        $this->assertArrayHasKey("altname", $resolved);
-        $this->assertArrayHasKey("description", $resolved);
-        $this->assertArrayHasKey("contextparameter", $resolved);
-        $this->assertArrayHasKey("businessprocess", $resolved);
-        $this->assertArrayHasKey("attachmentfilename", $resolved);
-        $this->assertArrayHasKey("xmpname", $resolved);
+        $this->assertArrayHasKey("name", $resolved);
+        $this->assertArrayHasKey("altname", $resolved);
+        $this->assertArrayHasKey("description", $resolved);
+        $this->assertArrayHasKey("contextparameter", $resolved);
+        $this->assertArrayHasKey("businessprocess", $resolved);
+        $this->assertArrayHasKey("attachmentfilename", $resolved);
+        $this->assertArrayHasKey("xmpname", $resolved);
+        $this->assertArrayHasKey("xmpversion", $resolved);
         $this->assertArrayHasKey("xsdfilename", $resolved);
         $this->assertArrayHasKey("schematronfilename", $resolved);
@@ -217,11 +412,9 @@
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['attachmentfilename'], $resolved["attachmentfilename"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xmpname'], $resolved["xmpname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xmpversion'], $resolved["xmpversion"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xsdfilename'], $resolved["xsdfilename"]);
         $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['schematronfilename'], $resolved["schematronfilename"]);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdProfileResolver::resolveProfileDefById
-     */
     public function testResolveProfileDefByIdUnknown()
     {
@@ -231,3 +424,43 @@
         ZugferdProfileResolver::resolveProfileDefById(-1);
     }
+
+    public function testResolveNotXml()
+    {
+        // Test clear LibXml Errors, when error previously occourred (See issue #133)
+
+        $prevUseInternalErrors = \libxml_use_internal_errors(true);
+
+        try {
+            libxml_clear_errors();
+            $xmldocument = new SimpleXMLElement($this->deliverStringWhichIsNotXml());
+        } catch (Throwable $throwable) {
+            // Do nothing
+        } finally {
+            libxml_use_internal_errors($prevUseInternalErrors);
+        }
+
+        $resolved = ZugferdProfileResolver::resolveProfileDef($this->deliverEn16931Header());
+
+        $this->assertArrayHasKey("name", $resolved);
+        $this->assertArrayHasKey("altname", $resolved);
+        $this->assertArrayHasKey("description", $resolved);
+        $this->assertArrayHasKey("contextparameter", $resolved);
+        $this->assertArrayHasKey("businessprocess", $resolved);
+        $this->assertArrayHasKey("attachmentfilename", $resolved);
+        $this->assertArrayHasKey("xmpname", $resolved);
+        $this->assertArrayHasKey("xmpversion", $resolved);
+        $this->assertArrayHasKey("xsdfilename", $resolved);
+        $this->assertArrayHasKey("schematronfilename", $resolved);
+
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['name'], $resolved["name"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['altname'], $resolved["altname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['description'], $resolved["description"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['contextparameter'], $resolved["contextparameter"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['businessprocess'], $resolved["businessprocess"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['attachmentfilename'], $resolved["attachmentfilename"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xmpname'], $resolved["xmpname"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xmpversion'], $resolved["xmpversion"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['xsdfilename'], $resolved["xsdfilename"]);
+        $this->assertEquals(ZugferdProfiles::PROFILEDEF[ZugferdProfiles::PROFILE_EN16931]['schematronfilename'], $resolved["schematronfilename"]);
+    }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderEn16931AllowanceChargeTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderEn16931AllowanceChargeTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderEn16931AllowanceChargeTest.php	(revision 8504)
@@ -3,8 +3,8 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentReader;
-use \horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdProfiles;
 
 class ReaderEn16931AllowanceChargeTest extends TestCase
@@ -17,5 +17,5 @@
     public static function setUpBeforeClass(): void
     {
-        self::$document = ZugferdDocumentReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/en16931_allowancecharge.xml");
+        self::$document = ZugferdDocumentReader::readAndGuessFromFile(__DIR__ . "/../assets/xml_en16931_2.xml");
     }
 
@@ -28,15 +28,12 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getInvoiceObject
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getSerializer
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getObjectHelper
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getProfileDefinitionParameter
-     */
     public function testDocumentGetters(): void
     {
-        $this->assertNotNull(self::$document->getInvoiceObject());
-        $this->assertNotNull(self::$document->getSerializer());
-        $this->assertNotNull(self::$document->getObjectHelper());
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertInstanceOf(\JMS\Serializer\Serializer::class, $this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
+        $this->assertInstanceOf('horstoeko\zugferd\ZugferdObjectHelper', $this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
         $this->assertEquals('en16931', self::$document->getProfileDefinitionParameter('name'));
         $this->assertEquals('EN 16931 (COMFORT)', self::$document->getProfileDefinitionParameter('altname'));
@@ -44,4 +41,5 @@
         $this->assertEquals('factur-x.xml', self::$document->getProfileDefinitionParameter('attachmentfilename'));
         $this->assertEquals('EN 16931', self::$document->getProfileDefinitionParameter('xmpname'));
+        $this->assertEquals('1.0', self::$document->getProfileDefinitionParameter('xmpversion'));
         $this->expectNoticeOrWarningExt(
             function () {
@@ -51,24 +49,18 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInformation
-     */
     public function testDocumentGenerals(): void
     {
         self::$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-        $this->assertEquals('471102', $documentno);
-        $this->assertEquals(ZugferdInvoiceType::INVOICE, $documenttypecode);
-        $this->assertNotNull($documentdate);
+        $this->assertSame('471102', $documentno);
+        $this->assertSame(ZugferdInvoiceType::INVOICE, $documenttypecode);
+        $this->assertInstanceOf(\DateTime::class, $documentdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20180605'))->format('Ymd'), $documentdate->format('Ymd'));
-        $this->assertEquals("EUR", $invoiceCurrency);
-        $this->assertEquals("", $taxCurrency);
-        $this->assertEquals("", $documentname);
-        $this->assertEquals("", $documentlanguage);
-        $this->assertNull($effectiveSpecifiedPeriod);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentNotes
-     */
+        $this->assertSame("EUR", $invoiceCurrency);
+        $this->assertSame("", $taxCurrency);
+        $this->assertSame("", $documentname);
+        $this->assertSame("", $documentlanguage);
+        $this->assertNotInstanceOf(\DateTime::class, $effectiveSpecifiedPeriod);
+    }
+
     public function testDocumentNotes(): void
     {
@@ -76,5 +68,5 @@
         $this->assertIsArray($notes);
         $this->assertNotEmpty($notes);
-        $this->assertEquals(3, count($notes));
+        $this->assertCount(3, $notes);
         $this->assertArrayHasKey(0, $notes);
         $this->assertArrayHasKey(1, $notes);
@@ -111,17 +103,11 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentGeneralPaymentInformation
-     */
     public function testDocumentGeneralPaymentInformation(): void
     {
         self::$document->getDocumentGeneralPaymentInformation($creditorReferenceID, $paymentReference);
-        $this->assertEquals("", $creditorReferenceID);
-        $this->assertEquals("", $paymentReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsDocumentCopy
-     */
+        $this->assertSame("", $creditorReferenceID);
+        $this->assertSame("", $paymentReference);
+    }
+
     public function testDocumentIsCopy(): void
     {
@@ -130,7 +116,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsTestDocument
-     */
     public function testDocumentIsTestDocument(): void
     {
@@ -139,46 +122,34 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSummation
-     */
     public function testDocumentSummation(): void
     {
         self::$document->getDocumentSummation($grandTotalAmount, $duePayableAmount, $lineTotalAmount, $chargeTotalAmount, $allowanceTotalAmount, $taxBasisTotalAmount, $taxTotalAmount, $roundingAmount, $totalPrepaidAmount);
-        $this->assertEquals(215.07, $grandTotalAmount);
-        $this->assertEquals(165.07, $duePayableAmount);
-        $this->assertEquals(202.70, $lineTotalAmount);
-        $this->assertEquals(5.80, $chargeTotalAmount);
-        $this->assertEquals(14.73, $allowanceTotalAmount);
-        $this->assertEquals(193.77, $taxBasisTotalAmount);
-        $this->assertEquals(21.30, $taxTotalAmount);
-        $this->assertEquals(0.00, $roundingAmount);
-        $this->assertEquals(50.00, $totalPrepaidAmount);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerReference
-     */
+        $this->assertEqualsWithDelta(215.07, $grandTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(165.07, $duePayableAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(202.70, $lineTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(5.80, $chargeTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(14.73, $allowanceTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(193.77, $taxBasisTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(21.30, $taxTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.00, $roundingAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(50.00, $totalPrepaidAmount, PHP_FLOAT_EPSILON);
+    }
+
     public function testGetDocumentBuyerReference(): void
     {
         self::$document->getDocumentBuyerReference($buyerReference);
-        $this->assertEquals("08154713", $buyerReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSeller
-     */
+        $this->assertSame("08154713", $buyerReference);
+    }
+
     public function testDocumentSellerGeneral(): void
     {
         self::$document->getDocumentSeller($sellername, $sellerids, $sellerdescription);
-        $this->assertEquals("Lieferant GmbH", $sellername);
+        $this->assertSame("Lieferant GmbH", $sellername);
         $this->assertIsArray($sellerids);
         $this->assertArrayNotHasKey(0, $sellerids);
         $this->assertArrayNotHasKey(1, $sellerids);
-        $this->assertEquals("", $sellerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerGlobalId
-     */
+        $this->assertSame("", $sellerdescription);
+    }
+
     public function testDocumentSellerGlobalId(): void
     {
@@ -189,7 +160,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRegistration
-     */
     public function testDocumentSellerTaxRegistration(): void
     {
@@ -205,36 +173,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerAddress
-     */
     public function testDocumentSellerAddress(): void
     {
         self::$document->getDocumentSellerAddress($sellerlineone, $sellerlinetwo, $sellerlinethree, $sellerpostcode, $sellercity, $sellercountry, $sellersubdivision);
-        $this->assertEquals("LieferantenstraÃe 20", $sellerlineone);
-        $this->assertEquals("", $sellerlinetwo);
-        $this->assertEquals("", $sellerlinethree);
-        $this->assertEquals("80333", $sellerpostcode);
-        $this->assertEquals("MÃŒnchen", $sellercity);
-        $this->assertEquals("DE", $sellercountry);
+        $this->assertSame("LieferantenstraÃe 20", $sellerlineone);
+        $this->assertSame("", $sellerlinetwo);
+        $this->assertSame("", $sellerlinethree);
+        $this->assertSame("80333", $sellerpostcode);
+        $this->assertSame("MÃŒnchen", $sellercity);
+        $this->assertSame("DE", $sellercountry);
         $this->assertIsArray($sellersubdivision);
         $this->assertEmpty($sellersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerLegalOrganisation
-     */
     public function testDocumentSellerLegalOrganization(): void
     {
         self::$document->getDocumentSellerLegalOrganisation($sellerlegalorgid, $sellerlegalorgtype, $sellerlegalorgname);
-        $this->assertEquals("", $sellerlegalorgid);
-        $this->assertEquals("", $sellerlegalorgtype);
-        $this->assertEquals("", $sellerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerContact
-     */
+        $this->assertSame("", $sellerlegalorgid);
+        $this->assertSame("", $sellerlegalorgtype);
+        $this->assertSame("", $sellerlegalorgname);
+    }
+
     public function testDocumentSellerContact(): void
     {
@@ -248,21 +205,22 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyer
-     */
+    public function testGetDocumentSellerCommunication(): void
+    {
+        self::$document->getDocumentSellerCommunication($uriScheme, $uri);
+        $this->assertSame("", $uriScheme);
+        $this->assertSame("", $uri);
+    }
+
     public function testDocumentBuyerGeneral(): void
     {
         self::$document->getDocumentBuyer($buyername, $buyerids, $buyerdescription);
-        $this->assertEquals("Kunden AG Mitte", $buyername);
+        $this->assertSame("Kunden AG Mitte", $buyername);
         $this->assertIsArray($buyerids);
         $this->assertArrayHasKey(0, $buyerids);
         $this->assertArrayNotHasKey(1, $buyerids);
         $this->assertEquals("GE2020211", $buyerids[0]);
-        $this->assertEquals("", $buyerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerGlobalId
-     */
+        $this->assertSame("", $buyerdescription);
+    }
+
     public function testDocumentBuyerGlobalId(): void
     {
@@ -272,7 +230,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerTaxRegistration
-     */
     public function testDocumentBuyerTaxRegistration(): void
     {
@@ -282,36 +237,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerAddress
-     */
     public function testDocumentBuyerAddress(): void
     {
         self::$document->getDocumentBuyerAddress($buyerlineone, $buyerlinetwo, $buyerlinethree, $buyerpostcode, $buyercity, $buyercountry, $buyersubdivision);
-        $this->assertEquals("KundenstraÃe 15", $buyerlineone);
-        $this->assertEquals("", $buyerlinetwo);
-        $this->assertEquals("", $buyerlinethree);
-        $this->assertEquals("69876", $buyerpostcode);
-        $this->assertEquals("Frankfurt", $buyercity);
-        $this->assertEquals("DE", $buyercountry);
+        $this->assertSame("KundenstraÃe 15", $buyerlineone);
+        $this->assertSame("", $buyerlinetwo);
+        $this->assertSame("", $buyerlinethree);
+        $this->assertSame("69876", $buyerpostcode);
+        $this->assertSame("Frankfurt", $buyercity);
+        $this->assertSame("DE", $buyercountry);
         $this->assertIsArray($buyersubdivision);
         $this->assertEmpty($buyersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerLegalOrganisation
-     */
     public function testDocumentBuyerLegalOrganization(): void
     {
         self::$document->getDocumentBuyerLegalOrganisation($buyerlegalorgid, $buyerlegalorgtype, $buyerlegalorgname);
-        $this->assertEquals("", $buyerlegalorgid);
-        $this->assertEquals("", $buyerlegalorgtype);
-        $this->assertEquals("", $buyerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentBuyerContact
-     */
+        $this->assertSame("", $buyerlegalorgid);
+        $this->assertSame("", $buyerlegalorgtype);
+        $this->assertSame("", $buyerlegalorgname);
+    }
+
     public function testDocumentBuyerContact(): void
     {
@@ -325,19 +269,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentative
-     */
+    public function testGetDocumentBuyerCommunication(): void
+    {
+        self::$document->getDocumentBuyerCommunication($uriScheme, $uri);
+        $this->assertSame("", $uriScheme);
+        $this->assertSame("", $uri);
+    }
+
     public function testDocumentSellerTaxRepresentativeGeneral(): void
     {
         self::$document->getDocumentSellerTaxRepresentative($sellertaxreprname, $sellertaxreprids, $sellertaxreprdescription);
-        $this->assertEquals("", $sellertaxreprname);
+        $this->assertSame("", $sellertaxreprname);
         $this->assertIsArray($sellertaxreprids);
         $this->assertEmpty($sellertaxreprids);
-        $this->assertEquals("", $sellertaxreprdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeGlobalId
-     */
+        $this->assertSame("", $sellertaxreprdescription);
+    }
+
     public function testDocumentSellerTaxRepresentativeGlobalId(): void
     {
@@ -347,7 +292,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeTaxRegistration
-     */
     public function testDocumentSellerTaxRepresentativeTaxRegistration(): void
     {
@@ -357,36 +299,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeAddress
-     */
     public function testDocumentSellerTaxRepresentativeAddress(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeAddress($sellertaxreprlineone, $sellertaxreprlinetwo, $sellertaxreprlinethree, $sellertaxreprpostcode, $sellertaxreprcity, $sellertaxreprcountry, $sellertaxreprsubdivision);
-        $this->assertEquals("", $sellertaxreprlineone);
-        $this->assertEquals("", $sellertaxreprlinetwo);
-        $this->assertEquals("", $sellertaxreprlinethree);
-        $this->assertEquals("", $sellertaxreprpostcode);
-        $this->assertEquals("", $sellertaxreprcity);
-        $this->assertEquals("", $sellertaxreprcountry);
+        $this->assertSame("", $sellertaxreprlineone);
+        $this->assertSame("", $sellertaxreprlinetwo);
+        $this->assertSame("", $sellertaxreprlinethree);
+        $this->assertSame("", $sellertaxreprpostcode);
+        $this->assertSame("", $sellertaxreprcity);
+        $this->assertSame("", $sellertaxreprcountry);
         $this->assertIsArray($sellertaxreprsubdivision);
         $this->assertEmpty($sellertaxreprsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeLegalOrganisation
-     */
     public function testDocumentSellerTaxRepresentativeLegalOrganization(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeLegalOrganisation($sellertaxreprlegalorgid, $sellertaxreprlegalorgtype, $sellertaxreprlegalorgname);
-        $this->assertEquals("", $sellertaxreprlegalorgid);
-        $this->assertEquals("", $sellertaxreprlegalorgtype);
-        $this->assertEquals("", $sellertaxreprlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerTaxRepresentativeContact
-     */
+        $this->assertSame("", $sellertaxreprlegalorgid);
+        $this->assertSame("", $sellertaxreprlegalorgtype);
+        $this->assertSame("", $sellertaxreprlegalorgname);
+    }
+
     public function testDocumentSellerTaxRepresentativeContact(): void
     {
@@ -400,19 +331,15 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipTo
-     */
     public function testDocumentShipToGeneral(): void
     {
         self::$document->getDocumentShipTo($shiptoname, $shiptoids, $shiptodescription);
-        $this->assertEquals("", $shiptoname);
+        $this->assertNotNull($shiptoname);
+        $this->assertSame("", $shiptoname);
         $this->assertIsArray($shiptoids);
         $this->assertEmpty($shiptoids);
-        $this->assertEquals("", $shiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToGlobalId
-     */
+        $this->assertNotNull($shiptodescription);
+        $this->assertSame("", $shiptodescription);
+    }
+
     public function testDocumentShipToGlobalId(): void
     {
@@ -422,7 +349,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToTaxRegistration
-     */
     public function testDocumentShipToTaxRegistration(): void
     {
@@ -432,36 +356,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToAddress
-     */
     public function testDocumentShipToAddress(): void
     {
         self::$document->getDocumentShipToAddress($shiptolineone, $shiptolinetwo, $shiptolinethree, $shiptopostcode, $shiptocity, $shiptocountry, $shiptosubdivision);
-        $this->assertEquals("", $shiptolineone);
-        $this->assertEquals("", $shiptolinetwo);
-        $this->assertEquals("", $shiptolinethree);
-        $this->assertEquals("", $shiptopostcode);
-        $this->assertEquals("", $shiptocity);
-        $this->assertEquals("", $shiptocountry);
+        $this->assertSame("", $shiptolineone);
+        $this->assertSame("", $shiptolinetwo);
+        $this->assertSame("", $shiptolinethree);
+        $this->assertSame("", $shiptopostcode);
+        $this->assertSame("", $shiptocity);
+        $this->assertSame("", $shiptocountry);
         $this->assertIsArray($shiptosubdivision);
         $this->assertEmpty($shiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToLegalOrganisation
-     */
     public function testDocumentShipToLegalOrganization(): void
     {
         self::$document->getDocumentShipToLegalOrganisation($shiptolegalorgid, $shiptolegalorgtype, $shiptolegalorgname);
-        $this->assertEquals("", $shiptolegalorgid);
-        $this->assertEquals("", $shiptolegalorgtype);
-        $this->assertEquals("", $shiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipToContact
-     */
+        $this->assertSame("", $shiptolegalorgid);
+        $this->assertSame("", $shiptolegalorgtype);
+        $this->assertSame("", $shiptolegalorgname);
+    }
+
     public function testDocumentShipToContact(): void
     {
@@ -475,19 +388,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipTo
-     */
     public function testDocumentUltimateShipToGeneral(): void
     {
         self::$document->getDocumentUltimateShipTo($ultimateshiptoname, $ultimateshiptoids, $ultimateshiptodescription);
-        $this->assertEquals("", $ultimateshiptoname);
+        $this->assertSame("", $ultimateshiptoname);
         $this->assertIsArray($ultimateshiptoids);
         $this->assertEmpty($ultimateshiptoids);
-        $this->assertEquals("", $ultimateshiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToGlobalId
-     */
+        $this->assertSame("", $ultimateshiptodescription);
+    }
+
     public function testDocumentUltimateShipToGlobalId(): void
     {
@@ -497,7 +404,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToTaxRegistration
-     */
     public function testDocumentUltimateShipToTaxRegistration(): void
     {
@@ -507,36 +411,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToAddress
-     */
     public function testDocumentUltimateShipToAddress(): void
     {
         self::$document->getDocumentUltimateShipToAddress($ultimateshiptolineone, $ultimateshiptolinetwo, $ultimateshiptolinethree, $ultimateshiptopostcode, $ultimateshiptocity, $ultimateshiptocountry, $ultimateshiptosubdivision);
-        $this->assertEquals("", $ultimateshiptolineone);
-        $this->assertEquals("", $ultimateshiptolinetwo);
-        $this->assertEquals("", $ultimateshiptolinethree);
-        $this->assertEquals("", $ultimateshiptopostcode);
-        $this->assertEquals("", $ultimateshiptocity);
-        $this->assertEquals("", $ultimateshiptocountry);
+        $this->assertSame("", $ultimateshiptolineone);
+        $this->assertSame("", $ultimateshiptolinetwo);
+        $this->assertSame("", $ultimateshiptolinethree);
+        $this->assertSame("", $ultimateshiptopostcode);
+        $this->assertSame("", $ultimateshiptocity);
+        $this->assertSame("", $ultimateshiptocountry);
         $this->assertIsArray($ultimateshiptosubdivision);
         $this->assertEmpty($ultimateshiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToLegalOrganisation
-     */
     public function testDocumentUltimateShipToLegalOrganization(): void
     {
         self::$document->getDocumentUltimateShipToLegalOrganisation($ultimateshiptolegalorgid, $ultimateshiptolegalorgtype, $ultimateshiptolegalorgname);
-        $this->assertEquals("", $ultimateshiptolegalorgid);
-        $this->assertEquals("", $ultimateshiptolegalorgtype);
-        $this->assertEquals("", $ultimateshiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateShipToContact
-     */
+        $this->assertSame("", $ultimateshiptolegalorgid);
+        $this->assertSame("", $ultimateshiptolegalorgtype);
+        $this->assertSame("", $ultimateshiptolegalorgname);
+    }
+
     public function testDocumentUltimateShipToContact(): void
     {
@@ -555,19 +448,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFrom
-     */
     public function testDocumentShipFromGeneral(): void
     {
         self::$document->getDocumentShipFrom($shipfromname, $shipfromids, $shipfromdescription);
-        $this->assertEquals("", $shipfromname);
+        $this->assertSame("", $shipfromname);
         $this->assertIsArray($shipfromids);
         $this->assertEmpty($shipfromids);
-        $this->assertEquals("", $shipfromdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromGlobalId
-     */
+        $this->assertSame("", $shipfromdescription);
+    }
+
     public function testDocumentShipFromGlobalId(): void
     {
@@ -577,7 +464,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromTaxRegistration
-     */
     public function testDocumentShipFromTaxRegistration(): void
     {
@@ -587,36 +471,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromAddress
-     */
     public function testDocumentShipFromAddress(): void
     {
         self::$document->getDocumentShipFromAddress($shipfromlineone, $shipfromlinetwo, $shipfromlinethree, $shipfrompostcode, $shipfromcity, $shipfromcountry, $shipfromsubdivision);
-        $this->assertEquals("", $shipfromlineone);
-        $this->assertEquals("", $shipfromlinetwo);
-        $this->assertEquals("", $shipfromlinethree);
-        $this->assertEquals("", $shipfrompostcode);
-        $this->assertEquals("", $shipfromcity);
-        $this->assertEquals("", $shipfromcountry);
+        $this->assertSame("", $shipfromlineone);
+        $this->assertSame("", $shipfromlinetwo);
+        $this->assertSame("", $shipfromlinethree);
+        $this->assertSame("", $shipfrompostcode);
+        $this->assertSame("", $shipfromcity);
+        $this->assertSame("", $shipfromcountry);
         $this->assertIsArray($shipfromsubdivision);
         $this->assertEmpty($shipfromsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromLegalOrganisation
-     */
     public function testDocumentShipFromLegalOrganization(): void
     {
         self::$document->getDocumentShipFromLegalOrganisation($shipfromlegalorgid, $shipfromlegalorgtype, $shipfromlegalorgname);
-        $this->assertEquals("", $shipfromlegalorgid);
-        $this->assertEquals("", $shipfromlegalorgtype);
-        $this->assertEquals("", $shipfromlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipFromContact
-     */
+        $this->assertSame("", $shipfromlegalorgid);
+        $this->assertSame("", $shipfromlegalorgtype);
+        $this->assertSame("", $shipfromlegalorgname);
+    }
+
     public function testDocumentShipFromContact(): void
     {
@@ -635,19 +508,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicer
-     */
     public function testDocumentInvoicerGeneral(): void
     {
         self::$document->getDocumentInvoicer($invoicername, $invoicerids, $invoicerdescription);
-        $this->assertEquals("", $invoicername);
+        $this->assertSame("", $invoicername);
         $this->assertIsArray($invoicerids);
         $this->assertEmpty($invoicerids);
-        $this->assertEquals("", $invoicerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerGlobalId
-     */
+        $this->assertSame("", $invoicerdescription);
+    }
+
     public function testDocumentInvoicerGlobalId(): void
     {
@@ -657,7 +524,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerTaxRegistration
-     */
     public function testDocumentInvoicerTaxRegistration(): void
     {
@@ -667,36 +531,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerAddress
-     */
     public function testDocumentInvoicerAddress(): void
     {
         self::$document->getDocumentInvoicerAddress($invoicerlineone, $invoicerlinetwo, $invoicerlinethree, $invoicerpostcode, $invoicercity, $invoicercountry, $invoicersubdivision);
-        $this->assertEquals("", $invoicerlineone);
-        $this->assertEquals("", $invoicerlinetwo);
-        $this->assertEquals("", $invoicerlinethree);
-        $this->assertEquals("", $invoicerpostcode);
-        $this->assertEquals("", $invoicercity);
-        $this->assertEquals("", $invoicercountry);
+        $this->assertSame("", $invoicerlineone);
+        $this->assertSame("", $invoicerlinetwo);
+        $this->assertSame("", $invoicerlinethree);
+        $this->assertSame("", $invoicerpostcode);
+        $this->assertSame("", $invoicercity);
+        $this->assertSame("", $invoicercountry);
         $this->assertIsArray($invoicersubdivision);
         $this->assertEmpty($invoicersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerLegalOrganisation
-     */
     public function testDocumentInvoicerLegalOrganization(): void
     {
         self::$document->getDocumentInvoicerLegalOrganisation($invoicerlegalorgid, $invoicerlegalorgtype, $invoicerlegalorgname);
-        $this->assertEquals("", $invoicerlegalorgid);
-        $this->assertEquals("", $invoicerlegalorgtype);
-        $this->assertEquals("", $invoicerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoicerContact
-     */
+        $this->assertSame("", $invoicerlegalorgid);
+        $this->assertSame("", $invoicerlegalorgtype);
+        $this->assertSame("", $invoicerlegalorgname);
+    }
+
     public function testDocumentInvoicerContact(): void
     {
@@ -715,19 +568,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicee
-     */
     public function testDocumentInvoiceeGeneral(): void
     {
         self::$document->getDocumentInvoicee($invoiceename, $invoiceeids, $invoiceedescription);
-        $this->assertEquals("", $invoiceename);
+        $this->assertSame("", $invoiceename);
         $this->assertIsArray($invoiceeids);
         $this->assertEmpty($invoiceeids);
-        $this->assertEquals("", $invoiceedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeGlobalId
-     */
+        $this->assertSame("", $invoiceedescription);
+    }
+
     public function testDocumentInvoiceeGlobalId(): void
     {
@@ -737,7 +584,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeTaxRegistration
-     */
     public function testDocumentInvoiceeTaxRegistration(): void
     {
@@ -747,36 +591,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeAddress
-     */
     public function testDocumentInvoiceeAddress(): void
     {
         self::$document->getDocumentInvoiceeAddress($invoiceelineone, $invoiceelinetwo, $invoiceelinethree, $invoiceepostcode, $invoiceecity, $invoiceecountry, $invoiceesubdivision);
-        $this->assertEquals("", $invoiceelineone);
-        $this->assertEquals("", $invoiceelinetwo);
-        $this->assertEquals("", $invoiceelinethree);
-        $this->assertEquals("", $invoiceepostcode);
-        $this->assertEquals("", $invoiceecity);
-        $this->assertEquals("", $invoiceecountry);
+        $this->assertSame("", $invoiceelineone);
+        $this->assertSame("", $invoiceelinetwo);
+        $this->assertSame("", $invoiceelinethree);
+        $this->assertSame("", $invoiceepostcode);
+        $this->assertSame("", $invoiceecity);
+        $this->assertSame("", $invoiceecountry);
         $this->assertIsArray($invoiceesubdivision);
         $this->assertEmpty($invoiceesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeLegalOrganisation
-     */
     public function testDocumentInvoiceeLegalOrganization(): void
     {
         self::$document->getDocumentInvoiceeLegalOrganisation($invoiceelegalorgid, $invoiceelegalorgtype, $invoiceelegalorgname);
-        $this->assertEquals("", $invoiceelegalorgid);
-        $this->assertEquals("", $invoiceelegalorgtype);
-        $this->assertEquals("", $invoiceelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoiceeContact
-     */
+        $this->assertSame("", $invoiceelegalorgid);
+        $this->assertSame("", $invoiceelegalorgtype);
+        $this->assertSame("", $invoiceelegalorgname);
+    }
+
     public function testDocumentInvoiceeContact(): void
     {
@@ -795,19 +628,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayee
-     */
     public function testDocumentPayeeGeneral(): void
     {
         self::$document->getDocumentPayee($payeename, $payeeids, $payeedescription);
-        $this->assertEquals("", $payeename);
+        $this->assertSame("", $payeename);
         $this->assertIsArray($payeeids);
         $this->assertEmpty($payeeids);
-        $this->assertEquals("", $payeedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeGlobalId
-     */
+        $this->assertSame("", $payeedescription);
+    }
+
     public function testDocumentPayeeGlobalId(): void
     {
@@ -817,7 +644,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeTaxRegistration
-     */
     public function testDocumentPayeeTaxRegistration(): void
     {
@@ -827,36 +651,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeAddress
-     */
     public function testDocumentPayeeAddress(): void
     {
         self::$document->getDocumentPayeeAddress($payeelineone, $payeelinetwo, $payeelinethree, $payeepostcode, $payeecity, $payeecountry, $payeesubdivision);
-        $this->assertEquals("", $payeelineone);
-        $this->assertEquals("", $payeelinetwo);
-        $this->assertEquals("", $payeelinethree);
-        $this->assertEquals("", $payeepostcode);
-        $this->assertEquals("", $payeecity);
-        $this->assertEquals("", $payeecountry);
+        $this->assertSame("", $payeelineone);
+        $this->assertSame("", $payeelinetwo);
+        $this->assertSame("", $payeelinethree);
+        $this->assertSame("", $payeepostcode);
+        $this->assertSame("", $payeecity);
+        $this->assertSame("", $payeecountry);
         $this->assertIsArray($payeesubdivision);
         $this->assertEmpty($payeesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeLegalOrganisation
-     */
     public function testDocumentPayeeLegalOrganization(): void
     {
         self::$document->getDocumentPayeeLegalOrganisation($payeelegalorgid, $payeelegalorgtype, $payeelegalorgname);
-        $this->assertEquals("", $payeelegalorgid);
-        $this->assertEquals("", $payeelegalorgtype);
-        $this->assertEquals("", $payeelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPayeeContact
-     */
+        $this->assertSame("", $payeelegalorgid);
+        $this->assertSame("", $payeelegalorgtype);
+        $this->assertSame("", $payeelegalorgname);
+    }
+
     public function testDocumentPayeeContact(): void
     {
@@ -875,20 +688,14 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUser
-     */
     public function testDocumentProductEndUserGeneral(): void
     {
         self::$document->getDocumentProductEndUser($producendusername, $producenduserids, $producenduserdescription);
-        $this->assertEquals("", $producendusername);
+        $this->assertSame("", $producendusername);
         $this->assertIsArray($producenduserids);
         $this->assertArrayNotHasKey(0, $producenduserids);
         $this->assertArrayNotHasKey(1, $producenduserids);
-        $this->assertEquals("", $producenduserdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserGlobalId
-     */
+        $this->assertSame("", $producenduserdescription);
+    }
+
     public function testDocumentProductEndUserGlobalId(): void
     {
@@ -898,7 +705,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserTaxRegistration
-     */
     public function testDocumentProductEndUserTaxRegistration(): void
     {
@@ -912,36 +716,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserAddress
-     */
     public function testDocumentProductEndUserAddress(): void
     {
         self::$document->getDocumentProductEndUserAddress($producenduserlineone, $producenduserlinetwo, $producenduserlinethree, $producenduserpostcode, $producendusercity, $producendusercountry, $producendusersubdivision);
-        $this->assertEquals("", $producenduserlineone);
-        $this->assertEquals("", $producenduserlinetwo);
-        $this->assertEquals("", $producenduserlinethree);
-        $this->assertEquals("", $producenduserpostcode);
-        $this->assertEquals("", $producendusercity);
-        $this->assertEquals("", $producendusercountry);
+        $this->assertSame("", $producenduserlineone);
+        $this->assertSame("", $producenduserlinetwo);
+        $this->assertSame("", $producenduserlinethree);
+        $this->assertSame("", $producenduserpostcode);
+        $this->assertSame("", $producendusercity);
+        $this->assertSame("", $producendusercountry);
         $this->assertIsArray($producendusersubdivision);
         $this->assertEmpty($producendusersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserLegalOrganisation
-     */
     public function testDocumentProductEndUserLegalOrganization(): void
     {
         self::$document->getDocumentProductEndUserLegalOrganisation($producenduserlegalorgid, $producenduserlegalorgtype, $producenduserlegalorgname);
-        $this->assertEquals("", $producenduserlegalorgid);
-        $this->assertEquals("", $producenduserlegalorgtype);
-        $this->assertEquals("", $producenduserlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentProductEndUserContactContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentProductEndUserContactContact
-     */
+        $this->assertSame("", $producenduserlegalorgid);
+        $this->assertSame("", $producenduserlegalorgtype);
+        $this->assertSame("", $producenduserlegalorgname);
+    }
+
     public function testDocumentProductEndUserContact(): void
     {
@@ -955,37 +748,32 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerOrderReferencedDocument
-     */
     public function testDocumentSellerOrderReferencedDocument(): void
     {
         self::$document->getDocumentSellerOrderReferencedDocument($sellerorderrefdocid, $sellerorderrefdocdate);
-        $this->assertEquals("", $sellerorderrefdocid);
-        $this->assertNull($sellerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerOrderReferencedDocument
-     */
+        $this->assertSame("", $sellerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $sellerorderrefdocdate);
+    }
+
     public function testDocumentBuyerOrderReferencedDocument(): void
     {
         self::$document->getDocumentBuyerOrderReferencedDocument($buyerorderrefdocid, $buyerorderrefdocdate);
-        $this->assertEquals("2013-471331", $buyerorderrefdocid);
-        $this->assertNull($buyerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentContractReferencedDocument
-     */
+        $this->assertSame("2013-471331", $buyerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $buyerorderrefdocdate);
+    }
+
+    public function testDocumentQuotationReferencedDocument(): void
+    {
+        self::$document->getDocumentQuotationReferencedDocument($quotationrefdocid, $quotationrefdocdate);
+        $this->assertSame("", $quotationrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $quotationrefdocdate);
+    }
+
     public function testDocumentContractReferencedDocument(): void
     {
         self::$document->getDocumentContractReferencedDocument($contractrefdocid, $contractrefdocdate);
-        $this->assertEquals("", $contractrefdocid);
-        $this->assertNull($contractrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocuments
-     */
+        $this->assertSame("", $contractrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $contractrefdocdate);
+    }
+
     public function testDocumentAdditionalReferencedDocuments(): void
     {
@@ -995,73 +783,47 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProcuringProject
-     */
     public function testDocumentProcuringProject(): void
     {
         self::$document->getDocumentProcuringProject($projectid, $projectname);
-        $this->assertEquals("", $projectid);
-        $this->assertEquals("", $projectname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSupplyChainEvent
-     */
+        $this->assertSame("", $projectid);
+        $this->assertSame("", $projectname);
+    }
+
     public function testDocumentSupplyChainEvent(): void
     {
         self::$document->getDocumentSupplyChainEvent($supplychainevent);
-        $this->assertNotNull($supplychainevent);
+        $this->assertInstanceOf(\DateTime::class, $supplychainevent);
         $this->assertInstanceOf("DateTime", $supplychainevent);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20180603'))->format('Ymd'), $supplychainevent->format('Ymd'));
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDespatchAdviceReferencedDocument
-     */
     public function testDocumentDespatchAdviceReferencedDocument(): void
     {
         self::$document->getDocumentDespatchAdviceReferencedDocument($despatchdocid, $despatchdocdate);
-        $this->assertEquals("", $despatchdocid);
-        $this->assertNull($despatchdocdate);
-        $this->assertNotInstanceOf("DateTime", $despatchdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentReceivingAdviceReferencedDocument
-     */
+        $this->assertSame("", $despatchdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $despatchdocdate);
+    }
+
     public function testDocumentReceivingAdviceReferencedDocument(): void
     {
         self::$document->getDocumentReceivingAdviceReferencedDocument($recadvid, $recadvdate);
-        $this->assertEquals("", $recadvid);
-        $this->assertNull($recadvdate);
-        $this->assertNotInstanceOf("DateTime", $recadvdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryNoteReferencedDocument
-     */
+        $this->assertSame("", $recadvid);
+        $this->assertNotInstanceOf(\DateTime::class, $recadvdate);
+    }
+
     public function testDocumentDeliveryNoteReferencedDocument(): void
     {
         self::$document->getDocumentDeliveryNoteReferencedDocument($deliverynoterefdocid, $deliverynoterefdocdate);
-        $this->assertEquals("", $deliverynoterefdocid);
-        $this->assertNull($deliverynoterefdocdate);
-        $this->assertNotInstanceOf("DateTime", $deliverynoterefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBillingPeriod
-     */
+        $this->assertSame("", $deliverynoterefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $deliverynoterefdocdate);
+    }
+
     public function testDocumentBillingPeriod(): void
     {
         self::$document->getDocumentBillingPeriod($docbillingperiodstart, $docbillingperiodend);
-        $this->assertNull($docbillingperiodstart);
-        $this->assertNotInstanceOf("DateTime", $docbillingperiodstart);
-        $this->assertNull($docbillingperiodend);
-        $this->assertNotInstanceOf("DateTime", $docbillingperiodend);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharges
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $docbillingperiodstart);
+        $this->assertNotInstanceOf(\DateTime::class, $docbillingperiodend);
+    }
+
     public function testDocumentAllowanceCharges(): void
     {
@@ -1071,7 +833,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerms
-     */
     public function testDocumentPaymentTerms(): void
     {
@@ -1089,20 +848,13 @@
         $this->assertNotInstanceOf("DateTime", $docpaymentterms[0]["duedate"]);
         $this->assertEquals("", $docpaymentterms[0]["directdebitmandateid"]);
-        $this->assertEquals(0.0, $docpaymentterms[0]["partialpaymentamount"]);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryTerms
-     */
+        $this->assertEqualsWithDelta(0.0, $docpaymentterms[0]["partialpaymentamount"], PHP_FLOAT_EPSILON);
+    }
+
     public function testDocumentDeliveryTerms(): void
     {
         self::$document->getDocumentDeliveryTerms($devtermcode);
-        $this->assertEquals("", $devtermcode);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument
-     */
+        $this->assertSame("", $devtermcode);
+    }
+
     public function testDocumentAdditionalReferencedDocumentLoop(): void
     {
@@ -1111,8 +863,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateCustomerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateCustomerOrderReferencedDocument
-     */
     public function testDocumentUltimateCustomerOrderReferencedDocumentLoop(): void
     {
@@ -1121,8 +869,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextGetDocumentPaymentMeans
-     */
     public function testDocumentDocumentPaymentMeansLoop(): void
     {
@@ -1131,8 +875,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     */
     public function testDocumentTaxLoop(): void
     {
@@ -1141,32 +881,23 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentTax
-     */
     public function testDocumentTax(): void
     {
         $this->assertTrue(self::$document->firstDocumentTax());
         self::$document->getDocumentTax($categoryCode, $typeCode, $basisAmount, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, $lineTotalBasisAmount, $allowanceChargeBasisAmount, $taxPointDate, $dueDateTypeCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(129.37, $basisAmount);
-        $this->assertEquals(9.06, $calculatedAmount);
-        $this->assertEquals(7.0, $rateApplicablePercent);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(129.37, $basisAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(9.06, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(7.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
 
         $this->assertTrue(self::$document->nextDocumentTax());
         self::$document->getDocumentTax($categoryCode, $typeCode, $basisAmount, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, $lineTotalBasisAmount, $allowanceChargeBasisAmount, $taxPointDate, $dueDateTypeCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(64.40, $basisAmount);
-        $this->assertEquals(12.24, $calculatedAmount);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAllowanceCharge
-     */
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(64.40, $basisAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(12.24, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+    }
+
     public function testtDocumentAllowanceChargeLoop(): void
     {
@@ -1177,61 +908,52 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharge
-     */
     public function testtDocumentAllowanceCharge(): void
     {
         $this->assertTrue(self::$document->firstDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(1.00, $actualAmount);
+        $this->assertEqualsWithDelta(1.00, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(19.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(19.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
-        $this->assertEquals(10.0, $basisAmount);
+        $this->assertEqualsWithDelta(10.0, $basisAmount, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("Sondernachlass", $reason);
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("Sondernachlass", $reason);
 
         $this->assertTrue(self::$document->nextDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(13.73, $actualAmount);
+        $this->assertEqualsWithDelta(13.73, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(7.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(7.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
-        $this->assertEquals(137.30, $basisAmount);
+        $this->assertEqualsWithDelta(137.30, $basisAmount, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("Sondernachlass", $reason);
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("Sondernachlass", $reason);
 
         $this->assertTrue(self::$document->nextDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(5.80, $actualAmount);
+        $this->assertEqualsWithDelta(5.80, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertTrue($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(7.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(7.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
-        $this->assertEquals(137.30, $basisAmount);
+        $this->assertEqualsWithDelta(137.30, $basisAmount, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("Versandkosten", $reason);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentLogisticsServiceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentLogisticsServiceCharge
-     */
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("Versandkosten", $reason);
+    }
+
     public function testtDocumentLogisticsServiceChargeLoop(): void
     {
@@ -1240,8 +962,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     */
     public function testtDocumentPaymentTermsLoop(): void
     {
@@ -1250,10 +968,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDiscountTermsFromPaymentTerm
-     */
     public function testtDocumentPaymentTerms(): void
     {
@@ -1261,22 +973,30 @@
         self::$document->getDocumentPaymentTerm($termdescription, $termduedate, $termmandate);
         self::$document->getDiscountTermsFromPaymentTerm($dispercent, $discbasedatetime, $discmeasureval, $discmeasureunit, $discbaseamount, $discamount);
-
-        $this->assertEquals("Zahlbar innerhalb 30 Tagen netto bis 04.07.2018, 3% Skonto innerhalb 10 Tagen bis 15.06.2018", $termdescription);
-        $this->assertNull($termduedate);
-        $this->assertEquals("", $termmandate);
+        self::$document->getPenaltyTermsFromPaymentTerm($penaltypercent, $penaltybasedatetime, $penaltymeasureval, $penaltymeasureunit, $penaltybaseamount, $penaltyamount);
+
+        $this->assertSame("Zahlbar innerhalb 30 Tagen netto bis 04.07.2018, 3% Skonto innerhalb 10 Tagen bis 15.06.2018", $termdescription);
+        $this->assertNotInstanceOf(\DateTime::class, $termduedate);
+        $this->assertSame("", $termmandate);
         $this->assertEquals(0, $dispercent);
-        $this->assertNull($discbasedatetime);
+        $this->assertNotInstanceOf(\DateTime::class, $discbasedatetime);
         $this->assertEquals(0, $discmeasureval);
-        $this->assertEquals("", $discmeasureunit);
+        $this->assertSame("", $discmeasureunit);
         $this->assertEquals(0, $discbaseamount);
         $this->assertEquals(0, $discamount);
+        $this->assertNotInstanceOf(\DateTime::class, $penaltybasedatetime);
+        $this->assertEquals(0, $penaltymeasureval);
+        $this->assertSame("", $penaltymeasureunit);
+        $this->assertEquals(0, $penaltybaseamount);
+        $this->assertEquals(0, $penaltyamount);
 
         $this->assertFalse(self::$document->nextDocumentPaymentTerms());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     */
+    public function testDocumentReceivableSpecifiedTradeAccountingAccount(): void
+    {
+        $this->assertFalse(self::$document->firstDocumentReceivableSpecifiedTradeAccountingAccount());
+        $this->assertFalse(self::$document->nextDocumentReceivableSpecifiedTradeAccountingAccount());
+    }
+
     public function testDocumentPositionLoop(): void
     {
@@ -1288,34 +1008,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
     public function testDocumentPositionFirst(): void
     {
@@ -1323,70 +1013,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("1", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("1", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Kunstrasen grÃŒn 3m breit", $prodname);
-        $this->assertEquals("300cm x 100 cm", $proddesc);
-        $this->assertEquals("KR3M", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0160", $prodglobalidtype);
-        $this->assertEquals("4012345001235", $prodglobalid);
+        $this->assertSame("Kunstrasen grÃŒn 3m breit", $prodname);
+        $this->assertSame("300cm x 100 cm", $proddesc);
+        $this->assertSame("KR3M", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0160", $prodglobalidtype);
+        $this->assertSame("4012345001235", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(4.00, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(4.00, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(3.3333, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(3.3333, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(3.0, $billedquantity);
-        $this->assertEquals("MTK", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(3.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("MTK", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertTrue(self::$document->firstDocumentPositionNote());
@@ -1411,16 +1111,16 @@
             $docPosAllowanceChargereasonCode
         );
-        $this->assertEquals(0.6667, $docPosAllowanceChargeactualAmount);
+        $this->assertEqualsWithDelta(0.6667, $docPosAllowanceChargeactualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($docPosAllowanceChargeisCharge);
         $this->assertEquals(0, $docPosAllowanceChargecalculationPercent);
         $this->assertEquals(0, $docPosAllowanceChargebasisAmount);
-        $this->assertEquals("", $docPosAllowanceChargereason);
-        $this->assertEquals("", $docPosAllowanceChargeTaxTypeCode);
-        $this->assertEquals("", $docPosAllowanceChargeTaxCategoryCode);
+        $this->assertSame("", $docPosAllowanceChargereason);
+        $this->assertSame("", $docPosAllowanceChargeTaxTypeCode);
+        $this->assertSame("", $docPosAllowanceChargeTaxCategoryCode);
         $this->assertEquals(0, $docPosAllowanceChargerateApplicablePercent);
         $this->assertEquals(0, $docPosAllowanceChargesequence);
         $this->assertEquals(0, $docPosAllowanceChargebasisQuantity);
-        $this->assertEquals("", $docPosAllowanceChargebasisQuantityUnitCode);
-        $this->assertEquals("", $docPosAllowanceChargereasonCode);
+        $this->assertSame("", $docPosAllowanceChargebasisQuantityUnitCode);
+        $this->assertSame("", $docPosAllowanceChargereasonCode);
 
         $this->assertTrue(self::$document->firstDocumentPositionTax());
@@ -1429,20 +1129,19 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(10.0, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(10.0, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         $this->assertTrue(self::$document->firstDocumentPositionNote());
         self::$document->getDocumentPositionNote($content, $contentcode, $subjectcode);
-        $this->assertEquals("Wir erlauben uns Ihnen folgende Positionen aus der Lieferung Nr. 2018-51112 in Rechnung zu stellen:", $content);
-        $this->assertEquals("", $contentcode);
-        $this->assertEquals("", $subjectcode);
+        $this->assertSame("Wir erlauben uns Ihnen folgende Positionen aus der Lieferung Nr. 2018-51112 in Rechnung zu stellen:", $content);
+        $this->assertSame("", $contentcode);
+        $this->assertSame("", $subjectcode);
 
         $this->assertFalse(self::$document->nextDocumentPositionNote());
@@ -1452,36 +1151,7 @@
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionSecond(): void
     {
@@ -1489,70 +1159,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("2", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("2", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Schweinesteak", $prodname);
-        $this->assertEquals("aus Deutschland", $proddesc);
-        $this->assertEquals("SFK5", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0160", $prodglobalidtype);
-        $this->assertEquals("4000050986428", $prodglobalid);
+        $this->assertSame("Schweinesteak", $prodname);
+        $this->assertSame("aus Deutschland", $proddesc);
+        $this->assertSame("SFK5", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0160", $prodglobalidtype);
+        $this->assertSame("4000050986428", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(5.50, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(5.50, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(5.50, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(5.50, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(5.0, $billedquantity);
-        $this->assertEquals("KGM", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(5.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("KGM", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1567,14 +1247,13 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(7.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(27.5, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(7.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(27.5, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1585,36 +1264,7 @@
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionThird(): void
     {
@@ -1622,70 +1272,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("3", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("3", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
         $this->assertStringContainsString("Mineralwasser Medium 12 x 1,0l PET", $prodname);
-        $this->assertEquals("", $proddesc);
-        $this->assertEquals("GTRWA5", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0160", $prodglobalidtype);
-        $this->assertEquals("4000001234561", $prodglobalid);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("GTRWA5", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0160", $prodglobalidtype);
+        $this->assertSame("4000001234561", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(5.49, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(5.49, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(5.49, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(5.49, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(20.0, $billedquantity);
-        $this->assertEquals("H87", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(20.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("H87", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1700,14 +1360,13 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(7.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(109.80, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(7.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(109.80, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1718,36 +1377,7 @@
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionFourth(): void
     {
@@ -1755,70 +1385,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("4", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("4", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
         $this->assertStringContainsString("Pfand", $prodname);
-        $this->assertEquals("", $proddesc);
-        $this->assertEquals("PFA5", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0160", $prodglobalidtype);
-        $this->assertEquals("4000001234578", $prodglobalid);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("PFA5", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0160", $prodglobalidtype);
+        $this->assertSame("4000001234578", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(2.77, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(2.77, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(2.77, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(2.77, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(20.0, $billedquantity);
-        $this->assertEquals("C62", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(20.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("C62", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1833,14 +1473,13 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(55.40, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(55.40, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1851,11 +1490,7 @@
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAdditionalReferencedDocument
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionAdditionalReferencedDocument(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderEn16931Bank1Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderEn16931Bank1Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderEn16931Bank1Test.php	(revision 8504)
@@ -3,9 +3,9 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentReader;
-use \horstoeko\zugferd\codelists\ZugferdInvoiceType;
-use \horstoeko\zugferd\codelists\ZugferdPaymentMeans;
+use horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\codelists\ZugferdPaymentMeans;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdProfiles;
 
 class ReaderEn16931Bank1Test extends TestCase
@@ -18,5 +18,5 @@
     public static function setUpBeforeClass(): void
     {
-        self::$document = ZugferdDocumentReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/en16931_sepa_prenotification.xml");
+        self::$document = ZugferdDocumentReader::readAndGuessFromFile(__DIR__ . "/../assets/xml_en16931_4.xml");
     }
 
@@ -29,15 +29,12 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getInvoiceObject
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getSerializer
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getObjectHelper
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getProfileDefinitionParameter
-     */
     public function testDocumentGetters(): void
     {
-        $this->assertNotNull(self::$document->getInvoiceObject());
-        $this->assertNotNull(self::$document->getSerializer());
-        $this->assertNotNull(self::$document->getObjectHelper());
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertInstanceOf(\JMS\Serializer\Serializer::class, $this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
+        $this->assertInstanceOf('horstoeko\zugferd\ZugferdObjectHelper', $this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
         $this->assertEquals('en16931', self::$document->getProfileDefinitionParameter('name'));
         $this->assertEquals('EN 16931 (COMFORT)', self::$document->getProfileDefinitionParameter('altname'));
@@ -45,4 +42,5 @@
         $this->assertEquals('factur-x.xml', self::$document->getProfileDefinitionParameter('attachmentfilename'));
         $this->assertEquals('EN 16931', self::$document->getProfileDefinitionParameter('xmpname'));
+        $this->assertEquals('1.0', self::$document->getProfileDefinitionParameter('xmpversion'));
         $this->expectNoticeOrWarningExt(
             function () {
@@ -52,25 +50,18 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInformation
-     */
     public function testDocumentGenerals(): void
     {
         self::$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-        $this->assertEquals('471102', $documentno);
-        $this->assertEquals(ZugferdInvoiceType::INVOICE, $documenttypecode);
-        $this->assertNotNull($documentdate);
+        $this->assertSame('471102', $documentno);
+        $this->assertSame(ZugferdInvoiceType::INVOICE, $documenttypecode);
+        $this->assertInstanceOf(\DateTime::class, $documentdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20180305'))->format('Ymd'), $documentdate->format('Ymd'));
-        $this->assertEquals("EUR", $invoiceCurrency);
-        $this->assertEquals("", $taxCurrency);
-        $this->assertEquals("", $documentname);
-        $this->assertEquals("", $documentlanguage);
-        $this->assertNull($effectiveSpecifiedPeriod);
+        $this->assertSame("EUR", $invoiceCurrency);
+        $this->assertSame("", $taxCurrency);
+        $this->assertSame("", $documentname);
+        $this->assertSame("", $documentlanguage);
+        $this->assertNotInstanceOf(\DateTime::class, $effectiveSpecifiedPeriod);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextGetDocumentPaymentMeans
-     */
     public function testDocumentPaymentMeansLoop(): void
     {
@@ -79,8 +70,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     */
     public function testtDocumentPaymentTermsLoop(): void
     {
@@ -89,40 +76,27 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentGeneralPaymentInformation
-     */
     public function testDocumentGeneralPaymentInformation(): void
     {
         self::$document->getDocumentGeneralPaymentInformation($creditorReferenceID, $paymentReference);
-        $this->assertEquals("DE98ZZZ09999999999", $creditorReferenceID);
-        $this->assertEquals("", $paymentReference);
+        $this->assertSame("DE98ZZZ09999999999", $creditorReferenceID);
+        $this->assertSame("", $paymentReference);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentMeans
-     */
     public function testGetDocumentPaymentMeans(): void
     {
         $this->assertTrue(self::$document->firstGetDocumentPaymentMeans());
         self::$document->getDocumentPaymentMeans($typeCode, $information, $cardType, $cardId, $cardHolderName, $buyerIban, $payeeIban, $payeeAccountName, $payeePropId, $payeeBic);
-        $this->assertEquals(ZugferdPaymentMeans::UNTDID_4461_59, $typeCode);
-        $this->assertEquals("", $information);
-        $this->assertEquals("", $cardType);
-        $this->assertEquals("", $cardId);
-        $this->assertEquals("", $cardHolderName);
-        $this->assertEquals("DE21860000000086001055", $buyerIban);
-        $this->assertEquals("", $payeeIban);
-        $this->assertEquals("", $payeeAccountName);
-        $this->assertEquals("", $payeePropId);
-        $this->assertEquals("", $payeeBic);
+        $this->assertSame(ZugferdPaymentMeans::UNTDID_4461_59, $typeCode);
+        $this->assertSame("", $information);
+        $this->assertSame("", $cardType);
+        $this->assertSame("", $cardId);
+        $this->assertSame("", $cardHolderName);
+        $this->assertSame("DE21860000000086001055", $buyerIban);
+        $this->assertSame("", $payeeIban);
+        $this->assertSame("", $payeeAccountName);
+        $this->assertSame("", $payeePropId);
+        $this->assertSame("", $payeeBic);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDiscountTermsFromPaymentTerm
-     */
     public function testtDocumentPaymentTerms(): void
     {
@@ -130,14 +104,20 @@
         self::$document->getDocumentPaymentTerm($termdescription, $termduedate, $termmandate);
         self::$document->getDiscountTermsFromPaymentTerm($dispercent, $discbasedatetime, $discmeasureval, $discmeasureunit, $discbaseamount, $discamount);
+        self::$document->getPenaltyTermsFromPaymentTerm($penaltypercent, $penaltybasedatetime, $penaltymeasureval, $penaltymeasureunit, $penaltybaseamount, $penaltyamount);
 
-        $this->assertEquals("Der Betrag in HÃ¶he von EUR 529,87 wird am 20.03.2018 von Ihrem Konto per SEPA-Lastschrift eingezogen.", $termdescription);
-        $this->assertNull($termduedate);
-        $this->assertEquals("REF A-123", $termmandate);
+        $this->assertSame("Der Betrag in HÃ¶he von EUR 529,87 wird am 20.03.2018 von Ihrem Konto per SEPA-Lastschrift eingezogen.", $termdescription);
+        $this->assertNotInstanceOf(\DateTime::class, $termduedate);
+        $this->assertSame("REF A-123", $termmandate);
         $this->assertEquals(0, $dispercent);
-        $this->assertNull($discbasedatetime);
+        $this->assertNotInstanceOf(\DateTime::class, $discbasedatetime);
         $this->assertEquals(0, $discmeasureval);
-        $this->assertEquals("", $discmeasureunit);
+        $this->assertSame("", $discmeasureunit);
         $this->assertEquals(0, $discbaseamount);
         $this->assertEquals(0, $discamount);
+        $this->assertNotInstanceOf(\DateTime::class, $penaltybasedatetime);
+        $this->assertEquals(0, $penaltymeasureval);
+        $this->assertSame("", $penaltymeasureunit);
+        $this->assertEquals(0, $penaltybaseamount);
+        $this->assertEquals(0, $penaltyamount);
 
         $this->assertFalse(self::$document->nextDocumentPaymentTerms());
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderEn16931Bank2Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderEn16931Bank2Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderEn16931Bank2Test.php	(revision 8504)
@@ -3,9 +3,9 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentReader;
-use \horstoeko\zugferd\codelists\ZugferdInvoiceType;
-use \horstoeko\zugferd\codelists\ZugferdPaymentMeans;
+use horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\codelists\ZugferdPaymentMeans;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdProfiles;
 
 class ReaderEn16931Bank2Test extends TestCase
@@ -18,5 +18,5 @@
     public static function setUpBeforeClass(): void
     {
-        self::$document = ZugferdDocumentReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/en16931_bank_2.xml");
+        self::$document = ZugferdDocumentReader::readAndGuessFromFile(__DIR__ . "/../assets/xml_en16931_3.xml");
     }
 
@@ -29,26 +29,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInformation
-     */
     public function testDocumentGenerals(): void
     {
         self::$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-        $this->assertEquals('F20200024', $documentno);
-        $this->assertEquals(ZugferdInvoiceType::INVOICE, $documenttypecode);
-        $this->assertNotNull($documentdate);
+        $this->assertSame('F20200024', $documentno);
+        $this->assertSame(ZugferdInvoiceType::INVOICE, $documenttypecode);
+        $this->assertInstanceOf(\DateTime::class, $documentdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20200115'))->format('Ymd'), $documentdate->format('Ymd'));
-        $this->assertEquals("EUR", $invoiceCurrency);
-        $this->assertEquals("", $taxCurrency);
-        $this->assertEquals("", $documentname);
-        $this->assertEquals("", $documentlanguage);
-        $this->assertNull($effectiveSpecifiedPeriod);
-        $this->assertNotNull(self::$document->getInvoiceObject());
+        $this->assertSame("EUR", $invoiceCurrency);
+        $this->assertSame("", $taxCurrency);
+        $this->assertSame("", $documentname);
+        $this->assertSame("", $documentlanguage);
+        $this->assertNotInstanceOf(\DateTime::class, $effectiveSpecifiedPeriod);
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextGetDocumentPaymentMeans
-     */
     public function testDocumentPaymentMeansLoop(): void
     {
@@ -57,8 +51,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     */
     public function testtDocumentPaymentTermsLoop(): void
     {
@@ -67,40 +57,27 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentGeneralPaymentInformation
-     */
     public function testDocumentGeneralPaymentInformation(): void
     {
         self::$document->getDocumentGeneralPaymentInformation($creditorReferenceID, $paymentReference);
-        $this->assertEquals("CREDID", $creditorReferenceID);
-        $this->assertEquals("F20180023BUYER", $paymentReference);
+        $this->assertSame("CREDID", $creditorReferenceID);
+        $this->assertSame("F20180023BUYER", $paymentReference);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentMeans
-     */
     public function testGetDocumentPaymentMeans(): void
     {
         $this->assertTrue(self::$document->firstGetDocumentPaymentMeans());
         self::$document->getDocumentPaymentMeans($typeCode, $information, $cardType, $cardId, $cardHolderName, $buyerIban, $payeeIban, $payeeAccountName, $payeePropId, $payeeBic);
-        $this->assertEquals(ZugferdPaymentMeans::UNTDID_4461_30, $typeCode);
-        $this->assertEquals("", $information);
-        $this->assertEquals("", $cardType);
-        $this->assertEquals("", $cardId);
-        $this->assertEquals("", $cardHolderName);
-        $this->assertEquals("FRDEBIT", $buyerIban);
-        $this->assertEquals("FR76 1254 2547 2569 8542 5874 698", $payeeIban);
-        $this->assertEquals("", $payeeAccountName);
-        $this->assertEquals("LOC BANK ACCOUNT", $payeePropId);
-        $this->assertEquals("", $payeeBic);
+        $this->assertSame(ZugferdPaymentMeans::UNTDID_4461_30, $typeCode);
+        $this->assertSame("", $information);
+        $this->assertSame("", $cardType);
+        $this->assertSame("", $cardId);
+        $this->assertSame("", $cardHolderName);
+        $this->assertSame("FRDEBIT", $buyerIban);
+        $this->assertSame("FR76 1254 2547 2569 8542 5874 698", $payeeIban);
+        $this->assertSame("", $payeeAccountName);
+        $this->assertSame("LOC BANK ACCOUNT", $payeePropId);
+        $this->assertSame("", $payeeBic);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDiscountTermsFromPaymentTerm
-     */
     public function testtDocumentPaymentTerms(): void
     {
@@ -108,33 +85,33 @@
         self::$document->getDocumentPaymentTerm($termdescription, $termduedate, $termmandate);
         self::$document->getDiscountTermsFromPaymentTerm($dispercent, $discbasedatetime, $discmeasureval, $discmeasureunit, $discbaseamount, $discamount);
+        self::$document->getPenaltyTermsFromPaymentTerm($penaltypercent, $penaltybasedatetime, $penaltymeasureval, $penaltymeasureunit, $penaltybaseamount, $penaltyamount);
 
-        $this->assertEquals("", $termdescription);
+        $this->assertSame("", $termdescription);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20200215'))->format('Ymd'), $termduedate->format('Ymd'));
-        $this->assertEquals("MANDATE PT", $termmandate);
+        $this->assertSame("MANDATE PT", $termmandate);
         $this->assertEquals(0, $dispercent);
-        $this->assertNull($discbasedatetime);
+        $this->assertNotInstanceOf(\DateTime::class, $discbasedatetime);
         $this->assertEquals(0, $discmeasureval);
-        $this->assertEquals("", $discmeasureunit);
+        $this->assertSame("", $discmeasureunit);
         $this->assertEquals(0, $discbaseamount);
         $this->assertEquals(0, $discamount);
+        $this->assertNotInstanceOf(\DateTime::class, $penaltybasedatetime);
+        $this->assertEquals(0, $penaltymeasureval);
+        $this->assertSame("", $penaltymeasureunit);
+        $this->assertEquals(0, $penaltybaseamount);
+        $this->assertEquals(0, $penaltyamount);
 
         $this->assertFalse(self::$document->nextDocumentPaymentTerms());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentative
-     */
     public function testDocumentSellerTaxRepresentativeGeneral(): void
     {
         self::$document->getDocumentSellerTaxRepresentative($sellertaxreprname, $sellertaxreprids, $sellertaxreprdescription);
-        $this->assertEquals("SELLER TAX REP", $sellertaxreprname);
+        $this->assertSame("SELLER TAX REP", $sellertaxreprname);
         $this->assertIsArray($sellertaxreprids);
         $this->assertEmpty($sellertaxreprids);
-        $this->assertEquals("", $sellertaxreprdescription);
+        $this->assertSame("", $sellertaxreprdescription);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeGlobalId
-     */
     public function testDocumentSellerTaxRepresentativeGlobalId(): void
     {
@@ -144,7 +121,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeTaxRegistration
-     */
     public function testDocumentSellerTaxRepresentativeTaxRegistration(): void
     {
@@ -156,36 +130,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeAddress
-     */
     public function testDocumentSellerTaxRepresentativeAddress(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeAddress($sellertaxreprlineone, $sellertaxreprlinetwo, $sellertaxreprlinethree, $sellertaxreprpostcode, $sellertaxreprcity, $sellertaxreprcountry, $sellertaxreprsubdivision);
-        $this->assertEquals("35 rue d'ici", $sellertaxreprlineone);
-        $this->assertEquals("Seller line 2", $sellertaxreprlinetwo);
-        $this->assertEquals("Seller line 3", $sellertaxreprlinethree);
-        $this->assertEquals("75018", $sellertaxreprpostcode);
-        $this->assertEquals("PARIS", $sellertaxreprcity);
-        $this->assertEquals("FR", $sellertaxreprcountry);
+        $this->assertSame("35 rue d'ici", $sellertaxreprlineone);
+        $this->assertSame("Seller line 2", $sellertaxreprlinetwo);
+        $this->assertSame("Seller line 3", $sellertaxreprlinethree);
+        $this->assertSame("75018", $sellertaxreprpostcode);
+        $this->assertSame("PARIS", $sellertaxreprcity);
+        $this->assertSame("FR", $sellertaxreprcountry);
         $this->assertIsArray($sellertaxreprsubdivision);
         $this->assertEmpty($sellertaxreprsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeLegalOrganisation
-     */
     public function testDocumentSellerTaxRepresentativeLegalOrganization(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeLegalOrganisation($sellertaxreprlegalorgid, $sellertaxreprlegalorgtype, $sellertaxreprlegalorgname);
-        $this->assertEquals("", $sellertaxreprlegalorgid);
-        $this->assertEquals("", $sellertaxreprlegalorgtype);
-        $this->assertEquals("", $sellertaxreprlegalorgname);
+        $this->assertSame("", $sellertaxreprlegalorgid);
+        $this->assertSame("", $sellertaxreprlegalorgtype);
+        $this->assertSame("", $sellertaxreprlegalorgname);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerTaxRepresentativeContact
-     */
     public function testDocumentSellerTaxRepresentativeContact(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderExtended2Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderExtended2Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderExtended2Test.php	(revision 8504)
@@ -3,8 +3,8 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\codelists\ZugferdInvoiceType;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdProfiles;
 
 class ReaderExtended2Test extends TestCase
@@ -17,5 +17,5 @@
     public static function setUpBeforeClass(): void
     {
-        self::$document = ZugferdDocumentReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/extended_invoice_2.xml");
+        self::$document = ZugferdDocumentReader::readAndGuessFromFile(__DIR__ . "/../assets/xml_extended_2.xml");
     }
 
@@ -28,15 +28,12 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getInvoiceObject
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getSerializer
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getObjectHelper
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getProfileDefinitionParameter
-     */
     public function testDocumentGetters(): void
     {
-        $this->assertNotNull(self::$document->getInvoiceObject());
-        $this->assertNotNull(self::$document->getSerializer());
-        $this->assertNotNull(self::$document->getObjectHelper());
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertInstanceOf(\JMS\Serializer\Serializer::class, $this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
+        $this->assertInstanceOf('horstoeko\zugferd\ZugferdObjectHelper', $this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
         $this->assertEquals('extended', self::$document->getProfileDefinitionParameter('name'));
         $this->assertEquals('EXTENDED', self::$document->getProfileDefinitionParameter('altname'));
@@ -44,4 +41,5 @@
         $this->assertEquals('factur-x.xml', self::$document->getProfileDefinitionParameter('attachmentfilename'));
         $this->assertEquals('EXTENDED', self::$document->getProfileDefinitionParameter('xmpname'));
+        $this->assertEquals('1.0', self::$document->getProfileDefinitionParameter('xmpversion'));
         $this->expectNoticeOrWarningExt(
             function () {
@@ -51,24 +49,18 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInformation
-     */
     public function testDocumentGenerals(): void
     {
         self::$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-        $this->assertEquals('F20200027', $documentno);
-        $this->assertEquals(ZugferdInvoiceType::INVOICE, $documenttypecode);
-        $this->assertNotNull($documentdate);
+        $this->assertSame('F20200027', $documentno);
+        $this->assertSame(ZugferdInvoiceType::INVOICE, $documenttypecode);
+        $this->assertInstanceOf(\DateTime::class, $documentdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20200115'))->format('Ymd'), $documentdate->format('Ymd'));
-        $this->assertEquals("EUR", $invoiceCurrency);
-        $this->assertEquals("", $taxCurrency);
-        $this->assertEquals("", $documentname);
-        $this->assertEquals("", $documentlanguage);
-        $this->assertNull($effectiveSpecifiedPeriod);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentNotes
-     */
+        $this->assertSame("EUR", $invoiceCurrency);
+        $this->assertSame("", $taxCurrency);
+        $this->assertSame("", $documentname);
+        $this->assertSame("", $documentlanguage);
+        $this->assertNotInstanceOf(\DateTime::class, $effectiveSpecifiedPeriod);
+    }
+
     public function testDocumentNotes(): void
     {
@@ -76,5 +68,5 @@
         $this->assertIsArray($notes);
         $this->assertNotEmpty($notes);
-        $this->assertEquals(2, count($notes));
+        $this->assertCount(2, $notes);
         $this->assertArrayHasKey(0, $notes);
         $this->assertArrayHasKey(1, $notes);
@@ -97,17 +89,11 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentGeneralPaymentInformation
-     */
     public function testDocumentGeneralPaymentInformation(): void
     {
         self::$document->getDocumentGeneralPaymentInformation($creditorReferenceID, $paymentReference);
-        $this->assertEquals("", $creditorReferenceID);
-        $this->assertEquals("F20180023BUYER", $paymentReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsDocumentCopy
-     */
+        $this->assertSame("", $creditorReferenceID);
+        $this->assertSame("F20180023BUYER", $paymentReference);
+    }
+
     public function testDocumentIsCopy(): void
     {
@@ -116,7 +102,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsTestDocument
-     */
     public function testDocumentIsTestDocument(): void
     {
@@ -125,46 +108,34 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSummation
-     */
     public function testDocumentSummation(): void
     {
         self::$document->getDocumentSummation($grandTotalAmount, $duePayableAmount, $lineTotalAmount, $chargeTotalAmount, $allowanceTotalAmount, $taxBasisTotalAmount, $taxTotalAmount, $roundingAmount, $totalPrepaidAmount);
-        $this->assertEquals(110.0, $grandTotalAmount);
-        $this->assertEquals(100.0, $duePayableAmount);
-        $this->assertEquals(95.0, $lineTotalAmount);
-        $this->assertEquals(10.0, $chargeTotalAmount);
-        $this->assertEquals(5.0, $allowanceTotalAmount);
-        $this->assertEquals(100.0, $taxBasisTotalAmount);
-        $this->assertEquals(10.0, $taxTotalAmount);
-        $this->assertEquals(0.00, $roundingAmount);
-        $this->assertEquals(10.00, $totalPrepaidAmount);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerReference
-     */
+        $this->assertEqualsWithDelta(110.0, $grandTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(100.0, $duePayableAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(95.0, $lineTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.0, $chargeTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(5.0, $allowanceTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(100.0, $taxBasisTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.0, $taxTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.00, $roundingAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.00, $totalPrepaidAmount, PHP_FLOAT_EPSILON);
+    }
+
     public function testGetDocumentBuyerReference(): void
     {
         self::$document->getDocumentBuyerReference($buyerReference);
-        $this->assertEquals("SERVEXEC", $buyerReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSeller
-     */
+        $this->assertSame("SERVEXEC", $buyerReference);
+    }
+
     public function testDocumentSellerGeneral(): void
     {
         self::$document->getDocumentSeller($sellername, $sellerids, $sellerdescription);
-        $this->assertEquals("LE FOURNISSEUR", $sellername);
+        $this->assertSame("LE FOURNISSEUR", $sellername);
         $this->assertIsArray($sellerids);
         $this->assertArrayNotHasKey(0, $sellerids);
         $this->assertArrayNotHasKey(1, $sellerids);
-        $this->assertEquals("", $sellerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerGlobalId
-     */
+        $this->assertSame("", $sellerdescription);
+    }
+
     public function testDocumentSellerGlobalId(): void
     {
@@ -175,7 +146,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRegistration
-     */
     public function testDocumentSellerTaxRegistration(): void
     {
@@ -190,36 +158,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerAddress
-     */
     public function testDocumentSellerAddress(): void
     {
         self::$document->getDocumentSellerAddress($sellerlineone, $sellerlinetwo, $sellerlinethree, $sellerpostcode, $sellercity, $sellercountry, $sellersubdivision);
-        $this->assertEquals("35 rue d'ici", $sellerlineone);
-        $this->assertEquals("Seller line 2", $sellerlinetwo);
-        $this->assertEquals("", $sellerlinethree);
-        $this->assertEquals("75018", $sellerpostcode);
-        $this->assertEquals("PARIS", $sellercity);
-        $this->assertEquals("FR", $sellercountry);
+        $this->assertSame("35 rue d'ici", $sellerlineone);
+        $this->assertSame("Seller line 2", $sellerlinetwo);
+        $this->assertSame("", $sellerlinethree);
+        $this->assertSame("75018", $sellerpostcode);
+        $this->assertSame("PARIS", $sellercity);
+        $this->assertSame("FR", $sellercountry);
         $this->assertIsArray($sellersubdivision);
         $this->assertEmpty($sellersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerLegalOrganisation
-     */
     public function testDocumentSellerLegalOrganization(): void
     {
         self::$document->getDocumentSellerLegalOrganisation($sellerlegalorgid, $sellerlegalorgtype, $sellerlegalorgname);
-        $this->assertEquals("12345678900014", $sellerlegalorgid);
-        $this->assertEquals("0002", $sellerlegalorgtype);
-        $this->assertEquals("SELLER TRADE NAME", $sellerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerContact
-     */
+        $this->assertSame("12345678900014", $sellerlegalorgid);
+        $this->assertSame("0002", $sellerlegalorgtype);
+        $this->assertSame("SELLER TRADE NAME", $sellerlegalorgname);
+    }
+
     public function testDocumentSellerContact(): void
     {
@@ -233,20 +190,21 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyer
-     */
+    public function testGetDocumentSellerCommunication(): void
+    {
+        self::$document->getDocumentSellerCommunication($uriScheme, $uri);
+        $this->assertSame("EM", $uriScheme);
+        $this->assertSame("moi@seller.com", $uri);
+    }
+
     public function testDocumentBuyerGeneral(): void
     {
         self::$document->getDocumentBuyer($buyername, $buyerids, $buyerdescription);
-        $this->assertEquals("LE CLIENT", $buyername);
+        $this->assertSame("LE CLIENT", $buyername);
         $this->assertIsArray($buyerids);
         $this->assertArrayNotHasKey(0, $buyerids);
         $this->assertArrayNotHasKey(1, $buyerids);
-        $this->assertEquals("", $buyerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerGlobalId
-     */
+        $this->assertSame("", $buyerdescription);
+    }
+
     public function testDocumentBuyerGlobalId(): void
     {
@@ -257,7 +215,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerTaxRegistration
-     */
     public function testDocumentBuyerTaxRegistration(): void
     {
@@ -272,36 +227,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerAddress
-     */
     public function testDocumentBuyerAddress(): void
     {
         self::$document->getDocumentBuyerAddress($buyerlineone, $buyerlinetwo, $buyerlinethree, $buyerpostcode, $buyercity, $buyercountry, $buyersubdivision);
-        $this->assertEquals("58 rue de la mer", $buyerlineone);
-        $this->assertEquals("Buyer line 2", $buyerlinetwo);
-        $this->assertEquals("", $buyerlinethree);
-        $this->assertEquals("06000", $buyerpostcode);
-        $this->assertEquals("NICE", $buyercity);
-        $this->assertEquals("FR", $buyercountry);
+        $this->assertSame("58 rue de la mer", $buyerlineone);
+        $this->assertSame("Buyer line 2", $buyerlinetwo);
+        $this->assertSame("", $buyerlinethree);
+        $this->assertSame("06000", $buyerpostcode);
+        $this->assertSame("NICE", $buyercity);
+        $this->assertSame("FR", $buyercountry);
         $this->assertIsArray($buyersubdivision);
         $this->assertEmpty($buyersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerLegalOrganisation
-     */
     public function testDocumentBuyerLegalOrganization(): void
     {
         self::$document->getDocumentBuyerLegalOrganisation($buyerlegalorgid, $buyerlegalorgtype, $buyerlegalorgname);
-        $this->assertEquals("98765432100029", $buyerlegalorgid);
-        $this->assertEquals("0002", $buyerlegalorgtype);
-        $this->assertEquals("", $buyerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentBuyerContact
-     */
+        $this->assertSame("98765432100029", $buyerlegalorgid);
+        $this->assertSame("0002", $buyerlegalorgtype);
+        $this->assertSame("", $buyerlegalorgname);
+    }
+
     public function testDocumentBuyerContact(): void
     {
@@ -315,19 +259,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentative
-     */
+    public function testGetDocumentBuyerCommunication(): void
+    {
+        self::$document->getDocumentBuyerCommunication($uriScheme, $uri);
+        $this->assertSame("EM", $uriScheme);
+        $this->assertSame("me@buyer.com", $uri);
+    }
+
     public function testDocumentSellerTaxRepresentativeGeneral(): void
     {
         self::$document->getDocumentSellerTaxRepresentative($sellertaxreprname, $sellertaxreprids, $sellertaxreprdescription);
-        $this->assertEquals("", $sellertaxreprname);
+        $this->assertSame("", $sellertaxreprname);
         $this->assertIsArray($sellertaxreprids);
         $this->assertEmpty($sellertaxreprids);
-        $this->assertEquals("", $sellertaxreprdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeGlobalId
-     */
+        $this->assertSame("", $sellertaxreprdescription);
+    }
+
     public function testDocumentSellerTaxRepresentativeGlobalId(): void
     {
@@ -337,7 +282,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeTaxRegistration
-     */
     public function testDocumentSellerTaxRepresentativeTaxRegistration(): void
     {
@@ -347,36 +289,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeAddress
-     */
     public function testDocumentSellerTaxRepresentativeAddress(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeAddress($sellertaxreprlineone, $sellertaxreprlinetwo, $sellertaxreprlinethree, $sellertaxreprpostcode, $sellertaxreprcity, $sellertaxreprcountry, $sellertaxreprsubdivision);
-        $this->assertEquals("", $sellertaxreprlineone);
-        $this->assertEquals("", $sellertaxreprlinetwo);
-        $this->assertEquals("", $sellertaxreprlinethree);
-        $this->assertEquals("", $sellertaxreprpostcode);
-        $this->assertEquals("", $sellertaxreprcity);
-        $this->assertEquals("", $sellertaxreprcountry);
+        $this->assertSame("", $sellertaxreprlineone);
+        $this->assertSame("", $sellertaxreprlinetwo);
+        $this->assertSame("", $sellertaxreprlinethree);
+        $this->assertSame("", $sellertaxreprpostcode);
+        $this->assertSame("", $sellertaxreprcity);
+        $this->assertSame("", $sellertaxreprcountry);
         $this->assertIsArray($sellertaxreprsubdivision);
         $this->assertEmpty($sellertaxreprsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeLegalOrganisation
-     */
     public function testDocumentSellerTaxRepresentativeLegalOrganization(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeLegalOrganisation($sellertaxreprlegalorgid, $sellertaxreprlegalorgtype, $sellertaxreprlegalorgname);
-        $this->assertEquals("", $sellertaxreprlegalorgid);
-        $this->assertEquals("", $sellertaxreprlegalorgtype);
-        $this->assertEquals("", $sellertaxreprlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerTaxRepresentativeContact
-     */
+        $this->assertSame("", $sellertaxreprlegalorgid);
+        $this->assertSame("", $sellertaxreprlegalorgtype);
+        $this->assertSame("", $sellertaxreprlegalorgname);
+    }
+
     public function testDocumentSellerTaxRepresentativeContact(): void
     {
@@ -390,19 +321,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipTo
-     */
     public function testDocumentShipToGeneral(): void
     {
         self::$document->getDocumentShipTo($shiptoname, $shiptoids, $shiptodescription);
-        $this->assertEquals("DEL Name", $shiptoname);
+        $this->assertSame("DEL Name", $shiptoname);
         $this->assertIsArray($shiptoids);
         $this->assertEmpty($shiptoids);
-        $this->assertEquals("", $shiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToGlobalId
-     */
+        $this->assertSame("", $shiptodescription);
+    }
+
     public function testDocumentShipToGlobalId(): void
     {
@@ -413,7 +338,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToTaxRegistration
-     */
     public function testDocumentShipToTaxRegistration(): void
     {
@@ -423,36 +345,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToAddress
-     */
     public function testDocumentShipToAddress(): void
     {
         self::$document->getDocumentShipToAddress($shiptolineone, $shiptolinetwo, $shiptolinethree, $shiptopostcode, $shiptocity, $shiptocountry, $shiptosubdivision);
-        $this->assertEquals("DEL 58 rue de la mer", $shiptolineone);
-        $this->assertEquals("DEL line 2", $shiptolinetwo);
-        $this->assertEquals("", $shiptolinethree);
-        $this->assertEquals("06000", $shiptopostcode);
-        $this->assertEquals("NICE", $shiptocity);
-        $this->assertEquals("FR", $shiptocountry);
+        $this->assertSame("DEL 58 rue de la mer", $shiptolineone);
+        $this->assertSame("DEL line 2", $shiptolinetwo);
+        $this->assertSame("", $shiptolinethree);
+        $this->assertSame("06000", $shiptopostcode);
+        $this->assertSame("NICE", $shiptocity);
+        $this->assertSame("FR", $shiptocountry);
         $this->assertIsArray($shiptosubdivision);
         $this->assertEmpty($shiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToLegalOrganisation
-     */
     public function testDocumentShipToLegalOrganization(): void
     {
         self::$document->getDocumentShipToLegalOrganisation($shiptolegalorgid, $shiptolegalorgtype, $shiptolegalorgname);
-        $this->assertEquals("", $shiptolegalorgid);
-        $this->assertEquals("", $shiptolegalorgtype);
-        $this->assertEquals("", $shiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipToContact
-     */
+        $this->assertSame("", $shiptolegalorgid);
+        $this->assertSame("", $shiptolegalorgtype);
+        $this->assertSame("", $shiptolegalorgname);
+    }
+
     public function testDocumentShipToContact(): void
     {
@@ -466,19 +377,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipTo
-     */
     public function testDocumentUltimateShipToGeneral(): void
     {
         self::$document->getDocumentUltimateShipTo($ultimateshiptoname, $ultimateshiptoids, $ultimateshiptodescription);
-        $this->assertEquals("", $ultimateshiptoname);
+        $this->assertSame("", $ultimateshiptoname);
         $this->assertIsArray($ultimateshiptoids);
         $this->assertEmpty($ultimateshiptoids);
-        $this->assertEquals("", $ultimateshiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToGlobalId
-     */
+        $this->assertSame("", $ultimateshiptodescription);
+    }
+
     public function testDocumentUltimateShipToGlobalId(): void
     {
@@ -488,7 +393,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToTaxRegistration
-     */
     public function testDocumentUltimateShipToTaxRegistration(): void
     {
@@ -498,36 +400,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToAddress
-     */
     public function testDocumentUltimateShipToAddress(): void
     {
         self::$document->getDocumentUltimateShipToAddress($ultimateshiptolineone, $ultimateshiptolinetwo, $ultimateshiptolinethree, $ultimateshiptopostcode, $ultimateshiptocity, $ultimateshiptocountry, $ultimateshiptosubdivision);
-        $this->assertEquals("", $ultimateshiptolineone);
-        $this->assertEquals("", $ultimateshiptolinetwo);
-        $this->assertEquals("", $ultimateshiptolinethree);
-        $this->assertEquals("", $ultimateshiptopostcode);
-        $this->assertEquals("", $ultimateshiptocity);
-        $this->assertEquals("", $ultimateshiptocountry);
+        $this->assertSame("", $ultimateshiptolineone);
+        $this->assertSame("", $ultimateshiptolinetwo);
+        $this->assertSame("", $ultimateshiptolinethree);
+        $this->assertSame("", $ultimateshiptopostcode);
+        $this->assertSame("", $ultimateshiptocity);
+        $this->assertSame("", $ultimateshiptocountry);
         $this->assertIsArray($ultimateshiptosubdivision);
         $this->assertEmpty($ultimateshiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToLegalOrganisation
-     */
     public function testDocumentUltimateShipToLegalOrganization(): void
     {
         self::$document->getDocumentUltimateShipToLegalOrganisation($ultimateshiptolegalorgid, $ultimateshiptolegalorgtype, $ultimateshiptolegalorgname);
-        $this->assertEquals("", $ultimateshiptolegalorgid);
-        $this->assertEquals("", $ultimateshiptolegalorgtype);
-        $this->assertEquals("", $ultimateshiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateShipToContact
-     */
+        $this->assertSame("", $ultimateshiptolegalorgid);
+        $this->assertSame("", $ultimateshiptolegalorgtype);
+        $this->assertSame("", $ultimateshiptolegalorgname);
+    }
+
     public function testDocumentUltimateShipToContact(): void
     {
@@ -546,19 +437,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFrom
-     */
     public function testDocumentShipFromGeneral(): void
     {
         self::$document->getDocumentShipFrom($shipfromname, $shipfromids, $shipfromdescription);
-        $this->assertEquals("", $shipfromname);
+        $this->assertSame("", $shipfromname);
         $this->assertIsArray($shipfromids);
         $this->assertEmpty($shipfromids);
-        $this->assertEquals("", $shipfromdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromGlobalId
-     */
+        $this->assertSame("", $shipfromdescription);
+    }
+
     public function testDocumentShipFromGlobalId(): void
     {
@@ -568,7 +453,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromTaxRegistration
-     */
     public function testDocumentShipFromTaxRegistration(): void
     {
@@ -578,36 +460,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromAddress
-     */
     public function testDocumentShipFromAddress(): void
     {
         self::$document->getDocumentShipFromAddress($shipfromlineone, $shipfromlinetwo, $shipfromlinethree, $shipfrompostcode, $shipfromcity, $shipfromcountry, $shipfromsubdivision);
-        $this->assertEquals("", $shipfromlineone);
-        $this->assertEquals("", $shipfromlinetwo);
-        $this->assertEquals("", $shipfromlinethree);
-        $this->assertEquals("", $shipfrompostcode);
-        $this->assertEquals("", $shipfromcity);
-        $this->assertEquals("", $shipfromcountry);
+        $this->assertSame("", $shipfromlineone);
+        $this->assertSame("", $shipfromlinetwo);
+        $this->assertSame("", $shipfromlinethree);
+        $this->assertSame("", $shipfrompostcode);
+        $this->assertSame("", $shipfromcity);
+        $this->assertSame("", $shipfromcountry);
         $this->assertIsArray($shipfromsubdivision);
         $this->assertEmpty($shipfromsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromLegalOrganisation
-     */
     public function testDocumentShipFromLegalOrganization(): void
     {
         self::$document->getDocumentShipFromLegalOrganisation($shipfromlegalorgid, $shipfromlegalorgtype, $shipfromlegalorgname);
-        $this->assertEquals("", $shipfromlegalorgid);
-        $this->assertEquals("", $shipfromlegalorgtype);
-        $this->assertEquals("", $shipfromlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipFromContact
-     */
+        $this->assertSame("", $shipfromlegalorgid);
+        $this->assertSame("", $shipfromlegalorgtype);
+        $this->assertSame("", $shipfromlegalorgname);
+    }
+
     public function testDocumentShipFromContact(): void
     {
@@ -626,19 +497,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicer
-     */
     public function testDocumentInvoicerGeneral(): void
     {
         self::$document->getDocumentInvoicer($invoicername, $invoicerids, $invoicerdescription);
-        $this->assertEquals("", $invoicername);
+        $this->assertSame("", $invoicername);
         $this->assertIsArray($invoicerids);
         $this->assertEmpty($invoicerids);
-        $this->assertEquals("", $invoicerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerGlobalId
-     */
+        $this->assertSame("", $invoicerdescription);
+    }
+
     public function testDocumentInvoicerGlobalId(): void
     {
@@ -648,7 +513,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerTaxRegistration
-     */
     public function testDocumentInvoicerTaxRegistration(): void
     {
@@ -658,36 +520,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerAddress
-     */
     public function testDocumentInvoicerAddress(): void
     {
         self::$document->getDocumentInvoicerAddress($invoicerlineone, $invoicerlinetwo, $invoicerlinethree, $invoicerpostcode, $invoicercity, $invoicercountry, $invoicersubdivision);
-        $this->assertEquals("", $invoicerlineone);
-        $this->assertEquals("", $invoicerlinetwo);
-        $this->assertEquals("", $invoicerlinethree);
-        $this->assertEquals("", $invoicerpostcode);
-        $this->assertEquals("", $invoicercity);
-        $this->assertEquals("", $invoicercountry);
+        $this->assertSame("", $invoicerlineone);
+        $this->assertSame("", $invoicerlinetwo);
+        $this->assertSame("", $invoicerlinethree);
+        $this->assertSame("", $invoicerpostcode);
+        $this->assertSame("", $invoicercity);
+        $this->assertSame("", $invoicercountry);
         $this->assertIsArray($invoicersubdivision);
         $this->assertEmpty($invoicersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerLegalOrganisation
-     */
     public function testDocumentInvoicerLegalOrganization(): void
     {
         self::$document->getDocumentInvoicerLegalOrganisation($invoicerlegalorgid, $invoicerlegalorgtype, $invoicerlegalorgname);
-        $this->assertEquals("", $invoicerlegalorgid);
-        $this->assertEquals("", $invoicerlegalorgtype);
-        $this->assertEquals("", $invoicerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoicerContact
-     */
+        $this->assertSame("", $invoicerlegalorgid);
+        $this->assertSame("", $invoicerlegalorgtype);
+        $this->assertSame("", $invoicerlegalorgname);
+    }
+
     public function testDocumentInvoicerContact(): void
     {
@@ -706,19 +557,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicee
-     */
     public function testDocumentInvoiceeGeneral(): void
     {
         self::$document->getDocumentInvoicee($invoiceename, $invoiceeids, $invoiceedescription);
-        $this->assertEquals("", $invoiceename);
+        $this->assertSame("", $invoiceename);
         $this->assertIsArray($invoiceeids);
         $this->assertEmpty($invoiceeids);
-        $this->assertEquals("", $invoiceedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeGlobalId
-     */
+        $this->assertSame("", $invoiceedescription);
+    }
+
     public function testDocumentInvoiceeGlobalId(): void
     {
@@ -728,7 +573,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeTaxRegistration
-     */
     public function testDocumentInvoiceeTaxRegistration(): void
     {
@@ -738,36 +580,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeAddress
-     */
     public function testDocumentInvoiceeAddress(): void
     {
         self::$document->getDocumentInvoiceeAddress($invoiceelineone, $invoiceelinetwo, $invoiceelinethree, $invoiceepostcode, $invoiceecity, $invoiceecountry, $invoiceesubdivision);
-        $this->assertEquals("", $invoiceelineone);
-        $this->assertEquals("", $invoiceelinetwo);
-        $this->assertEquals("", $invoiceelinethree);
-        $this->assertEquals("", $invoiceepostcode);
-        $this->assertEquals("", $invoiceecity);
-        $this->assertEquals("", $invoiceecountry);
+        $this->assertSame("", $invoiceelineone);
+        $this->assertSame("", $invoiceelinetwo);
+        $this->assertSame("", $invoiceelinethree);
+        $this->assertSame("", $invoiceepostcode);
+        $this->assertSame("", $invoiceecity);
+        $this->assertSame("", $invoiceecountry);
         $this->assertIsArray($invoiceesubdivision);
         $this->assertEmpty($invoiceesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeLegalOrganisation
-     */
     public function testDocumentInvoiceeLegalOrganization(): void
     {
         self::$document->getDocumentInvoiceeLegalOrganisation($invoiceelegalorgid, $invoiceelegalorgtype, $invoiceelegalorgname);
-        $this->assertEquals("", $invoiceelegalorgid);
-        $this->assertEquals("", $invoiceelegalorgtype);
-        $this->assertEquals("", $invoiceelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoiceeContact
-     */
+        $this->assertSame("", $invoiceelegalorgid);
+        $this->assertSame("", $invoiceelegalorgtype);
+        $this->assertSame("", $invoiceelegalorgname);
+    }
+
     public function testDocumentInvoiceeContact(): void
     {
@@ -786,19 +617,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayee
-     */
     public function testDocumentPayeeGeneral(): void
     {
         self::$document->getDocumentPayee($payeename, $payeeids, $payeedescription);
-        $this->assertEquals("", $payeename);
+        $this->assertSame("", $payeename);
         $this->assertIsArray($payeeids);
         $this->assertEmpty($payeeids);
-        $this->assertEquals("", $payeedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeGlobalId
-     */
+        $this->assertSame("", $payeedescription);
+    }
+
     public function testDocumentPayeeGlobalId(): void
     {
@@ -808,7 +633,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeTaxRegistration
-     */
     public function testDocumentPayeeTaxRegistration(): void
     {
@@ -818,36 +640,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeAddress
-     */
     public function testDocumentPayeeAddress(): void
     {
         self::$document->getDocumentPayeeAddress($payeelineone, $payeelinetwo, $payeelinethree, $payeepostcode, $payeecity, $payeecountry, $payeesubdivision);
-        $this->assertEquals("", $payeelineone);
-        $this->assertEquals("", $payeelinetwo);
-        $this->assertEquals("", $payeelinethree);
-        $this->assertEquals("", $payeepostcode);
-        $this->assertEquals("", $payeecity);
-        $this->assertEquals("", $payeecountry);
+        $this->assertSame("", $payeelineone);
+        $this->assertSame("", $payeelinetwo);
+        $this->assertSame("", $payeelinethree);
+        $this->assertSame("", $payeepostcode);
+        $this->assertSame("", $payeecity);
+        $this->assertSame("", $payeecountry);
         $this->assertIsArray($payeesubdivision);
         $this->assertEmpty($payeesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeLegalOrganisation
-     */
     public function testDocumentPayeeLegalOrganization(): void
     {
         self::$document->getDocumentPayeeLegalOrganisation($payeelegalorgid, $payeelegalorgtype, $payeelegalorgname);
-        $this->assertEquals("", $payeelegalorgid);
-        $this->assertEquals("", $payeelegalorgtype);
-        $this->assertEquals("", $payeelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPayeeContact
-     */
+        $this->assertSame("", $payeelegalorgid);
+        $this->assertSame("", $payeelegalorgtype);
+        $this->assertSame("", $payeelegalorgname);
+    }
+
     public function testDocumentPayeeContact(): void
     {
@@ -866,20 +677,14 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUser
-     */
     public function testDocumentProductEndUserGeneral(): void
     {
         self::$document->getDocumentProductEndUser($producendusername, $producenduserids, $producenduserdescription);
-        $this->assertEquals("", $producendusername);
+        $this->assertSame("", $producendusername);
         $this->assertIsArray($producenduserids);
         $this->assertArrayNotHasKey(0, $producenduserids);
         $this->assertArrayNotHasKey(1, $producenduserids);
-        $this->assertEquals("", $producenduserdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserGlobalId
-     */
+        $this->assertSame("", $producenduserdescription);
+    }
+
     public function testDocumentProductEndUserGlobalId(): void
     {
@@ -889,7 +694,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserTaxRegistration
-     */
     public function testDocumentProductEndUserTaxRegistration(): void
     {
@@ -903,36 +705,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserAddress
-     */
     public function testDocumentProductEndUserAddress(): void
     {
         self::$document->getDocumentProductEndUserAddress($producenduserlineone, $producenduserlinetwo, $producenduserlinethree, $producenduserpostcode, $producendusercity, $producendusercountry, $producendusersubdivision);
-        $this->assertEquals("", $producenduserlineone);
-        $this->assertEquals("", $producenduserlinetwo);
-        $this->assertEquals("", $producenduserlinethree);
-        $this->assertEquals("", $producenduserpostcode);
-        $this->assertEquals("", $producendusercity);
-        $this->assertEquals("", $producendusercountry);
+        $this->assertSame("", $producenduserlineone);
+        $this->assertSame("", $producenduserlinetwo);
+        $this->assertSame("", $producenduserlinethree);
+        $this->assertSame("", $producenduserpostcode);
+        $this->assertSame("", $producendusercity);
+        $this->assertSame("", $producendusercountry);
         $this->assertIsArray($producendusersubdivision);
         $this->assertEmpty($producendusersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserLegalOrganisation
-     */
     public function testDocumentProductEndUserLegalOrganization(): void
     {
         self::$document->getDocumentProductEndUserLegalOrganisation($producenduserlegalorgid, $producenduserlegalorgtype, $producenduserlegalorgname);
-        $this->assertEquals("", $producenduserlegalorgid);
-        $this->assertEquals("", $producenduserlegalorgtype);
-        $this->assertEquals("", $producenduserlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentProductEndUserContactContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentProductEndUserContactContact
-     */
+        $this->assertSame("", $producenduserlegalorgid);
+        $this->assertSame("", $producenduserlegalorgtype);
+        $this->assertSame("", $producenduserlegalorgname);
+    }
+
     public function testDocumentProductEndUserContact(): void
     {
@@ -946,37 +737,32 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerOrderReferencedDocument
-     */
     public function testDocumentSellerOrderReferencedDocument(): void
     {
         self::$document->getDocumentSellerOrderReferencedDocument($sellerorderrefdocid, $sellerorderrefdocdate);
-        $this->assertEquals("SALES REF 2547", $sellerorderrefdocid);
-        $this->assertNull($sellerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerOrderReferencedDocument
-     */
+        $this->assertSame("SALES REF 2547", $sellerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $sellerorderrefdocdate);
+    }
+
     public function testDocumentBuyerOrderReferencedDocument(): void
     {
         self::$document->getDocumentBuyerOrderReferencedDocument($buyerorderrefdocid, $buyerorderrefdocdate);
-        $this->assertEquals("PO201925478", $buyerorderrefdocid);
-        $this->assertNull($buyerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentContractReferencedDocument
-     */
+        $this->assertSame("PO201925478", $buyerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $buyerorderrefdocdate);
+    }
+
+    public function testDocumentQuotationReferencedDocument(): void
+    {
+        self::$document->getDocumentQuotationReferencedDocument($quotationrefdocid, $quotationrefdocdate);
+        $this->assertSame("", $quotationrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $quotationrefdocdate);
+    }
+
     public function testDocumentContractReferencedDocument(): void
     {
         self::$document->getDocumentContractReferencedDocument($contractrefdocid, $contractrefdocdate);
-        $this->assertEquals("CT2018120802", $contractrefdocid);
-        $this->assertNull($contractrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocuments
-     */
+        $this->assertSame("CT2018120802", $contractrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $contractrefdocdate);
+    }
+
     public function testDocumentAdditionalReferencedDocuments(): void
     {
@@ -992,61 +778,40 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProcuringProject
-     */
     public function testDocumentProcuringProject(): void
     {
         self::$document->getDocumentProcuringProject($projectid, $projectname);
-        $this->assertEquals("PROJET2547", $projectid);
-        $this->assertEquals("Project reference", $projectname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSupplyChainEvent
-     */
+        $this->assertSame("PROJET2547", $projectid);
+        $this->assertSame("Project reference", $projectname);
+    }
+
     public function testDocumentSupplyChainEvent(): void
     {
         self::$document->getDocumentSupplyChainEvent($supplychainevent);
-        $this->assertNotNull($supplychainevent);
+        $this->assertInstanceOf(\DateTime::class, $supplychainevent);
         $this->assertInstanceOf("DateTime", $supplychainevent);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20200115'))->format('Ymd'), $supplychainevent->format('Ymd'));
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDespatchAdviceReferencedDocument
-     */
     public function testDocumentDespatchAdviceReferencedDocument(): void
     {
         self::$document->getDocumentDespatchAdviceReferencedDocument($despatchdocid, $despatchdocdate);
-        $this->assertEquals("DESPADV002", $despatchdocid);
-        $this->assertNull($despatchdocdate);
-        $this->assertNotInstanceOf("DateTime", $despatchdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentReceivingAdviceReferencedDocument
-     */
+        $this->assertSame("DESPADV002", $despatchdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $despatchdocdate);
+    }
+
     public function testDocumentReceivingAdviceReferencedDocument(): void
     {
         self::$document->getDocumentReceivingAdviceReferencedDocument($recadvid, $recadvdate);
-        $this->assertEquals("RECEIV-ADV002", $recadvid);
-        $this->assertNull($recadvdate);
-        $this->assertNotInstanceOf("DateTime", $recadvdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryNoteReferencedDocument
-     */
+        $this->assertSame("RECEIV-ADV002", $recadvid);
+        $this->assertNotInstanceOf(\DateTime::class, $recadvdate);
+    }
+
     public function testDocumentDeliveryNoteReferencedDocument(): void
     {
         self::$document->getDocumentDeliveryNoteReferencedDocument($deliverynoterefdocid, $deliverynoterefdocdate);
-        $this->assertEquals("", $deliverynoterefdocid);
-        $this->assertNull($deliverynoterefdocdate);
-        $this->assertNotInstanceOf("DateTime", $deliverynoterefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBillingPeriod
-     */
+        $this->assertSame("", $deliverynoterefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $deliverynoterefdocdate);
+    }
+
     public function testDocumentBillingPeriod(): void
     {
@@ -1058,7 +823,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharges
-     */
     public function testDocumentAllowanceCharges(): void
     {
@@ -1066,10 +828,7 @@
         $this->assertIsArray($docallowancecharge);
         $this->assertNotEmpty($docallowancecharge);
-        $this->assertEquals(2, count($docallowancecharge));
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerms
-     */
+        $this->assertCount(2, $docallowancecharge);
+    }
+
     public function testDocumentPaymentTerms(): void
     {
@@ -1087,20 +846,13 @@
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20200215'))->format('Ymd'), $docpaymentterms[0]["duedate"]->format('Ymd'));
         $this->assertEquals("", $docpaymentterms[0]["directdebitmandateid"]);
-        $this->assertEquals(0.0, $docpaymentterms[0]["partialpaymentamount"]);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryTerms
-     */
+        $this->assertEqualsWithDelta(0.0, $docpaymentterms[0]["partialpaymentamount"], PHP_FLOAT_EPSILON);
+    }
+
     public function testDocumentDeliveryTerms(): void
     {
         self::$document->getDocumentDeliveryTerms($devtermcode);
-        $this->assertEquals("", $devtermcode);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument
-     */
+        $this->assertSame("", $devtermcode);
+    }
+
     public function testDocumentAdditionalReferencedDocumentLoop(): void
     {
@@ -1111,27 +863,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocument
-     */
     public function testGetDocumentAdditionalReferencedDocument(): void
     {
         $this->assertTrue(self::$document->firstDocumentAdditionalReferencedDocument());
         self::$document->getDocumentAdditionalReferencedDocument($issuerassignedid, $typecode, $uriid, $name, $reftypecode, $issueddate, $binarydatafilename);
-        $this->assertEquals("SUPPort doc", $issuerassignedid);
-        $this->assertEquals("916", $typecode);
-        $this->assertEquals("url:gffter", $uriid);
+        $this->assertSame("SUPPort doc", $issuerassignedid);
+        $this->assertSame("916", $typecode);
+        $this->assertSame("url:gffter", $uriid);
         $this->assertIsArray($name);
         $this->assertNotEmpty($name);
         $this->assertArrayHasKey(0, $name);
-        $this->assertEquals("", $reftypecode);
-        $this->assertNull($issueddate);
-        $this->assertEquals("", $binarydatafilename);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateCustomerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateCustomerOrderReferencedDocument
-     */
+        $this->assertEquals("support descript", $name[0]);
+        $this->assertSame("", $reftypecode);
+        $this->assertNotInstanceOf(\DateTime::class, $issueddate);
+        $this->assertSame("", $binarydatafilename);
+    }
+
     public function testDocumentUltimateCustomerOrderReferencedDocumentLoop(): void
     {
@@ -1140,8 +885,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextGetDocumentPaymentMeans
-     */
     public function testDocumentPaymentMeansLoop(): void
     {
@@ -1150,28 +891,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentMeans
-     */
     public function testGetDocumentPaymentMeans(): void
     {
         $this->assertTrue(self::$document->firstGetDocumentPaymentMeans());
         self::$document->getDocumentPaymentMeans($typeCode, $information, $cardType, $cardId, $cardHolderName, $buyerIban, $payeeIban, $payeeAccountName, $payeePropId, $payeeBic);
-        $this->assertEquals("30", $typeCode);
-        $this->assertEquals("", $information);
-        $this->assertEquals("", $cardType);
-        $this->assertEquals("", $cardId);
-        $this->assertEquals("", $cardHolderName);
-        $this->assertEquals("", $buyerIban);
-        $this->assertEquals("FR76 1254 2547 2569 8542 5874 698", $payeeIban);
-        $this->assertEquals("", $payeeAccountName);
-        $this->assertEquals("", $payeePropId);
-        $this->assertEquals("", $payeeBic);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     */
+        $this->assertSame("30", $typeCode);
+        $this->assertSame("", $information);
+        $this->assertSame("", $cardType);
+        $this->assertSame("", $cardId);
+        $this->assertSame("", $cardHolderName);
+        $this->assertSame("", $buyerIban);
+        $this->assertSame("FR76 1254 2547 2569 8542 5874 698", $payeeIban);
+        $this->assertSame("", $payeeAccountName);
+        $this->assertSame("", $payeePropId);
+        $this->assertSame("", $payeeBic);
+    }
+
     public function testDocumentTaxLoop(): void
     {
@@ -1180,25 +913,16 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentTax
-     */
     public function testDocumentTax(): void
     {
         $this->assertTrue(self::$document->firstDocumentTax());
         self::$document->getDocumentTax($categoryCode, $typeCode, $basisAmount, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, $lineTotalBasisAmount, $allowanceChargeBasisAmount, $taxPointDate, $dueDateTypeCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(100.0, $basisAmount);
-        $this->assertEquals(10.0, $calculatedAmount);
-        $this->assertEquals(10.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $allowanceChargeBasisAmount);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAllowanceCharge
-     */
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(100.0, $basisAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(10.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $allowanceChargeBasisAmount, PHP_FLOAT_EPSILON);
+    }
+
     public function testtDocumentAllowanceChargeLoop(): void
     {
@@ -1209,45 +933,37 @@
 
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharge
-     */
     public function testtDocumentAllowanceCharge(): void
     {
         $this->assertTrue(self::$document->firstDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(5.0, $actualAmount);
+        $this->assertEqualsWithDelta(5.0, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(10.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(10.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
         $this->assertEquals(0, $basisAmount);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("REMISE COMMERCIALE", $reason);
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("REMISE COMMERCIALE", $reason);
 
         $this->assertTrue(self::$document->nextDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(10.0, $actualAmount);
+        $this->assertEqualsWithDelta(10.0, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertTrue($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(10.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(10.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
         $this->assertEquals(0, $basisAmount);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("FRAIS DEPLACEMENT", $reason);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentLogisticsServiceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentLogisticsServiceCharge
-     */
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("FRAIS DEPLACEMENT", $reason);
+    }
+
     public function testtDocumentLogisticsServiceChargeLoop(): void
     {
@@ -1256,8 +972,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     */
     public function testtDocumentPaymentTermsLoop(): void
     {
@@ -1266,10 +978,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDiscountTermsFromPaymentTerm
-     */
     public function testtDocumentPaymentTerms(): void
     {
@@ -1277,23 +983,37 @@
         self::$document->getDocumentPaymentTerm($termdescription, $termduedate, $termmandate);
         self::$document->getDiscountTermsFromPaymentTerm($dispercent, $discbasedatetime, $discmeasureval, $discmeasureunit, $discbaseamount, $discamount);
-
-        $this->assertEquals("", $termdescription);
+        self::$document->getPenaltyTermsFromPaymentTerm($penaltypercent, $penaltybasedatetime, $penaltymeasureval, $penaltymeasureunit, $penaltybaseamount, $penaltyamount);
+
+        $this->assertSame("", $termdescription);
         $this->assertInstanceOf("DateTime", $termduedate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20200215'))->format('Ymd'), $termduedate->format('Ymd'));
-        $this->assertEquals("", $termmandate);
-        $this->assertEquals(0.0, $dispercent);
-        $this->assertNull($discbasedatetime);
+        $this->assertSame("", $termmandate);
+        $this->assertEqualsWithDelta(0.0, $dispercent, PHP_FLOAT_EPSILON);
+        $this->assertNotInstanceOf(\DateTime::class, $discbasedatetime);
         $this->assertEquals(0, $discmeasureval);
-        $this->assertEquals("", $discmeasureunit);
+        $this->assertSame("", $discmeasureunit);
         $this->assertEquals(0, $discbaseamount);
         $this->assertEquals(0, $discamount);
+        $this->assertNotInstanceOf(\DateTime::class, $penaltybasedatetime);
+        $this->assertEquals(0, $penaltymeasureval);
+        $this->assertSame("", $penaltymeasureunit);
+        $this->assertEquals(0, $penaltybaseamount);
+        $this->assertEquals(0, $penaltyamount);
 
         $this->assertFalse(self::$document->nextDocumentPaymentTerms());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     */
+    public function testDocumentReceivableSpecifiedTradeAccountingAccount(): void
+    {
+        $this->assertTrue(self::$document->firstDocumentReceivableSpecifiedTradeAccountingAccount());
+
+        self::$document->getDocumentReceivableSpecifiedTradeAccountingAccount($accountId, $accountType);
+
+        $this->assertSame("BUYER ACCOUNT REF", $accountId);
+        $this->assertSame("", $accountType);
+
+        $this->assertFalse(self::$document->nextDocumentReceivableSpecifiedTradeAccountingAccount());
+    }
+
     public function testDocumentPositionLoop(): void
     {
@@ -1304,28 +1024,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
     public function testDocumentPositionFirst(): void
     {
@@ -1333,66 +1029,76 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("1", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("1", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("PRESTATION SUPPORT", $prodname);
-        $this->assertEquals("Description", $proddesc);
-        $this->assertEquals("", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("598785412598745", $prodglobalid);
+        $this->assertSame("PRESTATION SUPPORT", $prodname);
+        $this->assertSame("Description", $proddesc);
+        $this->assertSame("", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("598785412598745", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("1", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("1", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(60.0, $netpriceamount);
-        $this->assertEquals(1.0, $netpricebasisquantity);
-        $this->assertEquals("C62", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(60.0, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(1.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("C62", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(1.0, $billedquantity);
-        $this->assertEquals("C62", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(1.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("C62", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
@@ -1413,43 +1119,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(10.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(60.00, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(10.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(60.00, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionSecond(): void
     {
@@ -1457,71 +1138,81 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("2", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("2", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("FOURNITURES DIVERSES", $prodname);
-        $this->assertEquals("Description", $proddesc);
-        $this->assertEquals("", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("", $prodglobalidtype);
-        $this->assertEquals("", $prodglobalid);
+        $this->assertSame("FOURNITURES DIVERSES", $prodname);
+        $this->assertSame("Description", $proddesc);
+        $this->assertSame("", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("", $prodglobalidtype);
+        $this->assertSame("", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("3", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("3", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(10.0, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(10.0, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
         $this->assertEquals(3, $billedquantity);
-        $this->assertEquals("C62", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertSame("C62", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
         $this->assertInstanceOf("DateTime", $docposstartdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20191201'))->format('Ymd'), $docposstartdate->format('Ymd'));
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1536,44 +1227,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(10.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(30.0, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(10.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(30.0, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionThird(): void
     {
@@ -1581,69 +1246,79 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("3", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("3", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("APPEL", $prodname);
-        $this->assertEquals("Description", $proddesc);
-        $this->assertEquals("", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("", $prodglobalidtype);
-        $this->assertEquals("", $prodglobalid);
+        $this->assertSame("APPEL", $prodname);
+        $this->assertSame("Description", $proddesc);
+        $this->assertSame("", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("", $prodglobalidtype);
+        $this->assertSame("", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0000, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0000, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(5.0, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(5.0, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(1.0, $billedquantity);
-        $this->assertEquals("C62", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(1.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("C62", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
         $this->assertInstanceOf("DateTime", $docpostenddate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20191231'))->format('Ymd'), $docpostenddate->format('Ymd'));
@@ -1660,23 +1335,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(10.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(5.0, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(10.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(5.0, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAdditionalReferencedDocument
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionAdditionalReferencedDocument(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderExtendedTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderExtendedTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderExtendedTest.php	(revision 8504)
@@ -3,8 +3,8 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\codelists\ZugferdInvoiceType;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdProfiles;
 
 class ReaderExtendedTest extends TestCase
@@ -17,5 +17,5 @@
     public static function setUpBeforeClass(): void
     {
-        self::$document = ZugferdDocumentReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/extended_invoice.xml");
+        self::$document = ZugferdDocumentReader::readAndGuessFromFile(__DIR__ . "/../assets/xml_extended_1.xml");
     }
 
@@ -28,15 +28,12 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getInvoiceObject
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getSerializer
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getObjectHelper
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getProfileDefinitionParameter
-     */
     public function testDocumentGetters(): void
     {
-        $this->assertNotNull(self::$document->getInvoiceObject());
-        $this->assertNotNull(self::$document->getSerializer());
-        $this->assertNotNull(self::$document->getObjectHelper());
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\extended\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertInstanceOf(\JMS\Serializer\Serializer::class, $this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
+        $this->assertInstanceOf('horstoeko\zugferd\ZugferdObjectHelper', $this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
         $this->assertEquals('extended', self::$document->getProfileDefinitionParameter('name'));
         $this->assertEquals('EXTENDED', self::$document->getProfileDefinitionParameter('altname'));
@@ -44,4 +41,5 @@
         $this->assertEquals('factur-x.xml', self::$document->getProfileDefinitionParameter('attachmentfilename'));
         $this->assertEquals('EXTENDED', self::$document->getProfileDefinitionParameter('xmpname'));
+        $this->assertEquals('1.0', self::$document->getProfileDefinitionParameter('xmpversion'));
         $this->expectNoticeOrWarningExt(
             function () {
@@ -51,24 +49,18 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInformation
-     */
     public function testDocumentGenerals(): void
     {
         self::$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-        $this->assertEquals('KR87654321012', $documentno);
-        $this->assertEquals(ZugferdInvoiceType::INVOICE, $documenttypecode);
-        $this->assertNotNull($documentdate);
+        $this->assertSame('KR87654321012', $documentno);
+        $this->assertSame(ZugferdInvoiceType::INVOICE, $documenttypecode);
+        $this->assertInstanceOf(\DateTime::class, $documentdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20181006'))->format('Ymd'), $documentdate->format('Ymd'));
-        $this->assertEquals("EUR", $invoiceCurrency);
-        $this->assertEquals("", $taxCurrency);
-        $this->assertEquals("KOSTENRECHNUNG", $documentname);
-        $this->assertEquals("", $documentlanguage);
-        $this->assertNull($effectiveSpecifiedPeriod);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentNotes
-     */
+        $this->assertSame("EUR", $invoiceCurrency);
+        $this->assertSame("", $taxCurrency);
+        $this->assertSame("KOSTENRECHNUNG", $documentname);
+        $this->assertSame("", $documentlanguage);
+        $this->assertNotInstanceOf(\DateTime::class, $effectiveSpecifiedPeriod);
+    }
+
     public function testDocumentNotes(): void
     {
@@ -76,5 +68,5 @@
         $this->assertIsArray($notes);
         $this->assertNotEmpty($notes);
-        $this->assertEquals(3, count($notes));
+        $this->assertCount(3, $notes);
         $this->assertArrayHasKey(0, $notes);
         $this->assertArrayHasKey(1, $notes);
@@ -116,17 +108,11 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentGeneralPaymentInformation
-     */
     public function testDocumentGeneralPaymentInformation(): void
     {
         self::$document->getDocumentGeneralPaymentInformation($creditorReferenceID, $paymentReference);
-        $this->assertEquals("", $creditorReferenceID);
-        $this->assertEquals("", $paymentReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsDocumentCopy
-     */
+        $this->assertSame("", $creditorReferenceID);
+        $this->assertSame("", $paymentReference);
+    }
+
     public function testDocumentIsCopy(): void
     {
@@ -135,7 +121,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getIsTestDocument
-     */
     public function testDocumentIsTestDocument(): void
     {
@@ -144,47 +127,35 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSummation
-     */
     public function testDocumentSummation(): void
     {
         self::$document->getDocumentSummation($grandTotalAmount, $duePayableAmount, $lineTotalAmount, $chargeTotalAmount, $allowanceTotalAmount, $taxBasisTotalAmount, $taxTotalAmount, $roundingAmount, $totalPrepaidAmount);
-        $this->assertEquals(480.22, $grandTotalAmount);
-        $this->assertEquals(480.22, $duePayableAmount);
-        $this->assertEquals(410.10, $lineTotalAmount);
-        $this->assertEquals(15.00, $chargeTotalAmount);
-        $this->assertEquals(21.55, $allowanceTotalAmount);
-        $this->assertEquals(403.55, $taxBasisTotalAmount);
-        $this->assertEquals(76.67, $taxTotalAmount);
-        $this->assertEquals(0.00, $roundingAmount);
-        $this->assertEquals(0.00, $totalPrepaidAmount);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerReference
-     */
+        $this->assertEqualsWithDelta(480.22, $grandTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(480.22, $duePayableAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(410.10, $lineTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(15.00, $chargeTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(21.55, $allowanceTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(403.55, $taxBasisTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(76.67, $taxTotalAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.00, $roundingAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.00, $totalPrepaidAmount, PHP_FLOAT_EPSILON);
+    }
+
     public function testGetDocumentBuyerReference(): void
     {
         self::$document->getDocumentBuyerReference($buyerReference);
-        $this->assertEquals("08154712", $buyerReference);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSeller
-     */
+        $this->assertSame("08154712", $buyerReference);
+    }
+
     public function testDocumentSellerGeneral(): void
     {
         self::$document->getDocumentSeller($sellername, $sellerids, $sellerdescription);
-        $this->assertEquals("MUSTERLIEFERANT GMBH", $sellername);
+        $this->assertSame("MUSTERLIEFERANT GMBH", $sellername);
         $this->assertIsArray($sellerids);
         $this->assertArrayHasKey(0, $sellerids);
         $this->assertArrayNotHasKey(1, $sellerids);
         $this->assertEquals("549910", $sellerids[0]);
-        $this->assertEquals("", $sellerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerGlobalId
-     */
+        $this->assertSame("", $sellerdescription);
+    }
+
     public function testDocumentSellerGlobalId(): void
     {
@@ -195,7 +166,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRegistration
-     */
     public function testDocumentSellerTaxRegistration(): void
     {
@@ -210,65 +178,55 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerAddress
-     */
     public function testDocumentSellerAddress(): void
     {
         self::$document->getDocumentSellerAddress($sellerlineone, $sellerlinetwo, $sellerlinethree, $sellerpostcode, $sellercity, $sellercountry, $sellersubdivision);
-        $this->assertEquals("BAHNHOFSTRASSE 99", $sellerlineone);
-        $this->assertEquals("", $sellerlinetwo);
-        $this->assertEquals("", $sellerlinethree);
-        $this->assertEquals("99199", $sellerpostcode);
-        $this->assertEquals("MUSTERHAUSEN", $sellercity);
-        $this->assertEquals("DE", $sellercountry);
+        $this->assertSame("BAHNHOFSTRASSE 99", $sellerlineone);
+        $this->assertSame("", $sellerlinetwo);
+        $this->assertSame("", $sellerlinethree);
+        $this->assertSame("99199", $sellerpostcode);
+        $this->assertSame("MUSTERHAUSEN", $sellercity);
+        $this->assertSame("DE", $sellercountry);
         $this->assertIsArray($sellersubdivision);
         $this->assertEmpty($sellersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerLegalOrganisation
-     */
     public function testDocumentSellerLegalOrganization(): void
     {
         self::$document->getDocumentSellerLegalOrganisation($sellerlegalorgid, $sellerlegalorgtype, $sellerlegalorgname);
-        $this->assertEquals("", $sellerlegalorgid);
-        $this->assertEquals("", $sellerlegalorgtype);
-        $this->assertEquals("", $sellerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerContact
-     */
+        $this->assertSame("", $sellerlegalorgid);
+        $this->assertSame("", $sellerlegalorgtype);
+        $this->assertSame("", $sellerlegalorgname);
+    }
+
     public function testDocumentSellerContact(): void
     {
         $this->assertTrue(self::$document->firstDocumentSellerContact());
         self::$document->getDocumentSellerContact($sellercontactpersonname, $sellercontactdepartmentname, $sellercontactphoneno, $sellercontactfaxno, $sellercontactemailaddr);
-        $this->assertEquals("", $sellercontactpersonname);
-        $this->assertEquals("", $sellercontactdepartmentname);
-        $this->assertEquals("+49 932 431 500", $sellercontactphoneno);
-        $this->assertEquals("", $sellercontactfaxno);
-        $this->assertEquals("max.mustermann@musterlieferant.de", $sellercontactemailaddr);
+        $this->assertSame("", $sellercontactpersonname);
+        $this->assertSame("", $sellercontactdepartmentname);
+        $this->assertSame("+49 932 431 500", $sellercontactphoneno);
+        $this->assertSame("", $sellercontactfaxno);
+        $this->assertSame("max.mustermann@musterlieferant.de", $sellercontactemailaddr);
         $this->assertFalse(self::$document->nextDocumentSellerContact());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyer
-     */
+    public function testGetDocumentSellerCommunication(): void
+    {
+        self::$document->getDocumentSellerCommunication($uriScheme, $uri);
+        $this->assertSame("", $uriScheme);
+        $this->assertSame("", $uri);
+    }
+
     public function testDocumentBuyerGeneral(): void
     {
         self::$document->getDocumentBuyer($buyername, $buyerids, $buyerdescription);
-        $this->assertEquals("MUSTER-KUNDE GMBH", $buyername);
+        $this->assertSame("MUSTER-KUNDE GMBH", $buyername);
         $this->assertIsArray($buyerids);
         $this->assertArrayHasKey(0, $buyerids);
         $this->assertArrayNotHasKey(1, $buyerids);
         $this->assertEquals("339420", $buyerids[0]);
-        $this->assertEquals("", $buyerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerGlobalId
-     */
+        $this->assertSame("", $buyerdescription);
+    }
+
     public function testDocumentBuyerGlobalId(): void
     {
@@ -279,7 +237,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerTaxRegistration
-     */
     public function testDocumentBuyerTaxRegistration(): void
     {
@@ -289,36 +244,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerAddress
-     */
     public function testDocumentBuyerAddress(): void
     {
         self::$document->getDocumentBuyerAddress($buyerlineone, $buyerlinetwo, $buyerlinethree, $buyerpostcode, $buyercity, $buyercountry, $buyersubdivision);
-        $this->assertEquals("KUNDENWEG 88", $buyerlineone);
-        $this->assertEquals("", $buyerlinetwo);
-        $this->assertEquals("", $buyerlinethree);
-        $this->assertEquals("40235", $buyerpostcode);
-        $this->assertEquals("DUESSELDORF", $buyercity);
-        $this->assertEquals("DE", $buyercountry);
+        $this->assertSame("KUNDENWEG 88", $buyerlineone);
+        $this->assertSame("", $buyerlinetwo);
+        $this->assertSame("", $buyerlinethree);
+        $this->assertSame("40235", $buyerpostcode);
+        $this->assertSame("DUESSELDORF", $buyercity);
+        $this->assertSame("DE", $buyercountry);
         $this->assertIsArray($buyersubdivision);
         $this->assertEmpty($buyersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerLegalOrganisation
-     */
     public function testDocumentBuyerLegalOrganization(): void
     {
         self::$document->getDocumentBuyerLegalOrganisation($buyerlegalorgid, $buyerlegalorgtype, $buyerlegalorgname);
-        $this->assertEquals("", $buyerlegalorgid);
-        $this->assertEquals("", $buyerlegalorgtype);
-        $this->assertEquals("", $buyerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentBuyerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentBuyerContact
-     */
+        $this->assertSame("", $buyerlegalorgid);
+        $this->assertSame("", $buyerlegalorgtype);
+        $this->assertSame("", $buyerlegalorgname);
+    }
+
     public function testDocumentBuyerContact(): void
     {
@@ -332,19 +276,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentative
-     */
+    public function testGetDocumentBuyerCommunication(): void
+    {
+        self::$document->getDocumentBuyerCommunication($uriScheme, $uri);
+        $this->assertSame("", $uriScheme);
+        $this->assertSame("", $uri);
+    }
+
     public function testDocumentSellerTaxRepresentativeGeneral(): void
     {
         self::$document->getDocumentSellerTaxRepresentative($sellertaxreprname, $sellertaxreprids, $sellertaxreprdescription);
-        $this->assertEquals("", $sellertaxreprname);
+        $this->assertSame("", $sellertaxreprname);
         $this->assertIsArray($sellertaxreprids);
         $this->assertEmpty($sellertaxreprids);
-        $this->assertEquals("", $sellertaxreprdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeGlobalId
-     */
+        $this->assertSame("", $sellertaxreprdescription);
+    }
+
     public function testDocumentSellerTaxRepresentativeGlobalId(): void
     {
@@ -354,7 +299,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeTaxRegistration
-     */
     public function testDocumentSellerTaxRepresentativeTaxRegistration(): void
     {
@@ -364,36 +306,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeAddress
-     */
     public function testDocumentSellerTaxRepresentativeAddress(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeAddress($sellertaxreprlineone, $sellertaxreprlinetwo, $sellertaxreprlinethree, $sellertaxreprpostcode, $sellertaxreprcity, $sellertaxreprcountry, $sellertaxreprsubdivision);
-        $this->assertEquals("", $sellertaxreprlineone);
-        $this->assertEquals("", $sellertaxreprlinetwo);
-        $this->assertEquals("", $sellertaxreprlinethree);
-        $this->assertEquals("", $sellertaxreprpostcode);
-        $this->assertEquals("", $sellertaxreprcity);
-        $this->assertEquals("", $sellertaxreprcountry);
+        $this->assertSame("", $sellertaxreprlineone);
+        $this->assertSame("", $sellertaxreprlinetwo);
+        $this->assertSame("", $sellertaxreprlinethree);
+        $this->assertSame("", $sellertaxreprpostcode);
+        $this->assertSame("", $sellertaxreprcity);
+        $this->assertSame("", $sellertaxreprcountry);
         $this->assertIsArray($sellertaxreprsubdivision);
         $this->assertEmpty($sellertaxreprsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeLegalOrganisation
-     */
     public function testDocumentSellerTaxRepresentativeLegalOrganization(): void
     {
         self::$document->getDocumentSellerTaxRepresentativeLegalOrganisation($sellertaxreprlegalorgid, $sellertaxreprlegalorgtype, $sellertaxreprlegalorgname);
-        $this->assertEquals("", $sellertaxreprlegalorgid);
-        $this->assertEquals("", $sellertaxreprlegalorgtype);
-        $this->assertEquals("", $sellertaxreprlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentSellerTaxRepresentativeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentSellerTaxRepresentativeContact
-     */
+        $this->assertSame("", $sellertaxreprlegalorgid);
+        $this->assertSame("", $sellertaxreprlegalorgtype);
+        $this->assertSame("", $sellertaxreprlegalorgname);
+    }
+
     public function testDocumentSellerTaxRepresentativeContact(): void
     {
@@ -407,19 +338,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipTo
-     */
     public function testDocumentShipToGeneral(): void
     {
         self::$document->getDocumentShipTo($shiptoname, $shiptoids, $shiptodescription);
-        $this->assertEquals("MUSTER-MARKT", $shiptoname);
+        $this->assertSame("MUSTER-MARKT", $shiptoname);
         $this->assertIsArray($shiptoids);
         $this->assertEmpty($shiptoids);
-        $this->assertEquals("", $shiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToGlobalId
-     */
+        $this->assertSame("", $shiptodescription);
+    }
+
     public function testDocumentShipToGlobalId(): void
     {
@@ -429,7 +354,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToTaxRegistration
-     */
     public function testDocumentShipToTaxRegistration(): void
     {
@@ -439,63 +361,46 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToAddress
-     */
     public function testDocumentShipToAddress(): void
     {
         self::$document->getDocumentShipToAddress($shiptolineone, $shiptolinetwo, $shiptolinethree, $shiptopostcode, $shiptocity, $shiptocountry, $shiptosubdivision);
-        $this->assertEquals("HAUPTSTRASSE 44", $shiptolineone);
-        $this->assertEquals("", $shiptolinetwo);
-        $this->assertEquals("", $shiptolinethree);
-        $this->assertEquals("31157", $shiptopostcode);
-        $this->assertEquals("SARSTEDT", $shiptocity);
-        $this->assertEquals("DE", $shiptocountry);
+        $this->assertSame("HAUPTSTRASSE 44", $shiptolineone);
+        $this->assertSame("", $shiptolinetwo);
+        $this->assertSame("", $shiptolinethree);
+        $this->assertSame("31157", $shiptopostcode);
+        $this->assertSame("SARSTEDT", $shiptocity);
+        $this->assertSame("DE", $shiptocountry);
         $this->assertIsArray($shiptosubdivision);
         $this->assertEmpty($shiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToLegalOrganisation
-     */
     public function testDocumentShipToLegalOrganization(): void
     {
         self::$document->getDocumentShipToLegalOrganisation($shiptolegalorgid, $shiptolegalorgtype, $shiptolegalorgname);
-        $this->assertEquals("", $shiptolegalorgid);
-        $this->assertEquals("", $shiptolegalorgtype);
-        $this->assertEquals("", $shiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipToContact
-     */
+        $this->assertSame("", $shiptolegalorgid);
+        $this->assertSame("", $shiptolegalorgtype);
+        $this->assertSame("", $shiptolegalorgname);
+    }
+
     public function testDocumentShipToContact(): void
     {
         $this->assertTrue(self::$document->firstDocumentShipToContact());
         self::$document->getDocumentShipToContact($shiptocontactpersonname, $shiptocontactdepartmentname, $shiptocontactphoneno, $shiptocontactfaxno, $shiptocontactemailaddr);
-        $this->assertEquals("", $shiptocontactpersonname);
-        $this->assertEquals("7322", $shiptocontactdepartmentname);
-        $this->assertEquals("", $shiptocontactphoneno);
-        $this->assertEquals("", $shiptocontactfaxno);
-        $this->assertEquals("", $shiptocontactemailaddr);
+        $this->assertSame("", $shiptocontactpersonname);
+        $this->assertSame("7322", $shiptocontactdepartmentname);
+        $this->assertSame("", $shiptocontactphoneno);
+        $this->assertSame("", $shiptocontactfaxno);
+        $this->assertSame("", $shiptocontactemailaddr);
         $this->assertFalse(self::$document->nextDocumentShipToContact());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipTo
-     */
     public function testDocumentUltimateShipToGeneral(): void
     {
         self::$document->getDocumentUltimateShipTo($ultimateshiptoname, $ultimateshiptoids, $ultimateshiptodescription);
-        $this->assertEquals("", $ultimateshiptoname);
+        $this->assertSame("", $ultimateshiptoname);
         $this->assertIsArray($ultimateshiptoids);
         $this->assertEmpty($ultimateshiptoids);
-        $this->assertEquals("", $ultimateshiptodescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToGlobalId
-     */
+        $this->assertSame("", $ultimateshiptodescription);
+    }
+
     public function testDocumentUltimateShipToGlobalId(): void
     {
@@ -505,7 +410,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToTaxRegistration
-     */
     public function testDocumentUltimateShipToTaxRegistration(): void
     {
@@ -515,36 +417,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToAddress
-     */
     public function testDocumentUltimateShipToAddress(): void
     {
         self::$document->getDocumentUltimateShipToAddress($ultimateshiptolineone, $ultimateshiptolinetwo, $ultimateshiptolinethree, $ultimateshiptopostcode, $ultimateshiptocity, $ultimateshiptocountry, $ultimateshiptosubdivision);
-        $this->assertEquals("", $ultimateshiptolineone);
-        $this->assertEquals("", $ultimateshiptolinetwo);
-        $this->assertEquals("", $ultimateshiptolinethree);
-        $this->assertEquals("", $ultimateshiptopostcode);
-        $this->assertEquals("", $ultimateshiptocity);
-        $this->assertEquals("", $ultimateshiptocountry);
+        $this->assertSame("", $ultimateshiptolineone);
+        $this->assertSame("", $ultimateshiptolinetwo);
+        $this->assertSame("", $ultimateshiptolinethree);
+        $this->assertSame("", $ultimateshiptopostcode);
+        $this->assertSame("", $ultimateshiptocity);
+        $this->assertSame("", $ultimateshiptocountry);
         $this->assertIsArray($ultimateshiptosubdivision);
         $this->assertEmpty($ultimateshiptosubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToLegalOrganisation
-     */
     public function testDocumentUltimateShipToLegalOrganization(): void
     {
         self::$document->getDocumentUltimateShipToLegalOrganisation($ultimateshiptolegalorgid, $ultimateshiptolegalorgtype, $ultimateshiptolegalorgname);
-        $this->assertEquals("", $ultimateshiptolegalorgid);
-        $this->assertEquals("", $ultimateshiptolegalorgtype);
-        $this->assertEquals("", $ultimateshiptolegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateShipToContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateShipToContact
-     */
+        $this->assertSame("", $ultimateshiptolegalorgid);
+        $this->assertSame("", $ultimateshiptolegalorgtype);
+        $this->assertSame("", $ultimateshiptolegalorgname);
+    }
+
     public function testDocumentUltimateShipToContact(): void
     {
@@ -563,19 +454,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFrom
-     */
     public function testDocumentShipFromGeneral(): void
     {
         self::$document->getDocumentShipFrom($shipfromname, $shipfromids, $shipfromdescription);
-        $this->assertEquals("", $shipfromname);
+        $this->assertSame("", $shipfromname);
         $this->assertIsArray($shipfromids);
         $this->assertEmpty($shipfromids);
-        $this->assertEquals("", $shipfromdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromGlobalId
-     */
+        $this->assertSame("", $shipfromdescription);
+    }
+
     public function testDocumentShipFromGlobalId(): void
     {
@@ -585,7 +470,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromTaxRegistration
-     */
     public function testDocumentShipFromTaxRegistration(): void
     {
@@ -595,36 +477,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromAddress
-     */
     public function testDocumentShipFromAddress(): void
     {
         self::$document->getDocumentShipFromAddress($shipfromlineone, $shipfromlinetwo, $shipfromlinethree, $shipfrompostcode, $shipfromcity, $shipfromcountry, $shipfromsubdivision);
-        $this->assertEquals("", $shipfromlineone);
-        $this->assertEquals("", $shipfromlinetwo);
-        $this->assertEquals("", $shipfromlinethree);
-        $this->assertEquals("", $shipfrompostcode);
-        $this->assertEquals("", $shipfromcity);
-        $this->assertEquals("", $shipfromcountry);
+        $this->assertSame("", $shipfromlineone);
+        $this->assertSame("", $shipfromlinetwo);
+        $this->assertSame("", $shipfromlinethree);
+        $this->assertSame("", $shipfrompostcode);
+        $this->assertSame("", $shipfromcity);
+        $this->assertSame("", $shipfromcountry);
         $this->assertIsArray($shipfromsubdivision);
         $this->assertEmpty($shipfromsubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromLegalOrganisation
-     */
     public function testDocumentShipFromLegalOrganization(): void
     {
         self::$document->getDocumentShipFromLegalOrganisation($shipfromlegalorgid, $shipfromlegalorgtype, $shipfromlegalorgname);
-        $this->assertEquals("", $shipfromlegalorgid);
-        $this->assertEquals("", $shipfromlegalorgtype);
-        $this->assertEquals("", $shipfromlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentShipFromContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentShipFromContact
-     */
+        $this->assertSame("", $shipfromlegalorgid);
+        $this->assertSame("", $shipfromlegalorgtype);
+        $this->assertSame("", $shipfromlegalorgname);
+    }
+
     public function testDocumentShipFromContact(): void
     {
@@ -643,19 +514,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicer
-     */
     public function testDocumentInvoicerGeneral(): void
     {
         self::$document->getDocumentInvoicer($invoicername, $invoicerids, $invoicerdescription);
-        $this->assertEquals("", $invoicername);
+        $this->assertSame("", $invoicername);
         $this->assertIsArray($invoicerids);
         $this->assertEmpty($invoicerids);
-        $this->assertEquals("", $invoicerdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerGlobalId
-     */
+        $this->assertSame("", $invoicerdescription);
+    }
+
     public function testDocumentInvoicerGlobalId(): void
     {
@@ -665,7 +530,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerTaxRegistration
-     */
     public function testDocumentInvoicerTaxRegistration(): void
     {
@@ -675,36 +537,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerAddress
-     */
     public function testDocumentInvoicerAddress(): void
     {
         self::$document->getDocumentInvoicerAddress($invoicerlineone, $invoicerlinetwo, $invoicerlinethree, $invoicerpostcode, $invoicercity, $invoicercountry, $invoicersubdivision);
-        $this->assertEquals("", $invoicerlineone);
-        $this->assertEquals("", $invoicerlinetwo);
-        $this->assertEquals("", $invoicerlinethree);
-        $this->assertEquals("", $invoicerpostcode);
-        $this->assertEquals("", $invoicercity);
-        $this->assertEquals("", $invoicercountry);
+        $this->assertSame("", $invoicerlineone);
+        $this->assertSame("", $invoicerlinetwo);
+        $this->assertSame("", $invoicerlinethree);
+        $this->assertSame("", $invoicerpostcode);
+        $this->assertSame("", $invoicercity);
+        $this->assertSame("", $invoicercountry);
         $this->assertIsArray($invoicersubdivision);
         $this->assertEmpty($invoicersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerLegalOrganisation
-     */
     public function testDocumentInvoicerLegalOrganization(): void
     {
         self::$document->getDocumentInvoicerLegalOrganisation($invoicerlegalorgid, $invoicerlegalorgtype, $invoicerlegalorgname);
-        $this->assertEquals("", $invoicerlegalorgid);
-        $this->assertEquals("", $invoicerlegalorgtype);
-        $this->assertEquals("", $invoicerlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoicerContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoicerContact
-     */
+        $this->assertSame("", $invoicerlegalorgid);
+        $this->assertSame("", $invoicerlegalorgtype);
+        $this->assertSame("", $invoicerlegalorgname);
+    }
+
     public function testDocumentInvoicerContact(): void
     {
@@ -723,20 +574,14 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoicee
-     */
     public function testDocumentInvoiceeGeneral(): void
     {
         self::$document->getDocumentInvoicee($invoiceename, $invoiceeids, $invoiceedescription);
-        $this->assertEquals("MUSTER-KUNDE GMBH", $invoiceename);
+        $this->assertSame("MUSTER-KUNDE GMBH", $invoiceename);
         $this->assertIsArray($invoiceeids);
         $this->assertNotEmpty($invoiceeids);
         $this->assertArrayHasKey(0, $invoiceeids);
-        $this->assertEquals("", $invoiceedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeGlobalId
-     */
+        $this->assertSame("", $invoiceedescription);
+    }
+
     public function testDocumentInvoiceeGlobalId(): void
     {
@@ -748,7 +593,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeTaxRegistration
-     */
     public function testDocumentInvoiceeTaxRegistration(): void
     {
@@ -758,36 +600,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeAddress
-     */
     public function testDocumentInvoiceeAddress(): void
     {
         self::$document->getDocumentInvoiceeAddress($invoiceelineone, $invoiceelinetwo, $invoiceelinethree, $invoiceepostcode, $invoiceecity, $invoiceecountry, $invoiceesubdivision);
-        $this->assertEquals("KUNDENWEG 88", $invoiceelineone);
-        $this->assertEquals("", $invoiceelinetwo);
-        $this->assertEquals("", $invoiceelinethree);
-        $this->assertEquals("40235", $invoiceepostcode);
-        $this->assertEquals("DUESSELDORF", $invoiceecity);
-        $this->assertEquals("DE", $invoiceecountry);
+        $this->assertSame("KUNDENWEG 88", $invoiceelineone);
+        $this->assertSame("", $invoiceelinetwo);
+        $this->assertSame("", $invoiceelinethree);
+        $this->assertSame("40235", $invoiceepostcode);
+        $this->assertSame("DUESSELDORF", $invoiceecity);
+        $this->assertSame("DE", $invoiceecountry);
         $this->assertIsArray($invoiceesubdivision);
         $this->assertEmpty($invoiceesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeLegalOrganisation
-     */
     public function testDocumentInvoiceeLegalOrganization(): void
     {
         self::$document->getDocumentInvoiceeLegalOrganisation($invoiceelegalorgid, $invoiceelegalorgtype, $invoiceelegalorgname);
-        $this->assertEquals("", $invoiceelegalorgid);
-        $this->assertEquals("", $invoiceelegalorgtype);
-        $this->assertEquals("", $invoiceelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentInvoiceeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentInvoiceeContact
-     */
+        $this->assertSame("", $invoiceelegalorgid);
+        $this->assertSame("", $invoiceelegalorgtype);
+        $this->assertSame("", $invoiceelegalorgname);
+    }
+
     public function testDocumentInvoiceeContact(): void
     {
@@ -806,19 +637,13 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayee
-     */
     public function testDocumentPayeeGeneral(): void
     {
         self::$document->getDocumentPayee($payeename, $payeeids, $payeedescription);
-        $this->assertEquals("", $payeename);
+        $this->assertSame("", $payeename);
         $this->assertIsArray($payeeids);
         $this->assertEmpty($payeeids);
-        $this->assertEquals("", $payeedescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeGlobalId
-     */
+        $this->assertSame("", $payeedescription);
+    }
+
     public function testDocumentPayeeGlobalId(): void
     {
@@ -828,7 +653,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeTaxRegistration
-     */
     public function testDocumentPayeeTaxRegistration(): void
     {
@@ -838,36 +660,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeAddress
-     */
     public function testDocumentPayeeAddress(): void
     {
         self::$document->getDocumentPayeeAddress($payeelineone, $payeelinetwo, $payeelinethree, $payeepostcode, $payeecity, $payeecountry, $payeesubdivision);
-        $this->assertEquals("", $payeelineone);
-        $this->assertEquals("", $payeelinetwo);
-        $this->assertEquals("", $payeelinethree);
-        $this->assertEquals("", $payeepostcode);
-        $this->assertEquals("", $payeecity);
-        $this->assertEquals("", $payeecountry);
+        $this->assertSame("", $payeelineone);
+        $this->assertSame("", $payeelinetwo);
+        $this->assertSame("", $payeelinethree);
+        $this->assertSame("", $payeepostcode);
+        $this->assertSame("", $payeecity);
+        $this->assertSame("", $payeecountry);
         $this->assertIsArray($payeesubdivision);
         $this->assertEmpty($payeesubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeLegalOrganisation
-     */
     public function testDocumentPayeeLegalOrganization(): void
     {
         self::$document->getDocumentPayeeLegalOrganisation($payeelegalorgid, $payeelegalorgtype, $payeelegalorgname);
-        $this->assertEquals("", $payeelegalorgid);
-        $this->assertEquals("", $payeelegalorgtype);
-        $this->assertEquals("", $payeelegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPayeeContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPayeeContact
-     */
+        $this->assertSame("", $payeelegalorgid);
+        $this->assertSame("", $payeelegalorgtype);
+        $this->assertSame("", $payeelegalorgname);
+    }
+
     public function testDocumentPayeeContact(): void
     {
@@ -886,20 +697,14 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUser
-     */
     public function testDocumentProductEndUserGeneral(): void
     {
         self::$document->getDocumentProductEndUser($producendusername, $producenduserids, $producenduserdescription);
-        $this->assertEquals("", $producendusername);
+        $this->assertSame("", $producendusername);
         $this->assertIsArray($producenduserids);
         $this->assertArrayNotHasKey(0, $producenduserids);
         $this->assertArrayNotHasKey(1, $producenduserids);
-        $this->assertEquals("", $producenduserdescription);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserGlobalId
-     */
+        $this->assertSame("", $producenduserdescription);
+    }
+
     public function testDocumentProductEndUserGlobalId(): void
     {
@@ -909,7 +714,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserTaxRegistration
-     */
     public function testDocumentProductEndUserTaxRegistration(): void
     {
@@ -923,36 +725,25 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserAddress
-     */
     public function testDocumentProductEndUserAddress(): void
     {
         self::$document->getDocumentProductEndUserAddress($producenduserlineone, $producenduserlinetwo, $producenduserlinethree, $producenduserpostcode, $producendusercity, $producendusercountry, $producendusersubdivision);
-        $this->assertEquals("", $producenduserlineone);
-        $this->assertEquals("", $producenduserlinetwo);
-        $this->assertEquals("", $producenduserlinethree);
-        $this->assertEquals("", $producenduserpostcode);
-        $this->assertEquals("", $producendusercity);
-        $this->assertEquals("", $producendusercountry);
+        $this->assertSame("", $producenduserlineone);
+        $this->assertSame("", $producenduserlinetwo);
+        $this->assertSame("", $producenduserlinethree);
+        $this->assertSame("", $producenduserpostcode);
+        $this->assertSame("", $producendusercity);
+        $this->assertSame("", $producendusercountry);
         $this->assertIsArray($producendusersubdivision);
         $this->assertEmpty($producendusersubdivision);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserLegalOrganisation
-     */
     public function testDocumentProductEndUserLegalOrganization(): void
     {
         self::$document->getDocumentProductEndUserLegalOrganisation($producenduserlegalorgid, $producenduserlegalorgtype, $producenduserlegalorgname);
-        $this->assertEquals("", $producenduserlegalorgid);
-        $this->assertEquals("", $producenduserlegalorgtype);
-        $this->assertEquals("", $producenduserlegalorgname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProductEndUserContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentProductEndUserContactContact
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentProductEndUserContactContact
-     */
+        $this->assertSame("", $producenduserlegalorgid);
+        $this->assertSame("", $producenduserlegalorgtype);
+        $this->assertSame("", $producenduserlegalorgname);
+    }
+
     public function testDocumentProductEndUserContact(): void
     {
@@ -966,37 +757,32 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSellerOrderReferencedDocument
-     */
     public function testDocumentSellerOrderReferencedDocument(): void
     {
         self::$document->getDocumentSellerOrderReferencedDocument($sellerorderrefdocid, $sellerorderrefdocdate);
-        $this->assertEquals("", $sellerorderrefdocid);
-        $this->assertNull($sellerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBuyerOrderReferencedDocument
-     */
+        $this->assertSame("", $sellerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $sellerorderrefdocdate);
+    }
+
     public function testDocumentBuyerOrderReferencedDocument(): void
     {
         self::$document->getDocumentBuyerOrderReferencedDocument($buyerorderrefdocid, $buyerorderrefdocdate);
-        $this->assertEquals("", $buyerorderrefdocid);
-        $this->assertNull($buyerorderrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentContractReferencedDocument
-     */
+        $this->assertSame("", $buyerorderrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $buyerorderrefdocdate);
+    }
+
+    public function testDocumentQuotationReferencedDocument(): void
+    {
+        self::$document->getDocumentQuotationReferencedDocument($quotationrefdocid, $quotationrefdocdate);
+        $this->assertSame("", $quotationrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $quotationrefdocdate);
+    }
+
     public function testDocumentContractReferencedDocument(): void
     {
         self::$document->getDocumentContractReferencedDocument($contractrefdocid, $contractrefdocdate);
-        $this->assertEquals("", $contractrefdocid);
-        $this->assertNull($contractrefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocuments
-     */
+        $this->assertSame("", $contractrefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $contractrefdocdate);
+    }
+
     public function testDocumentAdditionalReferencedDocuments(): void
     {
@@ -1012,73 +798,68 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentProcuringProject
-     */
+    public function testDocumentInvoiceReferencedDocuments(): void
+    {
+        self::$document->getDocumentInvoiceReferencedDocuments($invoicerefdocs);
+        $this->assertIsArray($invoicerefdocs);
+        $this->assertNotEmpty($invoicerefdocs);
+        $this->assertArrayHasKey(0, $invoicerefdocs);
+        $this->assertIsArray($invoicerefdocs[0]);
+        $this->assertArrayHasKey("IssuerAssignedID", $invoicerefdocs[0]);
+        $this->assertArrayHasKey("TypeCode", $invoicerefdocs[0]);
+        $this->assertArrayHasKey("FormattedIssueDateTime", $invoicerefdocs[0]);
+        $this->assertEquals("S-INV1", $invoicerefdocs[0]["IssuerAssignedID"]);
+        $this->assertEquals("83", $invoicerefdocs[0]["TypeCode"]);
+        $this->assertArrayHasKey(1, $invoicerefdocs);
+        $this->assertIsArray($invoicerefdocs[1]);
+        $this->assertArrayHasKey("IssuerAssignedID", $invoicerefdocs[1]);
+        $this->assertArrayHasKey("TypeCode", $invoicerefdocs[1]);
+        $this->assertArrayHasKey("FormattedIssueDateTime", $invoicerefdocs[1]);
+        $this->assertEquals("S-INV2", $invoicerefdocs[1]["IssuerAssignedID"]);
+        $this->assertEquals("84", $invoicerefdocs[1]["TypeCode"]);
+    }
+
     public function testDocumentProcuringProject(): void
     {
         self::$document->getDocumentProcuringProject($projectid, $projectname);
-        $this->assertEquals("", $projectid);
-        $this->assertEquals("", $projectname);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentSupplyChainEvent
-     */
+        $this->assertSame("", $projectid);
+        $this->assertSame("", $projectname);
+    }
+
     public function testDocumentSupplyChainEvent(): void
     {
         self::$document->getDocumentSupplyChainEvent($supplychainevent);
-        $this->assertNotNull($supplychainevent);
+        $this->assertInstanceOf(\DateTime::class, $supplychainevent);
         $this->assertInstanceOf("DateTime", $supplychainevent);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20180930'))->format('Ymd'), $supplychainevent->format('Ymd'));
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDespatchAdviceReferencedDocument
-     */
     public function testDocumentDespatchAdviceReferencedDocument(): void
     {
         self::$document->getDocumentDespatchAdviceReferencedDocument($despatchdocid, $despatchdocdate);
-        $this->assertEquals("", $despatchdocid);
-        $this->assertNull($despatchdocdate);
-        $this->assertNotInstanceOf("DateTime", $despatchdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentReceivingAdviceReferencedDocument
-     */
+        $this->assertSame("", $despatchdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $despatchdocdate);
+    }
+
     public function testDocumentReceivingAdviceReferencedDocument(): void
     {
         self::$document->getDocumentReceivingAdviceReferencedDocument($recadvid, $recadvdate);
-        $this->assertEquals("", $recadvid);
-        $this->assertNull($recadvdate);
-        $this->assertNotInstanceOf("DateTime", $recadvdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryNoteReferencedDocument
-     */
+        $this->assertSame("", $recadvid);
+        $this->assertNotInstanceOf(\DateTime::class, $recadvdate);
+    }
+
     public function testDocumentDeliveryNoteReferencedDocument(): void
     {
         self::$document->getDocumentDeliveryNoteReferencedDocument($deliverynoterefdocid, $deliverynoterefdocdate);
-        $this->assertEquals("L87654321012", $deliverynoterefdocid);
-        $this->assertNull($deliverynoterefdocdate);
-        $this->assertNotInstanceOf("DateTime", $deliverynoterefdocdate);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentBillingPeriod
-     */
+        $this->assertSame("L87654321012", $deliverynoterefdocid);
+        $this->assertNotInstanceOf(\DateTime::class, $deliverynoterefdocdate);
+    }
+
     public function testDocumentBillingPeriod(): void
     {
         self::$document->getDocumentBillingPeriod($docbillingperiodstart, $docbillingperiodend);
-        $this->assertNull($docbillingperiodstart);
-        $this->assertNotInstanceOf("DateTime", $docbillingperiodstart);
-        $this->assertNull($docbillingperiodend);
-        $this->assertNotInstanceOf("DateTime", $docbillingperiodend);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharges
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $docbillingperiodstart);
+        $this->assertNotInstanceOf(\DateTime::class, $docbillingperiodend);
+    }
+
     public function testDocumentAllowanceCharges(): void
     {
@@ -1086,10 +867,7 @@
         $this->assertIsArray($docallowancecharge);
         $this->assertNotEmpty($docallowancecharge);
-        $this->assertEquals(1, count($docallowancecharge));
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerms
-     */
+        $this->assertCount(1, $docallowancecharge);
+    }
+
     public function testDocumentPaymentTerms(): void
     {
@@ -1107,20 +885,13 @@
         $this->assertNotInstanceOf("DateTime", $docpaymentterms[0]["duedate"]);
         $this->assertEquals("", $docpaymentterms[0]["directdebitmandateid"]);
-        $this->assertEquals(0.0, $docpaymentterms[0]["partialpaymentamount"]);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentDeliveryTerms
-     */
+        $this->assertEqualsWithDelta(0.0, $docpaymentterms[0]["partialpaymentamount"], PHP_FLOAT_EPSILON);
+    }
+
     public function testDocumentDeliveryTerms(): void
     {
         self::$document->getDocumentDeliveryTerms($devtermcode);
-        $this->assertEquals("", $devtermcode);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument
-     */
+        $this->assertSame("", $devtermcode);
+    }
+
     public function testDocumentAdditionalReferencedDocumentLoop(): void
     {
@@ -1129,26 +900,38 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocument
-     */
     public function testGetDocumentAdditionalReferencedDocument(): void
     {
         $this->assertTrue(self::$document->firstDocumentAdditionalReferencedDocument());
         self::$document->getDocumentAdditionalReferencedDocument($issuerassignedid, $typecode, $uriid, $name, $reftypecode, $issueddate, $binarydatafilename);
-        $this->assertEquals("A777123", $issuerassignedid);
-        $this->assertEquals("130", $typecode);
-        $this->assertEquals("", $uriid);
+        $this->assertSame("A777123", $issuerassignedid);
+        $this->assertSame("130", $typecode);
+        $this->assertSame("", $uriid);
         $this->assertIsArray($name);
         $this->assertEmpty($name);
-        $this->assertEquals("", $reftypecode);
-        $this->assertNull($issueddate);
-        $this->assertEquals("", $binarydatafilename);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentUltimateCustomerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentUltimateCustomerOrderReferencedDocument
-     */
+        $this->assertSame("", $reftypecode);
+        $this->assertNotInstanceOf(\DateTime::class, $issueddate);
+        $this->assertSame("", $binarydatafilename);
+    }
+
+    public function testDocumentInvoiceReferencedDocumentLoop(): void
+    {
+        $this->assertTrue(self::$document->firstDocumentInvoiceReferencedDocument());
+        $this->assertTrue(self::$document->nextDocumentInvoiceReferencedDocument());
+        $this->assertFalse(self::$document->nextDocumentInvoiceReferencedDocument());
+    }
+
+    public function testGetDocumentInvoiceReferencedDocument(): void
+    {
+        $this->assertTrue(self::$document->firstDocumentInvoiceReferencedDocument());
+        self::$document->getDocumentInvoiceReferencedDocument($issuerassignedid, $typecode, $issueddate);
+        $this->assertSame("S-INV1", $issuerassignedid);
+        $this->assertSame("83", $typecode);
+        $this->assertTrue(self::$document->nextDocumentInvoiceReferencedDocument());
+        self::$document->getDocumentInvoiceReferencedDocument($issuerassignedid, $typecode, $issueddate);
+        $this->assertSame("S-INV2", $issuerassignedid);
+        $this->assertSame("84", $typecode);
+        $this->assertFalse(self::$document->nextDocumentInvoiceReferencedDocument());
+    }
+
     public function testDocumentUltimateCustomerOrderReferencedDocumentLoop(): void
     {
@@ -1157,8 +940,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextGetDocumentPaymentMeans
-     */
     public function testDocumentPaymentMeansLoop(): void
     {
@@ -1167,28 +946,20 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstGetDocumentPaymentMeans
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentMeans
-     */
     public function testGetDocumentPaymentMeans(): void
     {
         $this->assertTrue(self::$document->firstGetDocumentPaymentMeans());
         self::$document->getDocumentPaymentMeans($typeCode, $information, $cardType, $cardId, $cardHolderName, $buyerIban, $payeeIban, $payeeAccountName, $payeePropId, $payeeBic);
-        $this->assertEquals("58", $typeCode);
-        $this->assertEquals("", $information);
-        $this->assertEquals("", $cardType);
-        $this->assertEquals("", $cardId);
-        $this->assertEquals("", $cardHolderName);
-        $this->assertEquals("", $buyerIban);
-        $this->assertEquals("DE5467894567876500", $payeeIban);
-        $this->assertEquals("", $payeeAccountName);
-        $this->assertEquals("", $payeePropId);
-        $this->assertEquals("", $payeeBic);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     */
+        $this->assertSame("58", $typeCode);
+        $this->assertSame("", $information);
+        $this->assertSame("", $cardType);
+        $this->assertSame("", $cardId);
+        $this->assertSame("", $cardHolderName);
+        $this->assertSame("", $buyerIban);
+        $this->assertSame("DE5467894567876500", $payeeIban);
+        $this->assertSame("", $payeeAccountName);
+        $this->assertSame("", $payeePropId);
+        $this->assertSame("", $payeeBic);
+    }
+
     public function testDocumentTaxLoop(): void
     {
@@ -1197,25 +968,16 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentTax
-     */
     public function testDocumentTax(): void
     {
         $this->assertTrue(self::$document->firstDocumentTax());
         self::$document->getDocumentTax($categoryCode, $typeCode, $basisAmount, $calculatedAmount, $rateApplicablePercent, $exemptionReason, $exemptionReasonCode, $lineTotalBasisAmount, $allowanceChargeBasisAmount, $taxPointDate, $dueDateTypeCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(403.55, $basisAmount);
-        $this->assertEquals(76.67, $calculatedAmount);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(-6.55, $allowanceChargeBasisAmount);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAllowanceCharge
-     */
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(403.55, $basisAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(76.67, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertSame(-6.55, $allowanceChargeBasisAmount);
+    }
+
     public function testtDocumentAllowanceChargeLoop(): void
     {
@@ -1225,30 +987,22 @@
 
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAllowanceCharge
-     */
     public function testtDocumentAllowanceCharge(): void
     {
         $this->assertTrue(self::$document->firstDocumentAllowanceCharge());
         self::$document->getDocumentAllowanceCharge($actualAmount, $isCharge, $taxCategoryCode, $taxTypeCode, $rateApplicablePercent, $sequence, $calculationPercent, $basisAmount, $basisQuantity, $basisQuantityUnitCode, $reasonCode, $reason);
-        $this->assertEquals(21.55, $actualAmount);
+        $this->assertEqualsWithDelta(21.55, $actualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($isCharge);
-        $this->assertEquals("S", $taxCategoryCode);
-        $this->assertEquals("VAT", $taxTypeCode);
-        $this->assertEquals(19.00, $rateApplicablePercent);
+        $this->assertSame("S", $taxCategoryCode);
+        $this->assertSame("VAT", $taxTypeCode);
+        $this->assertEqualsWithDelta(19.00, $rateApplicablePercent, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $sequence);
         $this->assertEquals(0, $calculationPercent);
-        $this->assertEquals(410.10, $basisAmount);
+        $this->assertEqualsWithDelta(410.10, $basisAmount, PHP_FLOAT_EPSILON);
         $this->assertEquals(0, $basisQuantity);
-        $this->assertEquals("", $basisQuantityUnitCode);
-        $this->assertEquals("", $reasonCode);
-        $this->assertEquals("Sonderrabatt", $reason);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentLogisticsServiceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentLogisticsServiceCharge
-     */
+        $this->assertSame("", $basisQuantityUnitCode);
+        $this->assertSame("", $reasonCode);
+        $this->assertSame("Sonderrabatt", $reason);
+    }
+
     public function testtDocumentLogisticsServiceChargeLoop(): void
     {
@@ -1257,32 +1011,24 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentLogisticsServiceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentLogisticsServiceCharge
-     */
     public function testGetDocumentLogisticsServiceCharge(): void
     {
         $this->assertTrue(self::$document->firstDocumentLogisticsServiceCharge());
         self::$document->getDocumentLogisticsServiceCharge($description, $appliedAmount, $taxTypeCodes, $taxCategoryCodes, $rateApplicablePercents);
-        $this->assertEquals("Transportkosten: Frachbetrag", $description);
-        $this->assertEquals(15.00, $appliedAmount);
+        $this->assertSame("Transportkosten: Frachbetrag", $description);
+        $this->assertEqualsWithDelta(15.00, $appliedAmount, PHP_FLOAT_EPSILON);
         $this->assertIsArray($taxTypeCodes);
-        $this->assertEquals(1, count($taxTypeCodes));
+        $this->assertCount(1, $taxTypeCodes);
         $this->assertArrayHasKey(0, $taxTypeCodes);
         $this->assertEquals("VAT", $taxTypeCodes[0]);
         $this->assertIsArray($taxCategoryCodes);
-        $this->assertEquals(1, count($taxCategoryCodes));
+        $this->assertCount(1, $taxCategoryCodes);
         $this->assertArrayHasKey(0, $taxCategoryCodes);
         $this->assertEquals("S", $taxCategoryCodes[0]);
         $this->assertIsArray($rateApplicablePercents);
-        $this->assertEquals(1, count($rateApplicablePercents));
+        $this->assertCount(1, $rateApplicablePercents);
         $this->assertArrayHasKey(0, $rateApplicablePercents);
-        $this->assertEquals(19.0, $rateApplicablePercents[0]);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     */
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercents[0], PHP_FLOAT_EPSILON);
+    }
+
     public function testtDocumentPaymentTermsLoop(): void
     {
@@ -1291,10 +1037,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPaymentTerms
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPaymentTerm
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDiscountTermsFromPaymentTerm
-     */
     public function testtDocumentPaymentTerms(): void
     {
@@ -1302,22 +1042,30 @@
         self::$document->getDocumentPaymentTerm($termdescription, $termduedate, $termmandate);
         self::$document->getDiscountTermsFromPaymentTerm($dispercent, $discbasedatetime, $discmeasureval, $discmeasureunit, $discbaseamount, $discamount);
-
-        $this->assertEquals("Skontovereinbarung: 2% bei Zahlung innerhalb 10 Tagen nach Rechnungsdatum", $termdescription);
-        $this->assertNull($termduedate);
-        $this->assertEquals("", $termmandate);
-        $this->assertEquals(2.0, $dispercent);
-        $this->assertNull($discbasedatetime);
+        self::$document->getPenaltyTermsFromPaymentTerm($penaltypercent, $penaltybasedatetime, $penaltymeasureval, $penaltymeasureunit, $penaltybaseamount, $penaltyamount);
+
+        $this->assertSame("Skontovereinbarung: 2% bei Zahlung innerhalb 10 Tagen nach Rechnungsdatum", $termdescription);
+        $this->assertNotInstanceOf(\DateTime::class, $termduedate);
+        $this->assertSame("", $termmandate);
+        $this->assertEqualsWithDelta(2.0, $dispercent, PHP_FLOAT_EPSILON);
+        $this->assertNotInstanceOf(\DateTime::class, $discbasedatetime);
         $this->assertEquals(10, $discmeasureval);
-        $this->assertEquals("DAY", $discmeasureunit);
-        $this->assertEquals(0, $discbaseamount);
-        $this->assertEquals(0, $discamount);
+        $this->assertSame("DAY", $discmeasureunit);
+        $this->assertEqualsWithDelta(480.22, $discbaseamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(9.60, $discamount, PHP_FLOAT_EPSILON);
+        $this->assertNotInstanceOf(\DateTime::class, $penaltybasedatetime);
+        $this->assertEquals(30, $penaltymeasureval);
+        $this->assertSame("DAY", $penaltymeasureunit);
+        $this->assertEqualsWithDelta(480.22, $penaltybaseamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(24.01, $penaltyamount, PHP_FLOAT_EPSILON);
 
         $this->assertFalse(self::$document->nextDocumentPaymentTerms());
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     */
+    public function testDocumentReceivableSpecifiedTradeAccountingAccount(): void
+    {
+        $this->assertFalse(self::$document->firstDocumentReceivableSpecifiedTradeAccountingAccount());
+        $this->assertFalse(self::$document->nextDocumentReceivableSpecifiedTradeAccountingAccount());
+    }
+
     public function testDocumentPositionLoop(): void
     {
@@ -1330,28 +1078,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
     public function testDocumentPositionFirst(): void
     {
@@ -1359,70 +1083,93 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("1", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("1", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Wirkarbeit HT", $prodname);
-        $this->assertEquals("", $proddesc);
-        $this->assertEquals("WA997", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("4123456000014", $prodglobalid);
+        $this->assertSame("Wirkarbeit HT", $prodname);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("WA997", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("4123456000014", $prodglobalid);
+
+        self::$document->getDocumentPositionProductDetailsExt($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid, $prodindustyid, $prodmodelid, $prodbatchid, $prodbrandname, $prodmodelname);
+        $this->assertSame("Wirkarbeit HT", $prodname);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("WA997", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("4123456000014", $prodglobalid);
+        $this->assertSame("IndustryId", $prodindustyid);
+        $this->assertSame("ModelId", $prodmodelid);
+        $this->assertSame("BatchId", $prodbatchid);
+        $this->assertSame("BrandeName", $prodbrandname);
+        $this->assertSame("ModelName", $prodmodelname);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0520, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0520, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(0.0520, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0520, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(10000.0, $billedquantity);
-        $this->assertEquals("KWH", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(10000.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("KWH", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1437,43 +1184,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(52.00, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(52.00, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionSecond(): void
     {
@@ -1481,70 +1203,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("2", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("2", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Ãkosteuer Lieferant", $prodname);
-        $this->assertEquals("", $proddesc);
-        $this->assertEquals("ÃST250", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("4123456000021", $prodglobalid);
+        $this->assertSame("Ãkosteuer Lieferant", $prodname);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("ÃST250", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("4123456000021", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0205, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0205, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(0.0205, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0205, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
         $this->assertEquals(10000, $billedquantity);
-        $this->assertEquals("KWH", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertSame("KWH", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1559,44 +1291,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(20.50, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(20.50, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionThird(): void
     {
@@ -1604,70 +1310,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("3", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("3", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Kommissionierer 1250032 D. Muster", $prodname);
-        $this->assertEquals("Besteller: Hr. Mayer, Personalnr. 4488", $proddesc);
-        $this->assertEquals("", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("4260331811362", $prodglobalid);
+        $this->assertSame("Kommissionierer 1250032 D. Muster", $prodname);
+        $this->assertSame("Besteller: Hr. Mayer, Personalnr. 4488", $proddesc);
+        $this->assertSame("", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("4260331811362", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(15.0000, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(15.0000, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(10.5000, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(10.5000, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(27.5000, $billedquantity);
-        $this->assertEquals("HUR", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(27.5000, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("HUR", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1692,16 +1408,16 @@
             $docPosAllowanceChargereasonCode
         );
-        $this->assertEquals(4.5000, $docPosAllowanceChargeactualAmount);
+        $this->assertEqualsWithDelta(4.5000, $docPosAllowanceChargeactualAmount, PHP_FLOAT_EPSILON);
         $this->assertFalse($docPosAllowanceChargeisCharge);
         $this->assertEquals(0, $docPosAllowanceChargecalculationPercent);
         $this->assertEquals(0, $docPosAllowanceChargebasisAmount);
-        $this->assertEquals("Artikelrabatt 1", $docPosAllowanceChargereason);
-        $this->assertEquals("", $docPosAllowanceChargeTaxTypeCode);
-        $this->assertEquals("", $docPosAllowanceChargeTaxCategoryCode);
+        $this->assertSame("Artikelrabatt 1", $docPosAllowanceChargereason);
+        $this->assertSame("", $docPosAllowanceChargeTaxTypeCode);
+        $this->assertSame("", $docPosAllowanceChargeTaxCategoryCode);
         $this->assertEquals(0, $docPosAllowanceChargerateApplicablePercent);
         $this->assertEquals(0, $docPosAllowanceChargesequence);
         $this->assertEquals(0, $docPosAllowanceChargebasisQuantity);
-        $this->assertEquals("", $docPosAllowanceChargebasisQuantityUnitCode);
-        $this->assertEquals("", $docPosAllowanceChargereasonCode);
+        $this->assertSame("", $docPosAllowanceChargebasisQuantityUnitCode);
+        $this->assertSame("", $docPosAllowanceChargereasonCode);
 
         $this->assertTrue(self::$document->firstDocumentPositionTax());
@@ -1710,43 +1426,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(288.75, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(288.75, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionFourth(): void
     {
@@ -1754,70 +1445,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("4", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("4", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("FALTENBEUTEL 16x6x28 CM", $prodname);
-        $this->assertEquals("", $proddesc);
-        $this->assertEquals("FB05", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("2001015001325", $prodglobalid);
+        $this->assertSame("FALTENBEUTEL 16x6x28 CM", $prodname);
+        $this->assertSame("", $proddesc);
+        $this->assertSame("FB05", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("2001015001325", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0105, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0105, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(0.0105, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0105, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(3500.0, $billedquantity);
-        $this->assertEquals("H87", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(3500.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("H87", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1832,43 +1533,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(36.75, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(36.75, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPosition
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGenerals
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionProductDetails
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBuyerOrderReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionContractReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionGrossPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPrice
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionNetPriceTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionQuantity
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDespatchAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionReceivingAdviceReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionDeliveryNoteReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionBillingPeriod
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionNote
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionGrossPriceAllowanceCharge
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionTax
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionLineSummation
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentPositionSupplyChainEvent
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionFifth(): void
     {
@@ -1876,70 +1552,80 @@
 
         self::$document->getDocumentPositionGenerals($lineid, $linestatuscode, $linestatusreasoncode);
-        $this->assertEquals("5", $lineid);
-        $this->assertEquals("", $linestatuscode);
-        $this->assertEquals("", $linestatusreasoncode);
+        $this->assertSame("5", $lineid);
+        $this->assertSame("", $linestatuscode);
+        $this->assertSame("", $linestatusreasoncode);
 
         self::$document->getDocumentPositionProductDetails($prodname, $proddesc, $prodsellerid, $prodbuyerid, $prodglobalidtype, $prodglobalid);
-        $this->assertEquals("Kopierpapier A4", $prodname);
-        $this->assertEquals("ZÃ€hlerstand von-bis: 543210 - 544420", $proddesc);
-        $this->assertEquals("KOP05", $prodsellerid);
-        $this->assertEquals("", $prodbuyerid);
-        $this->assertEquals("0088", $prodglobalidtype);
-        $this->assertEquals("4123456000038", $prodglobalid);
+        $this->assertSame("Kopierpapier A4", $prodname);
+        $this->assertSame("ZÃ€hlerstand von-bis: 543210 - 544420", $proddesc);
+        $this->assertSame("KOP05", $prodsellerid);
+        $this->assertSame("", $prodbuyerid);
+        $this->assertSame("0088", $prodglobalidtype);
+        $this->assertSame("4123456000038", $prodglobalid);
+
+        self::$document->getDocumentPositionSellerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
 
         self::$document->getDocumentPositionBuyerOrderReferencedDocument($doclineorderid, $doclineorderlineid, $doclineorderdate);
-        $this->assertEquals("", $doclineorderid);
-        $this->assertEquals("", $doclineorderlineid);
-        $this->assertNull($doclineorderdate);
+        $this->assertSame("", $doclineorderid);
+        $this->assertSame("", $doclineorderlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclineorderdate);
+
+        self::$document->getDocumentPositionQuotationReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionContractReferencedDocument($doclinecontid, $doclinecontlineid, $doclinecontdate);
-        $this->assertEquals("", $doclinecontid);
-        $this->assertEquals("", $doclinecontlineid);
-        $this->assertNull($doclinecontdate);
+        $this->assertSame("", $doclinecontid);
+        $this->assertSame("", $doclinecontlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $doclinecontdate);
 
         self::$document->getDocumentPositionGrossPrice($grosspriceamount, $grosspricebasisquantity, $grosspricebasisquantityunitcode);
-        $this->assertEquals(0.0100, $grosspriceamount);
-        $this->assertEquals(0.0, $grosspricebasisquantity);
-        $this->assertEquals("", $grosspricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0100, $grosspriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $grosspricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $grosspricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPrice($netpriceamount, $netpricebasisquantity, $netpricebasisquantityunitcode);
-        $this->assertEquals(0.0100, $netpriceamount);
-        $this->assertEquals(0.0, $netpricebasisquantity);
-        $this->assertEquals("", $netpricebasisquantityunitcode);
+        $this->assertEqualsWithDelta(0.0100, $netpriceamount, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $netpricebasisquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $netpricebasisquantityunitcode);
 
         self::$document->getDocumentPositionNetPriceTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("", $categoryCode);
-        $this->assertEquals("", $typeCode);
-        $this->assertEquals(0.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
+        $this->assertSame("", $categoryCode);
+        $this->assertSame("", $typeCode);
+        $this->assertEqualsWithDelta(0.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
 
         self::$document->getDocumentPositionQuantity($billedquantity, $billedquantityunitcode, $chargeFreeQuantity, $chargeFreeQuantityunitcode, $packageQuantity, $packageQuantityunitcode);
-        $this->assertEquals(1210.0, $billedquantity);
-        $this->assertEquals("H87", $billedquantityunitcode);
-        $this->assertEquals(0.0, $chargeFreeQuantity);
-        $this->assertEquals("", $chargeFreeQuantityunitcode);
-        $this->assertEquals(0.0, $packageQuantity);
-        $this->assertEquals("", $packageQuantityunitcode);
+        $this->assertEqualsWithDelta(1210.0, $billedquantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("H87", $billedquantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $chargeFreeQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $chargeFreeQuantityunitcode);
+        $this->assertEqualsWithDelta(0.0, $packageQuantity, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $packageQuantityunitcode);
 
         self::$document->getDocumentPositionDespatchAdviceReferencedDocument($docposdespadvid, $docposdespadvlineid, $docposdespadvdatetime);
-        $this->assertEquals("", $docposdespadvid);
-        $this->assertEquals("", $docposdespadvlineid);
-        $this->assertNull($docposdespadvdatetime);
+        $this->assertSame("", $docposdespadvid);
+        $this->assertSame("", $docposdespadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdespadvdatetime);
 
         self::$document->getDocumentPositionReceivingAdviceReferencedDocument($docposrecadvid, $docposrecadvlineid, $docposrecadvdatetime);
-        $this->assertEquals("", $docposrecadvid);
-        $this->assertEquals("", $docposrecadvlineid);
-        $this->assertNull($docposrecadvdatetime);
+        $this->assertSame("", $docposrecadvid);
+        $this->assertSame("", $docposrecadvlineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposrecadvdatetime);
 
         self::$document->getDocumentPositionDeliveryNoteReferencedDocument($docposdelnoteid, $docposdelnotelineid, $docposdelnotedatetime);
-        $this->assertEquals("", $docposdelnoteid);
-        $this->assertEquals("", $docposdelnotelineid);
-        $this->assertNull($docposdelnotedatetime);
+        $this->assertSame("", $docposdelnoteid);
+        $this->assertSame("", $docposdelnotelineid);
+        $this->assertNotInstanceOf(\DateTime::class, $docposdelnotedatetime);
 
         self::$document->getDocumentPositionBillingPeriod($docposstartdate, $docpostenddate);
-        $this->assertNull($docposstartdate);
-        $this->assertNull($docpostenddate);
+        $this->assertNotInstanceOf(\DateTime::class, $docposstartdate);
+        $this->assertNotInstanceOf(\DateTime::class, $docpostenddate);
 
         $this->assertFalse(self::$document->firstDocumentPositionNote());
@@ -1954,23 +1640,18 @@
         self::$document->firstDocumentPositionTax();
         self::$document->getDocumentPositionTax($categoryCode, $typeCode, $rateApplicablePercent, $calculatedAmount, $exemptionReason, $exemptionReasonCode);
-        $this->assertEquals("S", $categoryCode);
-        $this->assertEquals("VAT", $typeCode);
-        $this->assertEquals(19.0, $rateApplicablePercent);
-        $this->assertEquals(0.0, $calculatedAmount);
-        $this->assertEquals("", $exemptionReason);
-        $this->assertEquals("", $exemptionReasonCode);
-
-        self::$document->getDocumentPositionLineSummation($lineTotalAmount, $totalAllowanceChargeAmount);
-        $this->assertEquals(12.10, $lineTotalAmount);
-        $this->assertEquals(0.0, $totalAllowanceChargeAmount);
+        $this->assertSame("S", $categoryCode);
+        $this->assertSame("VAT", $typeCode);
+        $this->assertEqualsWithDelta(19.0, $rateApplicablePercent, PHP_FLOAT_EPSILON);
+        $this->assertEqualsWithDelta(0.0, $calculatedAmount, PHP_FLOAT_EPSILON);
+        $this->assertSame("", $exemptionReason);
+        $this->assertSame("", $exemptionReasonCode);
+
+        self::$document->getDocumentPositionLineSummationSimple($lineTotalAmount);
+        $this->assertEqualsWithDelta(12.10, $lineTotalAmount, PHP_FLOAT_EPSILON);
 
         self::$document->getDocumentPositionSupplyChainEvent($supplyeventdatetime);
-        $this->assertNull($supplyeventdatetime);
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentPositionAdditionalReferencedDocument
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentPositionAdditionalReferencedDocument
-     */
+        $this->assertNotInstanceOf(\DateTime::class, $supplyeventdatetime);
+    }
+
     public function testDocumentPositionAdditionalReferencedDocument(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderXRechnungAttachedBinaryObjectTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderXRechnungAttachedBinaryObjectTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ReaderXRechnungAttachedBinaryObjectTest.php	(revision 8504)
@@ -3,8 +3,8 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentReader;
-use \horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\codelists\ZugferdInvoiceType;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdProfiles;
 
 class ReaderXRechnungAttachedBinaryObjectTest extends TestCase
@@ -17,5 +17,5 @@
     public static function setUpBeforeClass(): void
     {
-        self::$document = ZugferdDocumentReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/xrechnung_simple_2.xml");
+        self::$document = ZugferdDocumentReader::readAndGuessFromFile(__DIR__ . "/../assets/xml_xrechnung_2.xml");
     }
 
@@ -30,20 +30,18 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getInvoiceObject
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getSerializer
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getObjectHelper
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getProfileDefinitionParameter
-     */
     public function testDocumentGetters(): void
     {
-        $this->assertNotNull(self::$document->getInvoiceObject());
-        $this->assertNotNull(self::$document->getSerializer());
-        $this->assertNotNull(self::$document->getObjectHelper());
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertInstanceOf('horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertInstanceOf(\JMS\Serializer\Serializer::class, $this->invokePrivateMethodFromObject(self::$document, 'getSerializer'));
+        $this->assertNotNull($this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
+        $this->assertInstanceOf('horstoeko\zugferd\ZugferdObjectHelper', $this->invokePrivateMethodFromObject(self::$document, 'getObjectHelper'));
         $this->assertEquals('en16931', self::$document->getProfileDefinitionParameter('name'));
         $this->assertEquals('XRECHNUNG', self::$document->getProfileDefinitionParameter('altname'));
         $this->assertEquals('urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.0', self::$document->getProfileDefinitionParameter('contextparameter'));
         $this->assertEquals('xrechnung.xml', self::$document->getProfileDefinitionParameter('attachmentfilename'));
-        $this->assertEquals('EN 16931', self::$document->getProfileDefinitionParameter('xmpname'));
+        $this->assertEquals('XRECHNUNG', self::$document->getProfileDefinitionParameter('xmpname'));
+        $this->assertEquals('2.0', self::$document->getProfileDefinitionParameter('xmpversion'));
         $this->expectNoticeOrWarningExt(
             function () {
@@ -53,24 +51,18 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentInformation
-     */
     public function testDocumentGenerals(): void
     {
         self::$document->getDocumentInformation($documentno, $documenttypecode, $documentdate, $invoiceCurrency, $taxCurrency, $documentname, $documentlanguage, $effectiveSpecifiedPeriod);
-        $this->assertEquals('123456789', $documentno);
-        $this->assertEquals(ZugferdInvoiceType::INVOICE, $documenttypecode);
-        $this->assertNotNull($documentdate);
+        $this->assertSame('123456789', $documentno);
+        $this->assertSame(ZugferdInvoiceType::INVOICE, $documenttypecode);
+        $this->assertInstanceOf(\DateTime::class, $documentdate);
         $this->assertEquals((\DateTime::createFromFormat('Ymd', '20180605'))->format('Ymd'), $documentdate->format('Ymd'));
-        $this->assertEquals("EUR", $invoiceCurrency);
-        $this->assertEquals("", $taxCurrency);
-        $this->assertEquals("", $documentname);
-        $this->assertEquals("", $documentlanguage);
-        $this->assertNull($effectiveSpecifiedPeriod);
+        $this->assertSame("EUR", $invoiceCurrency);
+        $this->assertSame("", $taxCurrency);
+        $this->assertSame("", $documentname);
+        $this->assertSame("", $documentlanguage);
+        $this->assertNotInstanceOf(\DateTime::class, $effectiveSpecifiedPeriod);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::firstDocumentAdditionalReferencedDocument
-     */
     public function testFirstDocumentAdditionalReferencedDocument(): void
     {
@@ -78,44 +70,33 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::setBinaryDataDirectory
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocument
-     */
     public function testGetDocumentAdditionalReferencedDocumentNoDirectorySet(): void
     {
         self::$document->getDocumentAdditionalReferencedDocument($issuerassignedid, $typecode, $uriid, $name, $reftypecode, $issueddate, $binarydatafilename);
-        $this->assertEquals("01_15_Anhang_01.pdf", $issuerassignedid);
-        $this->assertEquals("916", $typecode);
+        $this->assertSame("01_15_Anhang_01.pdf", $issuerassignedid);
+        $this->assertSame("916", $typecode);
         $this->assertArrayHasKey(0, $name);
         $this->assertArrayNotHasKey(1, $name);
         $this->assertEquals("AufschlÃŒsselung der einzelnen Leistungspositionen", $name[0]);
-        $this->assertEquals("", $binarydatafilename);
-        $this->assertFalse(file_exists($binarydatafilename));
+        $this->assertSame("", $binarydatafilename);
+        $this->assertFileDoesNotExist($binarydatafilename);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::setBinaryDataDirectory
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::getDocumentAdditionalReferencedDocument
-     */
     public function testGetDocumentAdditionalReferencedDocument(): void
     {
-        self::$document->setBinaryDataDirectory(dirname(__FILE__));
+        self::$document->setBinaryDataDirectory(__DIR__);
         self::$document->getDocumentAdditionalReferencedDocument($issuerassignedid, $typecode, $uriid, $name, $reftypecode, $issueddate, $binarydatafilename);
-        $this->assertEquals("01_15_Anhang_01.pdf", $issuerassignedid);
-        $this->assertEquals("916", $typecode);
+        $this->assertSame("01_15_Anhang_01.pdf", $issuerassignedid);
+        $this->assertSame("916", $typecode);
         $this->assertArrayHasKey(0, $name);
         $this->assertArrayNotHasKey(1, $name);
         $this->assertEquals("AufschlÃŒsselung der einzelnen Leistungspositionen", $name[0]);
-        $this->assertNotEquals("", $binarydatafilename);
-        $this->assertEquals(dirname(__FILE__) . DIRECTORY_SEPARATOR . "01_15_Anhang_01.pdf", $binarydatafilename);
-        $this->assertTrue(file_exists($binarydatafilename));
-        $this->assertEquals(150128, filesize($binarydatafilename));
-        $this->assertEquals("%PDF", substr(file_get_contents($binarydatafilename), 0, 4));
+        $this->assertNotSame("", $binarydatafilename);
+        $this->assertSame(__DIR__ . DIRECTORY_SEPARATOR . "01_15_Anhang_01.pdf", $binarydatafilename);
+        $this->assertFileExists($binarydatafilename);
+        $this->assertSame(150128, filesize($binarydatafilename));
+        $this->assertSame("%PDF", substr(file_get_contents($binarydatafilename), 0, 4));
         @unlink($binarydatafilename);
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentReader::nextDocumentAdditionalReferencedDocument
-     */
     public function testNextDocumentAdditionalReferencedDocument(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/SettingsTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/SettingsTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/SettingsTest.php	(revision 8504)
@@ -18,19 +18,17 @@
         ZugferdSettings::setQuantityDecimals(2);
         ZugferdSettings::setPercentDecimals(2);
+        ZugferdSettings::setMeasureDecimals(2);
         ZugferdSettings::setDecimalSeparator(".");
         ZugferdSettings::setThousandsSeparator("");
-        ZugferdSettings::setIccProfileFilename("sRGB_v4_ICC.icc");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
+        ZugferdSettings::setIccProfileFilename("sRGB2014.icc");
+    }
+
     public function testAmountDecimals(): void
     {
-        $this->assertEquals(2, ZugferdSettings::getAmountDecimals());
+        $this->assertSame(2, ZugferdSettings::getAmountDecimals());
 
         ZugferdSettings::setAmountDecimals(3);
 
-        $this->assertEquals(3, ZugferdSettings::getAmountDecimals());
+        $this->assertSame(3, ZugferdSettings::getAmountDecimals());
 
         $property = $this->getPrivatePropertyFromClassname(ZugferdSettings::class, "amountDecimals");
@@ -39,14 +37,11 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
     public function testQuantityDecimals(): void
     {
-        $this->assertEquals(2, ZugferdSettings::getQuantityDecimals());
+        $this->assertSame(2, ZugferdSettings::getQuantityDecimals());
 
         ZugferdSettings::setQuantityDecimals(3);
 
-        $this->assertEquals(3, ZugferdSettings::getQuantityDecimals());
+        $this->assertSame(3, ZugferdSettings::getQuantityDecimals());
 
         $property = $this->getPrivatePropertyFromClassname(ZugferdSettings::class, "quantityDecimals");
@@ -55,14 +50,11 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
     public function testPercentDecimals(): void
     {
-        $this->assertEquals(2, ZugferdSettings::getPercentDecimals());
+        $this->assertSame(2, ZugferdSettings::getPercentDecimals());
 
         ZugferdSettings::setPercentDecimals(3);
 
-        $this->assertEquals(3, ZugferdSettings::getPercentDecimals());
+        $this->assertSame(3, ZugferdSettings::getPercentDecimals());
 
         $property = $this->getPrivatePropertyFromClassname(ZugferdSettings::class, "percentDecimals");
@@ -71,14 +63,24 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
+    public function testMeasureDecimals(): void
+    {
+        $this->assertSame(2, ZugferdSettings::getMeasureDecimals());
+
+        ZugferdSettings::setMeasureDecimals(3);
+
+        $this->assertSame(3, ZugferdSettings::getMeasureDecimals());
+
+        $property = $this->getPrivatePropertyFromClassname(ZugferdSettings::class, "measureDecimals");
+
+        $this->assertEquals(3, $property->getValue());
+    }
+
     public function testDecimalSeparator(): void
     {
-        $this->assertEquals(".", ZugferdSettings::getDecimalSeparator());
+        $this->assertSame(".", ZugferdSettings::getDecimalSeparator());
 
         ZugferdSettings::setDecimalSeparator(",");
 
-        $this->assertEquals(",", ZugferdSettings::getDecimalSeparator());
+        $this->assertSame(",", ZugferdSettings::getDecimalSeparator());
 
         $property = $this->getPrivatePropertyFromClassname(ZugferdSettings::class, "decimalSeparator");
@@ -87,14 +89,11 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
     public function testThousandsSeparator(): void
     {
-        $this->assertEquals("", ZugferdSettings::getThousandsSeparator());
+        $this->assertSame("", ZugferdSettings::getThousandsSeparator());
 
         ZugferdSettings::setThousandsSeparator(",");
 
-        $this->assertEquals(",", ZugferdSettings::getThousandsSeparator());
+        $this->assertSame(",", ZugferdSettings::getThousandsSeparator());
 
         $property = $this->getPrivatePropertyFromClassname(ZugferdSettings::class, "thousandsSeparator");
@@ -103,80 +102,59 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
     public function testIccProfileFilename(): void
     {
-        $this->assertEquals("sRGB_v4_ICC.icc", ZugferdSettings::getIccProfileFilename());
+        $this->assertSame("sRGB2014.icc", ZugferdSettings::getIccProfileFilename());
 
         ZugferdSettings::setIccProfileFilename("sRGB_v5_ICC.icc");
 
-        $this->assertEquals("sRGB_v5_ICC.icc", ZugferdSettings::getIccProfileFilename());
-
-        $property = $this->getPrivatePropertyFromClassname(ZugferdSettings::class, "iccProfileFilename");
-    }
-
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
+        $this->assertSame("sRGB_v5_ICC.icc", ZugferdSettings::getIccProfileFilename());
+
+        $this->getPrivatePropertyFromClassname(ZugferdSettings::class, "iccProfileFilename");
+    }
+
     public function testGetRootDirectory(): void
     {
         $this->assertEquals(
-            realpath(dirname(__FILE__) . "/../../"),
+            realpath(__DIR__ . "/../../"),
             realpath(ZugferdSettings::getRootDirectory())
         );
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
     public function testGetSourceDirectory(): void
     {
         $this->assertEquals(
-            realpath(dirname(__FILE__) . "/../../src/"),
+            realpath(__DIR__ . "/../../src/"),
             realpath(ZugferdSettings::getSourceDirectory())
         );
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
     public function testGetAssetDirectory(): void
     {
         $this->assertEquals(
-            realpath(dirname(__FILE__) . "/../../src/assets/"),
+            realpath(__DIR__ . "/../../src/assets/"),
             realpath(ZugferdSettings::getAssetDirectory())
         );
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
     public function testGetYamlDirectory(): void
     {
         $this->assertEquals(
-            realpath(dirname(__FILE__) . "/../../src/yaml/"),
+            realpath(__DIR__ . "/../../src/yaml/"),
             realpath(ZugferdSettings::getYamlDirectory())
         );
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
     public function testGetValidationDirectory(): void
     {
         $this->assertEquals(
-            realpath(dirname(__FILE__) . "/../../src/validation/"),
+            realpath(__DIR__ . "/../../src/validation/"),
             realpath(ZugferdSettings::getValidationDirectory())
         );
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
     public function testGetFullIccProfileFilename(): void
     {
         $expected = PathUtils::combinePathWithFile(
-            realpath(dirname(__FILE__) . "/../../src/assets/"),
+            realpath(__DIR__ . "/../../src/assets/"),
             "sRGB_v5_ICC.icc"
         );
@@ -186,5 +164,5 @@
         );
 
-        $this->assertEquals(
+        $this->assertSame(
             $expected,
             $actual
@@ -192,24 +170,39 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdSettings
-     */
     public function testSpecialDecimalPlacesMaps(): void
     {
-        $this->assertEquals(2, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 2));
-        $this->assertEquals(2, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount', 2));
+        $this->assertSame(2, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 2));
+        $this->assertSame(2, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount', 2));
 
         ZugferdSettings::addSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 5);
 
-        $this->assertEquals(5, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 2));
-        $this->assertEquals(2, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount', 2));
-
-        ZugferdSettings::setSpecialDecimalPlacesMaps([
+        $this->assertSame(5, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 2));
+        $this->assertSame(2, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount', 2));
+
+        ZugferdSettings::setSpecialDecimalPlacesMaps(
+            [
             '/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount' => 6,
             '/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount' => 6
-        ]);
-
-        $this->assertEquals(6, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 2));
-        $this->assertEquals(6, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount', 2));
+            ]
+        );
+
+        $this->assertSame(6, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:GrossPriceProductTradePrice/ram:ChargeAmount', 2));
+        $this->assertSame(6, ZugferdSettings::getSpecialDecimalPlacesMap('/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount', 2));
+    }
+
+    public function testSerializerCacheDirectory(): void
+    {
+        $this->assertSame('', ZugferdSettings::getSerializerCacheDirectory());
+        $this->assertFalse(ZugferdSettings::hasSerializerCacheDirectory());
+
+        ZugferdSettings::setSerializerCacheDirectory(sys_get_temp_dir());
+
+        $this->assertSame(sys_get_temp_dir(), ZugferdSettings::getSerializerCacheDirectory());
+        $this->assertTrue(ZugferdSettings::hasSerializerCacheDirectory());
+
+        ZugferdSettings::setSerializerCacheDirectory('');
+
+        $this->assertSame('', ZugferdSettings::getSerializerCacheDirectory());
+        $this->assertFalse(ZugferdSettings::hasSerializerCacheDirectory());
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ValidatorInvalidTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ValidatorInvalidTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ValidatorInvalidTest.php	(revision 8504)
@@ -3,7 +3,7 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdDocumentReader;
-use \horstoeko\zugferd\ZugferdDocumentValidator;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdDocumentValidator;
 
 class ValidatorInvalidTest extends TestCase
@@ -16,24 +16,14 @@
     protected static $document;
 
-    /**
-     * The validator instance
-     *
-     * @var ZugferdDocumentValidator
-     */
-    protected static $validator;
-
     public static function setUpBeforeClass(): void
     {
-        self::$document = ZugferdDocumentReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/en16931_simple_invalid.xml");
-        self::$validator = new ZugferdDocumentValidator(self::$document);
+        self::$document = ZugferdDocumentReader::readAndGuessFromFile(__DIR__ . "/../assets/xml_en16931_5.xml");
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentValidator::validateDocument
-     */
     public function testValidateDocument(): void
     {
-        $validationResult = self::$validator->validateDocument();
-        $this->assertEquals(1, count($validationResult));
+        $validator = new ZugferdDocumentValidator(self::$document);
+        $validationResult = $validator->validateDocument();
+        $this->assertCount(1, $validationResult);
         $this->assertArrayHasKey(0, $validationResult);
         $this->assertEquals("This value should not be null.", $validationResult[0]->getMessage());
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ValidatorValidTest.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ValidatorValidTest.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/ValidatorValidTest.php	(revision 8504)
@@ -3,7 +3,7 @@
 namespace horstoeko\zugferd\tests\testcases;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\ZugferdDocumentReader;
-use \horstoeko\zugferd\ZugferdDocumentValidator;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\ZugferdDocumentReader;
+use horstoeko\zugferd\ZugferdDocumentValidator;
 
 class ValidatorValidTest extends TestCase
@@ -16,24 +16,14 @@
     protected static $document;
 
-    /**
-     * The validator instance
-     *
-     * @var ZugferdDocumentValidator
-     */
-    protected static $validator;
-
     public static function setUpBeforeClass(): void
     {
-        self::$document = ZugferdDocumentReader::readAndGuessFromFile(dirname(__FILE__) . "/../assets/en16931_simple.xml");
-        self::$validator = new ZugferdDocumentValidator(self::$document);
+        self::$document = ZugferdDocumentReader::readAndGuessFromFile(__DIR__ . "/../assets/xml_en16931_1.xml");
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentValidator::validateDocument
-     */
     public function testValidateDocument(): void
     {
-        $validationResult = self::$validator->validateDocument();
-        $this->assertEquals(0, count($validationResult));
+        $validator = new ZugferdDocumentValidator(self::$document);
+        $validationResult = $validator->validateDocument();
+        $this->assertEmpty($validationResult);
     }
 }
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue10Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue10Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue10Test.php	(revision 8504)
@@ -4,8 +4,8 @@
 
 use DateTime;
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\tests\traits\HandlesXmlTests;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentBuilder;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\tests\traits\HandlesXmlTests;
+use horstoeko\zugferd\ZugferdDocumentBuilder;
+use horstoeko\zugferd\ZugferdProfiles;
 
 class Issue10Test extends TestCase
@@ -18,8 +18,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::SetDocumentSummation
-     * @issue  #10
-     */
     public function testTotalPrepaidAmountPayed(): void
     {
@@ -39,8 +35,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::SetDocumentSummation
-     * @issue  #10
-     */
     public function testTotalPrepaidAmountUnpayed(): void
     {
@@ -60,8 +52,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::SetDocumentSummation
-     * @issue  #10
-     */
     public function testTotalPrepaidAmountIsNull(): void
     {
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue18Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue18Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue18Test.php	(revision 8504)
@@ -3,8 +3,8 @@
 namespace horstoeko\zugferd\tests\testcases\issues;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\tests\traits\HandlesXmlTests;
-use \horstoeko\zugferd\ZugferdProfiles;
-use \horstoeko\zugferd\ZugferdDocumentBuilder;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\tests\traits\HandlesXmlTests;
+use horstoeko\zugferd\ZugferdProfiles;
+use horstoeko\zugferd\ZugferdDocumentBuilder;
 
 class Issue18Test extends TestCase
@@ -23,5 +23,6 @@
     public function testBusinessProcessSpecifiedDocumentContextParameter(): void
     {
-        $invoiceObject = self::$document->getInvoiceObject();
+        $invoiceObject = $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject');
+        $this->assertInstanceOf('horstoeko\zugferd\entities\en16931\rsm\CrossIndustryInvoice', $this->invokePrivateMethodFromObject(self::$document, 'getInvoiceObject'));
         $this->assertEquals('urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0', $invoiceObject->getExchangedDocumentContext()->getGuidelineSpecifiedDocumentContextParameter()->getId());
         $this->assertEquals('urn:fdc:peppol.eu:2017:poacc:billing:01:1.0', $invoiceObject->getExchangedDocumentContext()->getBusinessProcessSpecifiedDocumentContextParameter()->getId());
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue32Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue32Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue32Test.php	(revision 8504)
@@ -3,9 +3,9 @@
 namespace horstoeko\zugferd\tests\testcases\issues;
 
-use \horstoeko\zugferd\tests\TestCase;
-use \horstoeko\zugferd\codelists\ZugferdUnitCodes;
-use \horstoeko\zugferd\tests\traits\HandlesXmlTests;
-use \horstoeko\zugferd\quick\ZugferdQuickDescriptorXRechnung3;
 use horstoeko\zugferd\codelists\ZugferdTextSubjectCodeQualifiers;
+use horstoeko\zugferd\codelists\ZugferdUnitCodes;
+use horstoeko\zugferd\quick\ZugferdQuickDescriptorXRechnung3;
+use horstoeko\zugferd\tests\TestCase;
+use horstoeko\zugferd\tests\traits\HandlesXmlTests;
 
 class Issue32Test extends TestCase
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue43Test.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue43Test.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/testcases/issues/Issue43Test.php	(revision 8504)
@@ -23,5 +23,5 @@
     /**
      * @return void
-     * @issue 43
+     * @issue  43
      */
     public function testIssue(): void
Index: /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/traits/HandlesXmlTests.php
===================================================================
--- /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/traits/HandlesXmlTests.php	(revision 8503)
+++ /mods/mod_rechnungen/lib/vendor/horstoeko/zugferd/tests/traits/HandlesXmlTests.php	(revision 8504)
@@ -2,6 +2,4 @@
 
 namespace horstoeko\zugferd\tests\traits;
-
-use \horstoeko\zugferd\ZugferdDocumentBuilder;
 
 trait HandlesXmlTests
@@ -54,4 +52,5 @@
             $this->latestXml = new \SimpleXMLElement((self::$document)->getContent());
         }
+
         return $this->latestXml;
     }
@@ -225,7 +224,4 @@
     }
 
-    /**
-     * @covers \horstoeko\zugferd\ZugferdDocumentBuilder::writeFile
-     */
     public function debugWriteFile(): void
     {
Index: /mods/mod_rechnungen/wpsg_invoice.php
===================================================================
--- /mods/mod_rechnungen/wpsg_invoice.php	(revision 8503)
+++ /mods/mod_rechnungen/wpsg_invoice.php	(revision 8504)
@@ -101,4 +101,18 @@
 			return $arTaxInfo;
 			
+		}
+
+		public function getTaxSum(): float {
+
+			$sum = 0;
+
+			foreach ($this->getTaxInfo() as $tax_info) {
+
+				$sum += round($tax_info['tax_value'], 2);
+
+			}
+
+			return $sum;
+
 		}
 		
